Язык программирования Форт



         

Глава 5. Ввод и вывод - часть 18


Фактически форматирующими словами являются только #S, SIGN, HOLD и #, но, как вы увидите из упражнений, они позволяют решать довольно сложные задачи форматного вывода. Следует напомнить, что между могут использоваться любые "правильные" слова Форта. Прежде чем перейти к упражнениям, небезынтересно рассмотреть, как работает слово #. Вот его определение: мы предполагаем, что в стек положено число двойной длины 123, а содержимое стека представлено в десятичной системе, чтобы комментарии были более понятными : : # (123 0) (Начало определения) BASE @ (123 0 10) (Извлекает основание) S-D (123 0 10 0) (Преобразует в число двойной длины) D/MOD ( 3 0 12 0) (Остаток - это последняя цифра. частное - остальная (непреобразованная) часть числа) ROT DROP (3 12 0) (Превращает остаток в одинарное число) ROT (12 О 3) (Помещает на вершину последний разряд) 48 + (12 0 51) (Добавление 48 преобразует число в код ASCII) HOLD (12 0) (Помещает в строку код ASCII) ; (12 0) (Конец определения)

Процесс состоит в отделении разрядов от числа с конца (младшего разряда) по одному с помощью операции D/MOD, преобразовании каждого из них в код ASCII путем добавления десятичного числа 48 и, наконец, помещении кодов ASCII в символьную строку словом HOLD. Слово #S можно определить через слово #, используя цикл, прекращающийся, когда частное станет равным нулю; в этот момент все разряды числа будут отделены. Приводимой слово может выполнить все указанные функции : : #S BEGIN OVER WHILE # REPEAT ;

Поскольку вы еще не изучили конструкцию BEGIN..WHILE...REPEAT, это определение может вам показаться или не показаться лишенным смысла, но главное, что делает #S: - повторяет операцию # до тех пор, пока возвращаемое число двойной длины не станет равным нулю. Материал гл. 8 сделает эту конструкцию более понятной.

Упражнения

1. Определите слово UD$. для печати чисел двойной длины без знака в формате долларов и центов, т.е. 1234. UD$. должно давать на экране $12.34. 2. Определите слово US$. для печати чисел одинарной длины в долларах и центах. 3.


Содержание  Назад  Вперед