spamsink: (Default)
[personal profile] spamsink posting in [community profile] besm6
Пишем программу на Паскале-автокоде:
_program main;
_function f(i:integer):integer; _(f := i + 5 _);
_function g(i:integer):integer; _(f := i * 5 _);

_procedure p(i:integer; _function q:integer);
_( writeln(q(i)) _);

_(
 p(20, f); p(5, g);
_).


Она компилируется и печатает 25 25, как и ожидается.

А теперь берём и делаем тело программы пустым. Программа перестаёт компилироваться:

 СИСТЕМА ПУЛЬТ   23.01.82    
 ПАСКАЛЬ-АВТОКОД 9.(17.05.88) 
,К;А7:ВМ13=17СА77773,РА3=17ПИ13,17ПИ2=ВМ16,ВМ1=13ЗЧ2,17САА10=,15ПА31=ВИ15,СД42=13ЛС1,13ЗЧ1=15ПА12,ВИ15=17ЗЧ,17СА6=2ИА3,15ПА=ВИ15
,СМ15=СМ,17ЗЧ1=17СА77770,15ПА6=2ИА4,12ПА=16ПВВП7ОШИБКА
                                                                           06
                                                                           06
БЫЛИ ОШИБКИ В АВТОКОД ПРОГРАММЕ     


Потому что для вызова формального параметра-подпрограммы порождается код, содержащий вызов служебной процедуры, а код этой служебной процедуры формируется, только когда компилятор видит передачу подпрограммы в качестве фактического параметра.

А если не видит, то и не беда, если будет ошибка при компиляции: нечего держать в коде неиспользуемые куски.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

Сообщество любителей БЭСМ-6

December 2025

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
282930 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 14th, 2026 07:01 pm
Powered by Dreamwidth Studios