U♯S
U#S — фортовское слово Каллисто.
U#S ( u −− 0 ) Выделять цифры числа u словом U# до получения нуля.
Преобразует целое положительное число u до тех пор, пока не будет получен 0. Одна цифра выдаётся в любом случае ('0').
Ввод слова U#S[править]
В режиме ЛАТ последовательно нажмите клавиши 3 P F 3 Р-ГРД-Г 1
#S в стандарте ANS Forth[править]
6.1.0050 #S "number-sign-s" CORE ( ud1 -- ud2 ) Преобразует одну цифру ud1 согласно правилу для #. Продолжает преобразование до нулевого частного. ud2 нулевое. Неопределенная ситуация существует, если #S выполняется вне <# #> ограничивающих преобразование числа. См.: 6.1.0030 #, 6.1.0040 #>, 6.1.0490 <#.
История[править]
Каллистянское слово U#S — адаптированное слово S# , которое является стандартным и известно со времён Форта−79.
Каллистянское U#S оперирует лишь с одной ячейкой на вершине стека. Слово U#S также присутствует в некоторых версиях Форта, откуда и было взято его имя.
#S в предыдущем стандарте Forth-83 (англ.)[править]
#S +d -- 0 0 79 "sharp-s" +d is converted appending each resultant character into the pictured numeric output string until the quotient (see: # ) is zero. A single zero is added to the output string if the number was initially zero. Typically used between <# and #> .
#S в стандарте Forth-79 (англ.)[править]
#S ud -- 0 0 209 "sharp-s" Convert all digits of an unsigned 32-bit number ud, adding each to the pictured numeric output text, until remainder is zero. A single zero is added to the output string if the number was initially zero. Use only between <# and #>.
#S в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
#S d1 --- d2 L0 Generates ascii text in the text output buffer, by the use of #, until a zero double number n2 results. Used between <# and #>.
Реализация[править]
3792 ;#UnumS 3793 ; U#S ( u −− 0 ) Выделять цифры числа u словом U# до получения нуля. 3794 ; Преобразовать целое число u до тех пор, пока не будет получен 0 3795 ; Одна цифра выдаётся в любом случае ('0') 3796 LDIGS: .DB 3 3797 .TEXT "U#S" ; ( целое −− 0) 3798 .DW LDIG 3799 DIGS: .DW CALL 3800 DIS: .DW DIG, DUP,ZEQU, ZBRAN,DIS, EXIT
Реализация из SP-Forth 4.20:
: #S ( ud1 -- ud2 ) \ 94 \ Выделять цифры D1 по слову # до получения нуля. \ ud2 - ноль. \ Исключительная ситуация возникает, если использовать #S \ вне <# и #>, ограничивающивающих преобразование чисел. BEGIN # 2DUP D0= UNTIL ;
Советская реализация[править]
Определение слова U#S приводится у Юрия Семёнова (стр. 100) и у Баранова-Ноздрунова (стр. 37):
: U#S ( A ---> 0 ) BEGIN U# ↑ 0= UNTIL ;
В ядре ФОРТ-ЕС и FORTH ИТЭФ слово U#S называлось #S и работало с числовой парой. Вот описание и определение #S из ядра ФОРТ-ЕС:
#S D1->0,0 ВЫДЕЛЯТЬ ЦИФРЫ D1 ПО СЛОВУ "#" ДО 37 ПОЛУЧЕНИЯ НУЛЯ Экран номер 37 ( 31.03.86 PAD HOLD ALPHA <# #> # #S SIGN ) : #S ( D->0,0) BEGIN # 2DUP OR 0= UNTIL ;
Вот определение #S из FORTH ИТЭФ:
HEAD 202Q,'#',323Q,DIGS,$COL ; #S DIS: DW DIG,DUP2,$OR,ZEQU,ZBRAN,DIS-$,SEMI
Ссылки[править]
- Исходный текст слова U#S в Каллисто Классик 1.0
- Слово #S (number-sign-s) в стандарте ANS Forth (англ.)
- Слово #S (number-sign-s) в черновике Forth 200x (англ.)
- ЧИСЛО ТИПОВ ЧИСЕЛ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- A Number of Kinds of Numbers в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |