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



             

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


Таким образом, слово, на исполнение которого уходит программа, зависит от одного из нескольких чисел, которое находится в стеке, когда выбирается конкретный адрес. В гл. 6 мы хранили адреса слов в массиве и использовали слова FIND или ', в зависимости от применяемой версии Форта. Давайте снова рассмотрим пример из гл. 6. Пусть слова 1TASK, 2TASK и 3TASK определены. Можно задать вектор CHOICE (выбор) следующим образом: CREATE CHOICE 6 ALLOT FIND 1TASK CHOICE ! FIND 2TASK CHOICE 2 + ! FIND 3TASK CHOICE 4 + !

Теперь если мы определим слово DOCHOICE (сделай_выбор) : DOCHO1CE 1- 2* CHOICE + @ EXECUTE ; то исполняемое ветвление будет зависеть от числа, которое находится в стеке, когда запускается программа DOCHOICE.

Эта конструкция носит название выбор по целому. Если в стеке находится 1, то выполняется 1TASK, если 2- то 2TASK и т.д. Такая конструкция выбора по целому, основанная на векторном исполнении, едва ли не самое простое, что может быть придумано в стандартном языке Форт. Разнообразным реализациям структуры выбора по целому был посвящен целый выпуск журнал "FORTH Dimensions" (1980- Т. 2, вып. 3). В некоторых коммерческих версиях Форта реализован сложные конструкции выбора по целому. Мы рассмотрим слова NCASE и ACASE из языка MMSFORTH. Проще всего для понимания слова NCASE привести простой пример. Пусть вы хотите выполнить 1TASK, 2TASK или 3TASK в зависимости от того, какое из чисел: 20, 40 или 60 находится в стеке, а если в нем встречается какое-либо другое число, нужно, чтобы исполнялось слово OTHER (другая). Вот как это можно сделать : NCASE 20 40 60 " 1TASK 2TASK 3TASK OTHERWISE OTHER CASEND Оператор NCASE снимает число из стека и просматривает, какому из следующего за ним ряда сел оно равно. Если обнаруживается совпадение, то исполняется соответствующее слово из пере численного списка, если совпадение не обнаружено, то исполняется слово или последовательность слов, находящихся между OTHERWISE (иначе) и CASEND (конец_выбора). Слово OTHERWISE и любые слова после него не являются обязательными, т.е.


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