Слово .: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 46 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''.''' — стандартное слово [[Каллисто]].
'''.''' (точка) адаптированное слово [[Каллисто]]. Вывод [[Десятичное число|десятичного числа]], за которым следует один [[пробел]].
.              ( x −− )                            Вывод x на индикатор и дать пробел. Совпадает с I. если BASE<>10.
[[Файл:TwoPiMulDot.png|thumb|right|264px|Пример работы слова .]]
Слово . очень напоминает одноимённое стандартное — бывшее ещё в Форте−79 и получившее в Каллисто имя [[I.]]. Отличие в том, что каллистянское слово . работает с плавучкой и создано на основе функций МК−161.
 
Если [[BASE|текущая система счисления]] отлична от [[Десятичная система счисления|десятичной]] — тоже самое, что [[I.]]
 
== Ввод слова . ==
В [[Режим NUM|режиме NUM]] нажмите [[Клавиша /-/|белую клавишу {{Серая клавиша|/−/}}]]
 
== F. FE. и FS. в стандарте ANS Forth ==
<pre>
12.6.2.1427  F.                            "f-dot"                FLOATING EXT
            ( -- ) ( F: r -- ) or ( r -- )
            Отображает с конечным пробелом верхнее число со стека с плавающей
            точкой, используя нотацию с фиксированной точкой:
 
            [-] <цифры>.<цифры0>
 
            Неопределенная ситуация существует, если значение BASE - не
            (десятичное) десять или если символьное строковое представление
            превышает размер буфера выходной строки отображаемого числа.
 
        См.: 12. 12.6.1.0558 >FLOAT.
 
A.12.6.1.1427  F.
Например, 1E3 F. отображает 1000..
</pre>
<pre>
12.6.2.1513  FE.                              "f-e-dot"          FLOATING EXT
            ( -- ) ( F: r -- ) or ( r -- )
            Отображает с конечным пробелом верхнее число со стека с плавающей
            точкой используя инженерную нотацию, где мантисса больше или равна
            1.0 и меньше чем 1000.0 и десятичная экспонента - множитель трех.
 
            Неопределенная ситуация существует, если значение BASE - не
            (десятичное) десять или если символьное строковое представление
            превышает размер буфера выходной строки отображаемого числа.
 
        См.: 6.1.0750 BASE, 12.3.2 Операции c плавающей точкой, 12.6.1.2143
            REPRESENT.
</pre>
<pre>
12.6.2.1613  FS.                      "f-s-dot"                  FLOATING EXT
            ( -- ) ( F: r -- ) or ( r -- )
            Отображает, с конечным пробелом, верхнее число со стека с плавающей
            точкой в экспоненциальном формате:
 
            <мантисса><экспонента>
            где:
            <мантисса>  := [-]<цифра>.<цифры0>
            <экспонента> := E[-]<цифры>
 
            Неопределенная ситуация существует, если значение BASE - не
            (десятичное) десять или если символьное строковое представление
            превышает размер буфера выходной строки отображаемого числа.
 
        См.: 6.1.0750 BASE, 12.3.2 Операции c плавающей точкой, 12.6.1.2143
            REPRESENT.
</pre>
 
== Реализация ==
Когда [[BASE]] равно десяти, слово . выводит [[десятичное число]] на индикатор с помощью [[R9035|регистра 9035]], который использует [[Десятичная система счисления|десятичную систему счисления]] и ограничивает точность 8 значащими цифрами. Если вам нужно вывести целое число, рекомендую использовать традиционный для Форта вывод, который в Каллисто называется [[I.]] и не имеет подобных ограничений.
 
Например, {{Текст на индикаторе|2 31 yˣ .}} выведет {{Текст на индикаторе|2,1474836E09}}, тогда как {{Текст на индикаторе|2 31 yˣ i.}} покажет все десять значащих цифр: {{Текст на индикаторе|2147483648}}.
<pre>
3831 ;#d
3832 ; .                ( x −− )                            Вывести x на индикатор и дать пробел. Совпадает с I. если BASE&ne;10.
3833 LFDOT:          .DB    1
3834                .TEXT  "."                    ; ( число −− )
3835                .DW    LDOT
3836 FDOT:          .DW CALL                        ; Вывести десятичное число x, за которым следует один пробел.
3837 RFDOT:          .DW BASE,UAT, LITB
3838                .DB 10
3839                .DW EQUAL,ZBRAN,RDOT            ; Если система счисления не десятичная, вывести целую часть числа
3840                .DW BDIGF, DIGF, EDIGF, TYPE, BRAN,RSPACE
</pre>


== Ссылки ==
== Ссылки ==
* [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.2.1427 Слово F. (f-dot) в стандарте ANS Forth] ''(англ.)'' и [http://forth.sourceforge.net/standard/dpans/dpansa12.htm#A.12.6.1.1427 комментарии к нему] ''(англ.)''
* {{Исходник|d|.}}
* [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.2.1513 Слово FE. (f-e-dot) в стандарте ANS Forth] ''(англ.)''
* См. слова [[I.]], [[(.)]] и [[I.R]]
* Слово [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.2.1427 F. (f-dot)] и [http://forth.sourceforge.net/standard/dpans/dpansa12.htm#A.12.6.1.1427 комментарий к нему] в стандарте ANS Forth ''(англ.)''
* Слова [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.2.1513 FE. (f-e-dot)] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.2.1613 FS. (f-s-dot)] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth-standard.org/standard/float/Fd F. (f-dot)] и [http://forth-standard.org/standard/rationale#rat:float:Fd комментарий к нему] в черновике Forth 200x ''(англ.)''
* Слова [http://forth-standard.org/standard/float/FEd FE. (f-e-dot)] и [http://forth-standard.org/standard/float/FSd FS. (f-s-dot)] в черновике Forth 200x ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\01.OSNOWY%20FORTA ОСНОВЫ ФОРТА] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://www.forth.com/starting-forth/sf1/sf1.html Fundamental Forth] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''




{{нет иллюстраций}}
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Слова высокого уровня]]
[[Категория:Терминальный ввод/вывод Каллисто]]
[[Категория:Терминальный ввод/вывод Каллисто]]
[[Категория:Адаптированные слова]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]

Текущая версия от 11:11, 10 ноября 2017

. (точка) — адаптированное слово Каллисто. Вывод десятичного числа, за которым следует один пробел.

.              ( x −− )                             Вывод x на индикатор и дать пробел. Совпадает с I. если BASE<>10.
Пример работы слова .

Слово . очень напоминает одноимённое стандартное — бывшее ещё в Форте−79 и получившее в Каллисто имя I.. Отличие в том, что каллистянское слово . работает с плавучкой и создано на основе функций МК−161.

Если текущая система счисления отлична от десятичной — тоже самое, что I.

Ввод слова .[править]

В режиме NUM нажмите белую клавишу  /−/ 

F. FE. и FS. в стандарте ANS Forth[править]

 12.6.2.1427   F.                            "f-dot"                FLOATING EXT
            ( -- ) ( F: r -- ) or ( r -- )
            Отображает с конечным пробелом верхнее число со стека с плавающей 
            точкой, используя нотацию с фиксированной точкой:

            [-] <цифры>.<цифры0>

            Неопределенная ситуация существует, если значение BASE - не 
            (десятичное) десять или если символьное строковое представление 
            превышает размер буфера выходной строки отображаемого числа.

        См.: 12. 12.6.1.0558 >FLOAT.

 A.12.6.1.1427   F.
 Например, 1E3 F. отображает 1000..
 12.6.2.1513   FE.                              "f-e-dot"           FLOATING EXT
            ( -- ) ( F: r -- ) or ( r -- )
            Отображает с конечным пробелом верхнее число со стека с плавающей 
            точкой используя инженерную нотацию, где мантисса больше или равна 
            1.0 и меньше чем 1000.0 и десятичная экспонента - множитель трех.

            Неопределенная ситуация существует, если значение BASE - не 
            (десятичное) десять или если символьное строковое представление 
            превышает размер буфера выходной строки отображаемого числа.

        См.: 6.1.0750 BASE, 12.3.2 Операции c плавающей точкой, 12.6.1.2143 
            REPRESENT.
 12.6.2.1613   FS.                      "f-s-dot"                   FLOATING EXT
            ( -- ) ( F: r -- ) or ( r -- )
            Отображает, с конечным пробелом, верхнее число со стека с плавающей 
            точкой в экспоненциальном формате:

            <мантисса><экспонента>
            где:
            <мантисса>   := [-]<цифра>.<цифры0>
            <экспонента> := E[-]<цифры>

            Неопределенная ситуация существует, если значение BASE - не 
            (десятичное) десять или если символьное строковое представление 
            превышает размер буфера выходной строки отображаемого числа.

        См.: 6.1.0750 BASE, 12.3.2 Операции c плавающей точкой, 12.6.1.2143 
            REPRESENT.

Реализация[править]

Когда BASE равно десяти, слово . выводит десятичное число на индикатор с помощью регистра 9035, который использует десятичную систему счисления и ограничивает точность 8 значащими цифрами. Если вам нужно вывести целое число, рекомендую использовать традиционный для Форта вывод, который в Каллисто называется I. и не имеет подобных ограничений.

Например,  2 31 yˣ .  выведет  2,1474836E09 , тогда как  2 31 yˣ i.  покажет все десять значащих цифр:  2147483648 .

3831 ;#d
3832 ; .                ( x −− )                             Вывести x на индикатор и дать пробел. Совпадает с I. если BASE≠10.
3833 LFDOT:          .DB     1
3834                 .TEXT   "."                     ; ( число −− )
3835                 .DW     LDOT
3836 FDOT:           .DW CALL                        ; Вывести десятичное число x, за которым следует один пробел.
3837 RFDOT:          .DW BASE,UAT, LITB
3838                 .DB 10
3839                 .DW EQUAL,ZBRAN,RDOT            ; Если система счисления не десятичная, вывести целую часть числа
3840                 .DW BDIGF, DIGF, EDIGF, TYPE, BRAN,RSPACE

Ссылки[править]


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.