Что такое стек ?
Можно представить стек попросту как стопку чисел, положенных друг на друга, либо, если хотите, как колоду карт, описанную в . Первое число, которое было введено в стек, будет находиться на дне, последнее введенное число -- на вершине стека. Числа из стека можно брать только с вершины. В тексте мы будем показывать стек в виде столбика чисел, положенного горизонтально, т.е. в строчку, причем дно стека находится слева, а его вершина -- справа. Загрузите в компьютер Форт и введите
1 2 3
(обязательно отделите числа друг от друга пробелами, как показано).
Теперь в стеке находятся числа
З (вершина ) 2 1 (дно)
аналогия с картами представлена на . Можно представить этот стек таким образом:
рис. 2.1
Теперь, если ввести
. . .
компьютер выдаст на экран
3 2 1 ok
Первым из стека было взято и напечатано число 3, затем то же самое было сделано с числом 2, а потом с числом 1. Теперь стек пуст. Обратите внимание, что числа на экране расположены в обратном порядке по сравнению с тем, как они представлены в стеке. Вы поняли, почему ? Стек языка Форт называется стеком с организацией "последним пришел -- первым вышел" (по-английски - LIFO). Когда стек пуст, попробуйте ввести еще раз . (точка).
Тогда вы увидите
хххх . ? Stack empty ! (стек пуст !)
Форт отреагировал сообщением об ошибке; вы попросили его что-то напечатать, а он не знает, что напечатать (ххххх обычно бессмысленное число, а вид сообщения зависит от версии Форта, с которой вы работаете, мы, привели сообщение, которое выдает MMSFORTH). Обратите внимание, что Форт не выдает сообщение "ok", потому что выполнение вашей последней команды не было завершено (а значит, не все в порядке).
Еще раз нажмите , чтобы получить на экране новое приглашение "ok", хотя в этом нет особой необходимости.
Фактически Форт готов к вводу новой информации, даже если он не дал сообщение "ok".