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

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

18

для ввода пользователя —

QUERY

и

EVALUATE

.

Подсказки: * Определение abs:

: abs ( n -- |n| )

0< IF NEGATE THEN ;

Определение

print-evens

:

: print-evens

21 2 DO

I .

2 +LOOP ;

Определение

factorial

:

: factorial ( n -- n! )

1 SWAP

1 + 1 DO

I *

LOOP ;

Если у вас возникли трудности, проверьте: * правильность стековых эффектов; * наличие всех THEN, REPEAT, LOOP; * корректность условий циклов.

Глава 6. Работа с памятью и переменными в Gforth

В этой главе разберём, как работать с памятью в Gforth: создавать переменные и константы, читать и записывать данные, выделять память динамически.

1. Константы (

CONSTANT

)

Константа — это именованное значение, которое нельзя изменить после определения.

Синтаксис:

значение CONSTANT имя

Примеры:

10 CONSTANT MAX-USERS

3.14159 CONSTANT PI

"Hello" CONSTANT GREETING \ Строковые константы требуют особого подхода

Использование:

MAX-USERS . \ Выводит 10

PI . \ Выводит 3.14159

2. Переменные (

VARIABLE

)

Переменная — ячейка памяти, в которой можно хранить значение и изменять его.

Синтаксис создания:

VARIABLE имя

Операции с переменными: * @ (fetch) — прочитать значение из переменной; * # (store) — записать значение в переменную.

Пример:

VARIABLE counter

0 counter ! \ Записываем 0 в counter

counter @ . \ Читаем и выводим значение (выводит 0)

5 counter ! \ Записываем 5

counter @ . \ Выводит 5

Практический пример: счётчик вызовов

VARIABLE call-count

: increment-counter

call-count @ 1+ call-count ! ;

: show-counter

." Вызовов: " call-count @ . CR ;

Проверка:

increment-counter

increment-counter

show-counter \ Выводит: Вызовов: 2

3. Инициализация переменных