Jul. 27th, 2022

spamsink: (Default)
[personal profile] spamsink
Я довольно давно писал про алгольные трюки c "продолжениями", но оказывается, передача меток как параметров, в сущности, не нужна, если язык в принципе разрешает нелокальные переходы.
 00001    1  1 _PROGRAM MAIN(OUTPUT); _LABEL 1;
 00007    2  2 _PROCEDURE M(I:INTEGER; _PROCEDURE X, Y); _LABEL 1;
 00007    3  3 _PROCEDURE A; _BEGIN _GOTO 1 _END;
 00017    4  3 _BEGIN
 00026    5  4     _IF I < 20 _THEN _BEGIN
 00027    6  4         M(I+1, Y, A);
 00042    7  4         X;
 00046    8  3     _END _ELSE _IF _FALSE _THEN
 00047    9  3         1: WRITE(I);
 00052   10  2 _END;
 00053   11  2 _PROCEDURE T; _BEGIN _GOTO 1 _END;
 00063   12  2 _BEGIN
 00064   13  2     M(0, T, T); 1:
 00112   14  0 _END.
           *EXECUTE
        17        14        11         8         5         2


Практически идентично программе на Алголе-60 по ссылке. Так что Вирт был молодец, упростил язык без потерь в функциональности.

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. 15th, 2026 02:35 pm
Powered by Dreamwidth Studios