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


ЦИКЛЫ СО СЧЕТЧИКОМ


Одна из циклических структур называется циклом со счетчиком. Здесь вы сами определяете число повторений цикла. На Форте для этого нужно задать начальное и конечное числа перед словом DO (в обратном порядке), а затем поместить слова, выполнение которых вы хотите повторять, между словами DO (ВЫПОЛНИТЬ) и LOOP (ЦИКЛ). Например:

: ТЕСТ 10 0 DO CR ." ПРИВЕТ " LOOP ;

будет осуществлять возврат каретки и выводить слово ПРИВЕТ десять раз, потому что, если вычесть нуль из 10, вы получите 10.

ТЕСТ ПРИВЕТ ПРИВЕТ ПРИВЕТ ПРИВЕТ ПРИВЕТ ПРИВЕТ ПРИВЕТ ПРИВЕТ ПРИВЕТ ПРИВЕТ

Как и оператор IF ... THEN, относящийся к операторам управления, оператор DO ... LOOP должен размещаться в пределах (одного) определения. Число 10 в приведенном примере называется границей цикла (limit), а нуль — индексом (index). Общий вид оператора цикла со счетчиком: граница индекс DO ... LOOP

Теперь посмотрим, что происходит внутри цикла DO ... LOOP:

Слово DO1 берет из стека данных границу и индекс и подготавливает их для слова LOOP, которое по этим данным будет управлять циклическим процессом.

Далее выполняются слова, находящиеся внутри цикла.

1 Единоутробный братец птички ДОДО.

Получив управление, LOOP продвигается на единицу, после чего управление возвращается к DO. Когда LOOP «пересекает» финишную черту, электронный глаз переключает стрелку, разрешая тем самым выполняться операторам, следующим за словом LOOP.

Слово I помещает в стек данных текущее значение индекса (значение, на котором в этот момент стоит LOOP) на каждом шаге циклического процесса. Рассмотрим определение : ДЕКАДА 10 0 DO I . LOOP ;

которое выполняется так, как показано ниже: ДЕКАДА 0 1 2 3 4 8 6 7 8 9 ok

Заметьте, что цикл выполняется всего 10 раз — от 0 до 9. Мы не добираемся до 10, потому что LOOP пересекает границу в тот момент, когда 9 сменяется числом 10.

Вы можете выбрать любые числа, но так, чтобы значение границы превышало значение индекса: : ПРИМЕР -243 -250 DO I . LOOP ; ПРИМЕР -250 -249 -24B -247 -246 -245 -244 ok

И в этом примере значение границы (-243) больше, чем начальный индекс (-250).




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