Начальный курс программирования на языке Форт


УСЛОВНЫЙ ОПЕРАТОР


Запишем на Форте простой оператор принятия решения. Допустим, вы программируете механический упаковщик яиц в картонные коробки. Некоторое механическое устройство уже подсчитало число яиц, находящихся в ленте конвейера, и поместило это число в стек. В соответствии со следующим предложением на Форте: 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, причем в пределах одного и того же определения




Начало  Назад  Вперед



Книжный магазин