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



         

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


Действие конструкции IF...ELSE-THEN можно в сущности представить следующим образом (см. также рис. 7.1) : ( флаг ) IF ( число в стеке не равно нулю, исполнить слова, стоящие здесь) ELSE ( если нуль, исполнить эти слова) THEN ( в любом случае продолжить отсюда)

Слово ELSE не является обязательным и часто опускается. Если оно отсутствует, то остается только одна возможность: исполнить слова, находящиеся между IF и THEN, если флаг, который оператор IF видит в стеке, является истинным. Со словом ELSE имеются две возможности : исполнить слова, находящиеся между IF и ELSE, если флаг имеет значение истина, или слова, заключенные между ELSE и THEN, если флаг имеет значение ложь. В обоих случаях исполнение продолжается после слова THEN. Лучше всего можно понять эти идеи на примере.

В гл. 6 вы познакомились с программой, в которой оператор вводил вес болтов, а затем слово WT. После этого число классифицировалось по величине и изменялись соответствующие переменные. Допустимый вес находился в диапазоне 0 - 300 г. Предположим, что, вы хотите предотвратить ввод оператором неверного числа, которое или очень велико, или мало. Можно сделать это, проверив величину числа с помощью операторов сравнения, а потом принять это число либо выдать сообщение об ошибке в соответствии с конструкцией IF... ELSE... THEN. Чтобы осуществить это, переименуйте прежнее слово WT в (WT) (заключением слова в скобки чаще всего подчеркивают, что оно является частью другого слова со сходным названием) и определите новое слово следующим образом: : WT DUP 0< OVER 299 > OR 0= IF (WT) ELSE DROP ." Вышли за пределы диапазона" THEN ;

Заметим, что необходимо включить ELSE DROP для исключения неверных данных из стека перед словом (WT). Слово WT можно немного упростить, убрав оператор 0м следующим образом: : WT -DUP 0< OVER 299 > OR IF DROP ." Вышли за пределы диапазона" ELSE (WT) THEN ;

Вообще слово 0= перед конструкцией IF...ELSE...THEN вовсе не требуется, так как точно такого же результата можно добиться, переставляя слова между IF и ELSE со словами, находящимися между ELSE и THEN.




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