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


ФОРМИРОВАНИЕ ЧИСЕЛ ДВОЙНОЙ ДЛИНЫ БЕЗ ЗНАКА - часть 3


Определение в данном случае может выглядеть следующим образом1:: SEXTAL 6 BASE ! ; : :00 ( ud -- ud) # SEXTAL # DECIMAL ASCII : HOLD ; : СЕКУНДЫ <# :00 :00 #S #> TYPE SPACE ;

Для форматного вывода секунд и минут вы используйте слово :00. Как секунды, так и минуты вычисляются по модулю 60, значит, правой цифрой может быть любая цифра до девяти, а левой - цифра от нуля до пяти включительно. Поэтому в своем определении :00 вы преобразуете первую цифру (она является правой) как десятичное число, затем переходите по слову SEXTAL в шестиричную систему (с основанием 6) и преобразуете левую цифру, после чего возвращаетесь в десятичную систему и вставляете символ двоеточия. После того как слово :00 преобразует секунды и минуты, #S переведет оставшиеся часы. Так, если у вас в стеке время задано как 4500 с, то в результате вы получите: 4500. .СЕКУНДЫ 1:15:00 ok

1 Для начинающих. См. полезный прием, описанный на с. 164.

(Если продолжительность дня измерять в секундах, то 86400 с - это слишком много для 16-разрядного числа.)

В табл. 7.2 сведены слова Форта, использующиеся при форматизации чисел. (Обратите внимание на условные обозначения в конце таблицы, которые напоминают вам о смысле символов "n", "d" и т. д.)

Таблица 7.2

Форматирование чисел<# Начало процесса преобразования числа. В стеке должно находиться

число двойной длины без знака # Преобразование одной цифры и помещение ее в выходную символьную строку. # доставляет цифру в ЛЮБОМ СЛУЧАЕ - если вы подали этому слову на вход неверное цифровое значение, то и в этом случае вы получите нуль для каждого # #S Преобразование числа (цифры за цифрой) до тех пор, пока в результате не получится нуль. Всегда доставляется по крайней мере одна цифра (нуль, если число равно нулю) с HOLD Вставка в форматируемую символьную строку на текущую позицию символа, значение которого в коде ASCII находится в стеке n SIGN Вставка знака "-" в выходную строку в том случае, если третье число в стеке отрицательное (это число из стека выбирается - см.


Начало  Назад  Вперед



Книжный магазин