Язык Форт и его реализации


         

Структуры управления - часть 5


Цикл 10 0 DO <тело> -1 +LOOP будет исполняться 65 527 раз со значениями счетчика 0, -1, -2, ..., -32768, 32767, ..., 10 или (что то же самое) 0, 65535, 65534, ..., 10. Таким образом, цикл со счетчиком всегда выполняется хотя бы один раз. Некоторые реализации предусматривают слово ?DO, которое не исполняет тело цикла ни разу, если начальное и граничное значения оказались одинаковыми.

Внутри тела цикла слово I кладет на стек текущее значение счетчика. Например, следующее определение вычисляет сумму квадратов первых N натуральных чисел:

: SS2 ( N ---> S:СУММА КВАДРАТОВ ОТ 1 ДО N) 0 SWAP ( 0,N S[0]=0 ) 1+ 1 ( S[0],N+1,1 ) DO I ( S[I-1],I ) DUP ( S[I] S[I]=S[I-1]+I*I) LOOP ; ( S[N] )

Слово LEAVE (уйти), употребленное внутри цикла, вызывает прекращение исполнения его тела; управление переходит к словам следующим за словом LOOP или +LOOP.

В программировании часто применяется конструкция цикл в цикле. Чтобы во внутреннем цикле получить текущее значение счетчика объемлющего цикла, используется слово J: DO ... I ... DO ... I ... J ... LOOP ... I ... LOOP. Первое вхождение слова I дает текущее значение счетчика внешнего цикла. Следующее вхождение I дает уже значение счетчика внутреннего цикла. Чтобы получить счетчик внешнего цикла, надо использовать слово J.

По выходе из внутреннего цикла доступ к этому значению вновь дает слово I. Этим слова I и J отличаются от переменных цикла в традиционных языках программирования. Некоторые реализации предусматривают еще и слово К для доступа к счетчику третьего объемлющего цикла.




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