Gforth
Реализация языка программирования ForthПримеры:
Hello, World!:
Пример для версий gforth 0.7.0Команда ."
считывает строку, заключенную в двойные кавычки, и присоединяет ее к текущему определению, поэтому эта строка будет выведена при выполнении. Один пробел, отделяющий ."
от Hello
, не является частью строки, а требуется для того, чтобы распознать ."
как команду.
Команда cr
в конце программы выводит следующий за ней текст с новой строки, являясь эквивалентом nl
в Prolog и endl
в C++.
." Hello, World!" cr
Факториал:
Пример для версий gforth 0.7.0Используется рекурсивное определение факториала. Forth — стек-ориентированный язык, поэтому все команды в нем основаны на работе со стеком. Так, DUP
копирует верхний элемент стека, константа — добавляет число на верх стека, >
— сравнивает второй сверху элемент с самым верхним, -
— вычитает из второго сверху самый верхний и т.д.
: fac recursive
dup 1 > IF
dup 1 - fac *
else
drop 1
endif ;
: lp
swap 1 + swap
do
i . i ." ! = " i fac . cr
loop ;
16 0 lp
Числа Фибоначчи:
Пример для версий gforth 0.7.0Используется итеративное определение чисел Фибоначчи.
: fib-iter
0 1 rot 0 ?do over + swap loop drop ;
: lp
1 do
i dup fib-iter . ." , "
loop drop ;
17 lp
." ..."
Числа Фибоначчи:
Пример для версий gforth 0.7.0Используется рекурсивное определение чисел Фибоначчи.
: fib-rec
dup 2 u< if exit then
1- dup recurse swap 1- recurse + ;
: lp
1 do
i dup fib-rec . ." , "
loop drop ;
17 lp
." ..."
Комментарии
]]>blog comments powered by Disqus
]]>