Программист – Программирование на gforth (страница 10)
для ввода пользователя —
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: создавать переменные и константы, читать и записывать данные, выделять память динамически.
Константа — это именованное значение, которое нельзя изменить после определения.
Синтаксис:
значение CONSTANT имя
Примеры:
10 CONSTANT MAX-USERS
3.14159 CONSTANT PI
"Hello" CONSTANT GREETING \ Строковые константы требуют особого подхода
Использование:
MAX-USERS . \ Выводит 10
PI . \ Выводит 3.14159
Переменная — ячейка памяти, в которой можно хранить значение и изменять его.
Синтаксис создания:
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. Инициализация переменных