spamsink: (Default)
[personal profile] spamsink posting in [community profile] besm6
Я довольно давно писал про алгольные трюки 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

January 2026

S M T W T F S
    123
45678910
11121314151617
18192021222324
2526272829 3031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 4th, 2026 03:18 am
Powered by Dreamwidth Studios