Вот конструкции, используемые в программах этой книги.
Оператор присваивания. В нем используется знак «:=»
i := i + 1
Вот его аналоги на других языках:
Бейсик:
LET I = I + 1
LSE:
I ← I + 1
Паскаль:
I := I + 1
Условный оператор имеет вид
ЕСЛИ условие ТО последовательность операторов
КОНЕЦ_ЕСЛИ
При работе условного оператора вначале проверяется условие. Если оно имеет значение ИСТИНА, то выполняется последовательность операторов, заключенная между ТО и КОНЕЦ_ЕСЛИ. КОНЕЦ_ЕСЛИ играет роль закрывающей скобки, избавляющей от применения разделителей DEBUT FIN, как на LSE, или BEGIN END, как в языке Паскаль. При работе оператора
ЕСЛИ условие ТО последовательность операторов
ИНАЧЕ последовательность операторов
КОНЕЦ_ЕСЛИ
вначале проверяется условие. Если оно имеет значение ИСТИНА, то выполняется последовательность операторов, заключенная между ТО и ИНАЧЕ, а если условие имеет значение ЛОЖЬ, то выполняется то, что содержится между ИНАЧЕ и КОНЕЦ_ЕСЛИ. Снова, как и выше, нет нужды в DEBUT FIN.
Цикл
ПОКА условие ВЫПОЛНЯТЬ
последовательность операторов
ВЕРНУТЬСЯ
выполняет последовательность операторов, заключенную между скобками ВЫПОЛНЯТЬ — ВЕРНУТЬСЯ, пока условие справедливо. Он эквивалентен циклу LSE
FAIRE номер строки ПОКА условие
последовательность операторов
n замыкающая строка
или циклу на языке Паскаль
WHILE условие DO
BEGIN последовательность операторов END
Цикл
ВЫПОЛНЯТЬ
последовательность операторов, содержащая слово КОНЧЕНО
ВЕРНУТЬСЯ
работает так:
Последовательность инструкций, заключенная между скобками операторов ВЫПОЛНЯТЬ — ВЕРНУТЬСЯ, повторяется неограниченно. Слово КОНЧЕНО означает, что цель цикла достигнута, повторяемая работа закончена. На этом цикл останавливается и программа продолжается со следующего за циклом оператора В английских книгах и статьях вместо КОНЧЕНО обычно пишут EXIT: выйти из цикла (также сделано и в языке Ада). Но EXIT вызывает идею действия: выхода. Я предпочитаю ему слово КОНЧЕНО, которое лучше отражает идею не действия, а ситуации: я достиг цели цикла, с ним все кончено.,..
Простых эквивалентов этого цикла на Бейсике, LSE или Паскале нет. Можно применить операторы ALLER EN или GO ТО для симуляции такого цикла.
— На Бейсике можно использовать дополнительную переменную Z:
FOR Z = 1 ТО 0
заменяет ВЫПОЛНЯТЬ
LET Z = 0
заменяет КОНЧЕНО
NEXT Z
заменяет ВЕРНУТЬСЯ
Кроме того, нужно перепрыгнуть в цикле все, что стоит после слова КОНЧЕНО, т. е. после оператора LET Z = 0. Так как это можно сделать с помощью GO ТО, то я считаю предпочтительным использовать таким образом GO ТО для циклов. Если ваш язык не структурирован, то красивых циклов вы никогда не получите…
— На языке Паскаль используйте булеву переменную z, которой до начала цикла присвоено значение TRUE, и тогда цикл примет вид
WHILE z DO BEGIN END
Слово КОНЧЕНО придется заменить оператором
, включенным в конструкцию так, чтобы сделать этот оператор последним выполняемым оператором цикла. Если структура языка нехороша…z := FALSE
Цикл
ДЛЯ i := exp 1 ШАГ exp 2 ДО exp 3 ВЫПОЛНЯТЬ…
ВЕРНУТЬСЯ
повторяет последовательность операторов, заключенную между ВЫПОЛНЯТЬ и ВЕРНУТЬСЯ, придавая i значения из арифметической прогрессии с разностью exp 2 (постоянная величина в данном цикле), начиная с exp 1 и останавливаясь на exp 3, Если шар равен 1, то фрагмент ШАГ 1 можно опустить.