Начальный курс программирования на языке Форт

         

ПЕРЕМЕННЫЕ (ОБЩИЕ СВЕДЕНИЯ)


Для начала приведем пример ситуации, когда вам понадобилось бы воспользоваться переменной, например для хранения даты1. В первую очередь создадим переменную (VARIABLE) с именем ДАТА2

VARIABLE ДАТА

Если сегодня 12-е число, то мы вводим: 12 ДАТА !, т. е. помещаем 12 в стек, затем указываем имя переменной и, наконец, выполняем слово ! (ЗАПОМНИ). Это выражение записывает число 12 в переменную ДАТА. Для обратного действия нужно ввести:

1 Для начинающих. Предположим, ваш компьютер выдает банковские счета на протяжении дня, и каждый такой счет должен включать дату. Вам не хотелось бы хранить дату все время в стеке и, кроме того, дата не должна быть частью определения, иначе его пришлось бы переопределять каждый день. Вам нужна переменная.

2 Для пользователей систем фиг-Форт. Чтобы вариант VARIABLE вашей системы совпадал с описанным в книге, введите определение : VARIABLE 0 VARIABLE ;

ДАТА @, иными словами, назвать переменную, а затем выполнить слово @ (ВЫБРАТЬ) Указанное выражение выбирает число 12 и помещает его в стек. Таким образом, выражение

ДАТА @ . 12 ok

выведет на печать дату

На Форте это делается еще проще с помощью слова, определение которого приводится ниже:

: ? @ . ;

Поэтому вместо «ДАТА-выборка-точка» мы можем просто набрать ДАТА ? 15 ok

ДАТА будет иметь значение 12 до тех пор, пока вы не измените его. Для того чтобы изменить значение переменной, необходимо записать в нее новое число. 13 ДАТА ! ok

ДАТА ? 13 оk

Понятно, что можно определить и дополнительные переменные для месяца и года:

VARIABLE ДАТА VARIABLE МЕСЯЦ VARIABLE ГОД

а затем слово с именем !ДАТА (для «запоминания-даты»), например:

: !ДАТА ( месяц день год -- ) ГОД ! ДАТА ! МЕСЯЦ ! ;

и использовать его следующим образом: 7 31 88 !ДATA ok

После этого нужно определить слово с именем .ДАТА (для «вывода-даты») :

: .ДАТА МЕСЯЦ ? ДАТА ? ГОД ? ;

Ваша Форт-система уже имеет ряд определенных переменных, одна из которых — BASE Она содержит основание текущей системы счисления. На самом деле определения систем счисления



HEX, DECIMALOCTAL, если в вашей системе таковая имеется) весьма просты:

: DECIMAL 10 BASE ! ; : HEX 16 BASE ! ; : OCTAL 8 BASE ! ;

Вы можете работать с любой системой счисления, просто загрузив ее основание в BASE1:

Если где-нибудь в определении системных слов, осуществляющих преобразования входных и выходных чисел, вы найдете выражение BASE @ значит, текущее значение BASE используется в процессе такого преобразования. Следовательно, одна и та же программа может работать с числами в любой системе счисления. Отсюда мы можем сделать следующее формальное заключение об использовании переменных: в Форте уместно создавать переменные для тех значений, используемых внутри определения, которые могут быть изменены в любой момент после того, как это определение уже скомпилировано.



Содержание раздела