Язык программирования Форт



         

Глава 7. Операторы сравнения и ветвления


Одной из наиболее важных задач, которую должен уметь делать любой язык программирования высокого уровня, является выполнение некоторых операций на основании истинности или ложности некоторых условий. Например, если два верхних элемента в стеке равны, должен быть выполнен один оператор, но если они не равны, то должно быть сделано что-то другое. Такие условные операции, возможно, проще понять на примере из Бейсика, потому что их структура близка к естественному языку. Если в выражении 100 IF A=B THEN X=Y ELSE GOSUB 300 переменные А и В равны, то значение переменной Х устанавливается равным значению Y; в противном случае выполняется некоторая подпрограмма, начинающаяся в трехсотой строке программы. Это позволяет программе выполнять разные действия при различных обстоятельствах. Подобные конструкции, которые управляют потоком (прохождением) программы, называются управляющими структурами; они включают в себя конструкцию IF...THEN , счетные циклы, которые вкратце уже рассматривались, и другие средства для осуществления переходов в программе, рассматриваемые в данной и последующей главах.

В отличие от Бейсика конструкция IF...THEN сравнивает числа не в виде переменных, а в стеке и в Форте каждое слово конструкции - это фактически подпрограмма. Конечно, отличается также и постфиксная форма записи. Поэтому условное исполнение и ветвление в языке Форт записываются на языке Форт несколько по-другому. Приведенному выше выражению на Бейсике в форте будет эквивалентна следующая конструкция: А @ В @ = IF Y @ X ! ELSE DOTHAT THEN

Конечно, на практике такое большое количество переменных в Форте никогда не используется. Рассмотрим приведенную конструкцию более внимательно. Предложение А @ В @ извлекает значения двух переменных и кладет их в стек. Операция - возвращает значение, зависящее от того, равны или не равны эти два числа (заметим, что - является оператором сравнения, а не присвоения, как на Фортране или в Бейсике). Если числа в стеке равны, то говорят, что условие истинно, тогда в Форт-79, MMSFORTH и большинстве других версий в стек возвращается 1, а в Форт-83 - число -1 (т.е. 16-разрядное число, у которого все разряды равны 1, или FFFF в шестнадцатеричной системе счисления).


Содержание  Назад  Вперед