Вышеприведенных слов достаточно для демонстрации того, как можно реализовать какой-либо алгоритм на ScriptForth. Возьмем алгоритм сортировки пузырьком. Откройте модуль "bublesort.sf", скопируйте текст в нашу оболочку, изучите текст.
"system.sf" REQUIRE
"utils.sf" REQUIRE
2 CONSTANT DIM_ARRAY_test ( определяем величину массива )
DIM_ARRAY_test ARRAY ARRAY_test ( создаем массив )
3 0 ARRAY_test ! ( заполняем массив значениями - его размер пока 2 элемента)
2 1 ARRAY_test !
3 ALLOT ( увеличиваем массив на 3 элемента { в последнее определенное слово!} )
1,5 2 ARRAY_test ! ( и заполняем его )
8 3 ARRAY_test !
-3 4 ARRAY_test !
6 , 2,4 , ( а это добавляем в него два значения, при этом он автоматически увеличится на 2 элемента { в последнее определенное слово! } )
VARIABLE t ( переменная, говорящая, что были перестановки )
: BUBLESORT ( --> )
TRUE t !
BEGIN ( повторять цикл )
t @ ( пока были перестановки )
WHILE
FALSE t !
0 ARRAY_test COUNT 1 - 0 1 DO
( задаем количество_элеметов_цикла = размер_массива - 1)
( с нулевого элемента, шаг = 1 )
I ARRAY_test @ I 1 + ARRAY_test @ > IF ( если элемент I больше, чем элемент I + 1, то ... )
I ARRAY_test @ I 1 + ARRAY_test @ ( ... меняем их местами - загружаем их сначала в стек...)
I ARRAY_test ! I 1 + ARRAY_test ! ( ... , а потом обратно в массив ... )
TRUE t ! ( перестановки да, были )
ENDIF
+LOOP
REPEAT
;
"before sort" .
0 ARRAY_test VARIABLELIST_PRINT ( определено в "utils.sf", печатает содержимое списка переменных слова )
"" .
"sorting" .
BUBLESORT
"" .
"after sort" .
0 ARRAY_test VARIABLELIST_PRINT
"" .