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




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


Вам может потребоваться также досрочное завершение программы при достижении какого-либо заранее определенного условия. Представим себе, что есть программа, которая принимает данные от удаленного компьютера по телефонной линии, и нужно, чтобы она останавливалась, если будет получен управляющий код Ctri-C ( код ASCII равен 3). Можно после каждого входного символа вставить проверку с помощью слова : ?CTLC DUP 3 = IF ." Прекращение по дистанционному запросу " ABORT THEN ;

Говоря вообще, слова ABORT и QUIT наиболее полезны для слежения за условиями, при которых исполнение программы должно быть прекращено. Эти условия обычно связаны с некоторыми типами ошибок, например делением на 0, но могут быть, конечно, и другого рода. Можно напомнить, как мы говорили в гл. 1, что в Форте забота о проверке наличия ошибок целиком возлагается на программиста. И мы показали, как она может быть сделана в простых случаях. Слово EXIT имеет более тонкие применения, чем ABORT и QUIT. Оно прекращает исполнение слова и возвращает управление туда, откуда это слово было вызвано. Оно бесполезно вне конструкции IF...THEN, поскольку всегда возможно прекратить исполнение более естественным путем, завершая определение слова точкой с запятой. (Кстати, EXIT фактически является частью определения слова ;.) Предположим, например, что у вас есть слово, которое позволяет оператору ввести число, а затем запомнить сумму в переменной TOTAL. Вы хотите, чтобы ввод нуля игнорировался. Используя EXIT, можно дать такое определение : : GET# #IN ?DUP IF TOTAL +! ELSE EXIT THEN ; но по своему действию ELSE EXIT THEN ; ничем не отличается от THEN ;

Таким образом, EXIT следует применять ограниченно или не применять вовсе внутри одной единственной конструкции IF...THEN. Вспомним наше определение слова (WT) : : (WT) DUP 100 < IF TASK1 ELSE DUP 200 < IF TASK2 ELSE DUP 300 < IF TASKS THEN THEN THEN DROP ;

Теперь предположим, что слова TASK1, TASK2 и TASK3 прибавляют по единице к переменным 1COUNT, 2COUNT и 3COUNT каждый раз, когда вес попадает в соответствующий диапазон значений.


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