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



         

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


Если в вашем Форте нет слова U.R, то вскоре мы определим его вместе с другими полезными словами.

Форматный вывод чисел

Форматный вывод чисел (вывод по шаблону) наиболее сложный и все же наиболее гибкий способ отображения чисел на экране дисплея или печати на принтере. Он используется также для определения таких слов, как. (точка) и.R, и позволяет вводить в число, например, знак денежной единицы, десятичную точку, предшествующие незначащие нули, производить выравнивание в поле и т.д. Слова форматного вывода фактически преобразуют числа в последовательность кодов ASCII в форме, удобной для вывода на экран дисплея с помощью слова TYPE. Форматный вывод работает только с числами двойной длины. Чтобы применить его к числам одинарной длины, последние необходимо преобразовать в двойные.

Процесс форматного вывода начинается словом . Между этими двумя словами могут быть какие-то другие слова, описывающие, как должно выполняться форматирование. Слово #> оставляет в стеке адрес символьной строки и число символов в ней, подготавливая вывод для слова TYPE. Простейшее форматирование производит слово #S, которое преобразует все разряды числа в символьную строку. Приведем определение слова UD., которое, как ни удивительно, не включено во многие версии Форта: : UD. ( d - ) ( - адр счет ) (Завершает преобразование, помещает в стек адрес и значение счетчика) TYPE ( - ) (Выводит строку на экран) SPACE (Вставляет после числа пробел) ; (Заканчивает определение)

А как обращаться с числами одинарной длины? Достаточно преобразовать их в числа двойной длины. Для этого предусмотрено слово S-D. Чтобы понять его, вспомните, как представляется в стеке отрицательное число: : S-D ( n -- d) DUP 0< IF -1 ELSE 0 THEN ; (одинарное_в_двойное) Еще более изящно определяется это слово в Форт-79 : : S-D (n - d) DUP 0< NEGATE ; Если число одинарной длины в стеке отрицательное, то слово 0< возвращает 1, которую слово NEGATE превращает в -1 в качестве старшей половины числа двойной длины.


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