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



             

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


Как изменится действие слова из определения 2, если ?223 вызывается из другого определения через двоеточие? 4. Имеются ли различия, если в определении следующего слова используется DUP или ?DUP ? : : 0? DUP 0= IF ABORT" Число равно нулю " THEN ; 5. Дайте новое определение слова ?0, используя слово ABORT. 6. Определите слово =IF-ABORT, которое прекращает исполнение программы, если два верхних числа в стеке равны между собой. 7. Определите слово +RANGE-ABORT, которое прекращает работу программы и сообщает об ошибке, если сумма двух чисел в стеке будет превышать максимальное число одинарной длины без знака. 8. Определите слово *+RANGE-ABORT, которое прекращает работу программы, если либо сумма, либо произведение двух чисел в стеке превысят максимальное число одинарной длины без знака. 9. Определите слово STACK-TOO-BIG, которое выдавало бы сообщение об ошибке и прекращало исполнение программы, если в стеке больше 15 чисел. 10. Дайте новое определение следующих слов, не используя слова EXIT: а) : 1TASK 0= IF DOTHAT ELSE EXIT THEN : 6) ; 2TASK 0= IF EXIT ELSE DOTHAT THEN ; в) : 3TASK 0= IF DOTHAT ELSE EXIT THEN DOOTHER ; r) : 4TASK 0= IF EXIT ELSE DOTHAT THEN DOOTHER :

Это послужит убедительным доказательством, что слово EXIT совершенно не нужно в невложенных конструкциях IF...THEN.

Множественный выбор ветвления

До сих пор в этой главе мы рассматривали конструкции IF...THEN и IF...ELSE...THEN, которые позволяют делать переход на исполнение одной из двух ветвей программы в зависимости от того равно или не равно нулю число в стеке. Однако вам может потребоваться программа, которая может разветвляться по альтернативным путям в зависимости от того, какое из нескольких чисел находится в стеке. В гл. 6 мы показали один из вариантов решения этой задачи. Векторное исполнение программы - это одно из средств реализации ветвления по нескольким путям. Если компоненты вектора представляют собой адреса слов, то данное слово может быть исполнено, если взять eго адрес и применить к нему оператор EXECUTE.


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