УСЛОВНЫЙ ОПЕРАТОР
Запишем на Форте простой оператор принятия решения. Допустим, вы программируете механический упаковщик яиц в картонные коробки. Некоторое механическое устройство уже подсчитало число яиц, находящихся в ленте конвейера, и поместило это число в стек. В соответствии со следующим предложением на Форте: 12 = IF УПАКОВАТЬ THEN
осуществляется проверка: равно ли число в стеке 12, и ЕСЛИ (IF) да, ТО (THEN) выполняется слово УПАКОВАТЬ. Если число не равно 12, то выполняются слова, которые следуют за THEN.
Слово = выбирает два значения из стека и сравнивает их, чтобы проверить, равны ли они.
Если условие истинно (да), то будут выполнены слова, следующие за IF, если ложно — то слова, следующие за THEN.
Попытаемся выполнять этот оператор. Определим, например, следующее слово: : ?ПОЛНА ( число-яиц ) 12 - IF . " КОРОБКА ПОЛНА " THEN ; ok
11 ?ПОЛНА ok
12 ?ПОЛНА КОРОБКА ПОЛНА ок
Заметим, что оператор IF ... THEN должен содержаться только внутри определения (через двоеточие), так что вы не можете использовать его в режиме калькулятора.
Абстрагируйтесь от всех значений, которые заключены в словах IF (ЕСЛИ) и THEN (TO) в естественном языке В Форте они выражают то, что операторы, следующие за IF. выполняются лишь в случае, если условие истинно, а операторы, следующие за THEN, всегда. Это равносильно тому, что вы прикажете компьютеру после принятия решения (выполнять или не выполнять слова, следующие за IF, в зависимости от того, истинно условие или ложно) продолжить выполнение остальной части определения (следующей за THEN). В нашем примере после THEN находится единственное слово ;, которое означает конец определения.
Если вам удобно, сразу представляйте запись в постфиксной форме. Вместо традиционного применения выражения IF:
IF ( условие ) THEN ( действие ) ENDIF
мы имеем ( условие ) IF ( действие ) THEN
Помните, что каждому слову IF должно соответствовать свое THEN, причем в пределах одного и того же определения