реклама
Бургер менюБургер меню

Программист – Программирование на gforth (страница 8)

18

2. Циклы в Gforth

Тип 1: BEGIN UNTIL — цикл с постусловием (выполняется, пока условие ложно)

BEGIN тело-цикла условие UNTIL

Пример: счётчик от 1 до 5

: count-to-5

1

BEGIN

DUP . SPACE

1+

DUP 5 >

UNTIL

DROP ;

Вывод: 1 2 3 4 5

Тип 2: BEGIN WHILE REPEAT — цикл с предусловием

BEGIN условие WHILE тело-цикла REPEAT

Пример: печать чисел, пока они меньше 5

: print-while-less-5

1

BEGIN

DUP 5 <

WHILE

DUP . SPACE

1+

REPEAT

DROP ;

Вывод: 1 2 3 4

Тип 3: DO LOOP — счётный цикл

верхняя-граница нижняя-граница DO тело-цикла LOOP

I

— текущее значение счётчика;

LEAVE

— досрочный выход из цикла.

Пример: сумма чисел от 1 до 10

: sum-1-to-10

0

11 1 DO

I +

LOOP ;

Проверка:

sum-1-to-10 . \ Вывод: 55

Пример с LEAVE: поиск первого числа > 5

: find-first-gt-5

6 1 DO

I . SPACE

I 5 > IF ." Найдено!" LEAVE THEN

LOOP

CR ;

Вывод: 1 2 3 4 5 6 Найдено!

3. Вложенные конструкции

Можно комбинировать условия и циклы:

: fizzbuzz

16 1 DO

I 15 MOD 0= IF

." FizzBuzz "

ELSE

I 3 MOD 0= IF

." Fizz "

ELSE

I 5 MOD 0= IF

." Buzz "

ELSE

I .

THEN