| Сервер поддерживается Центром Информационных Технологий (095) 932-9212, 932-9213, 939-0783 E-mail: info@citforum.ru

Сервер содержит море(!) аналитической информации | CIT Forum CD-ROM

### DC(1)

НАЗВАНИЕ
dc - настольный калькулятор

СИНТАКСИС

     dc  [файл]

ОПИСАНИЕ
Dc - пакет для арифметических вычислений с произвольной точностью. Обычно он оперирует в десятичной системе счисления с целыми числами, однако можно задать системы счисления для ввода и вывода, а также точность вычислений. Общая структура dc - стековый калькулятор, использующий обратную польскую запись. [См. также bc(1) - препроцессор для dc, поддерживающий инфиксную нотацию и C-подобный синтаксис.] Если аргумент указан, то сначала ввод производится из файла, а потом со стандартного ввода.

Dc распознает следующие конструкции:

число | Значение числа помещается в стек. Число - непрерывная цепочка цифр 0-9. В начале ее может стоять знак подчеркивания _ для ввода отрицательного числа. Число может содержать десятичную точку.
+ - / * % ^ | Верхние два числа стека складываются (+), вычитаются (-), умножаются (*), делятся (/), берется остаток (%) или выполняется возведение в степень. Оба операнда извлекаются из стека и результат помещается обратно в стек. Дробная часть показателя степени игнорируется.
sx | Извлекается вершина стека и помещается в регистр с именем x, где x - любой символ. Если конструкция имеет вид Sx, то x рассматривается как стек, в который и помещается извлеченное значение.
lx | Значение, хранящееся в регистре x, помещается в стек. Регистр x не изменяется. Изначально все регистры инициализируются нулем. Если конструкция имеет вид Lx, то x рассматривается как стек, его вершина извлекается и помещается в главный стек.
d | Вершина стека удваивается.
p | Выводится вершина стека (без удаления из стека).
P | Вершина стека трактуется как цепочка символов, печатается и удаляется из стека.
f | Выводятся все элементы стека (без удаления).
q | Завершает работу программы. При выполнении цепочки символов уровень рекурсии уменьшается на два.
Q | Завершает работу программы. Вершина стека извлекается и уровень рекурсии уменьшается на полученное значение.
x | Вершина стека трактуется как цепочка символов, содержащая dc-команды, и выполняется.
X | Вершина стека заменяется количеством цифр в ее дробной части.
[..] | Цепочка символов, заключенная в скобки, помещается в вершину стека.
x =x | Два верхних элемента стека извлекаются и сравниваются. Если они удовлетворяют указанному условию, то содержимое регистра x рассматривается как команда dc и выполняется.
v | Верхний элемент стека заменяется квадратным корнем из него. Если он имел дробную часть, то она учитывается; в противном случае точность вычислений (см. команду k) игнорируется.
! | Остаток строки интерпретируется как команда shell'а.
c | Очистка стека.
i | Вершина стека извлекается и используется как основание системы счисления при вводе. Команда I помещает используемое при вводе основание системы счисления в вершину стека.
o | Вершина стека извлекается и используется как основание системы счисления при выводе. Команда O помещает используемое при выводе основание системы счисления в вершину стека.
k | Извлекается вершина стека; она используется для задания точности вычислений: количества знаков в дробной части при выводе и при выполнении умножения, деления и возведения в степень.
z | В стек помещается количество его элементов.
Z | Число в вершине стека заменяется его длиной (без учета десятичной точки и знака минус).
? | Со стандартного ввода вводится одна строка и исполняется.
;: | Используются утилитой bc(1) для операций с массивами.

ПРИМЕР
Вывести факториалы первых 10 натуральных чисел:

     [la1+dsa*pla10>y]sy
     0sa1
     lyx

СМ. ТАКЖЕ
bc(1).

ДИАГНОСТИКА

     x is unimplemented
         (где x - восьмеричное число). Операция, обозначен-
         ная символом с кодом x, не реализована.
     stack empty
         В стеке меньше элементов, чем требуется.
     Out space
         Слишком длинное число.
     Out of headers
         Слишком много чисел приходится хранить одновремен-
         но.
     Out of pushdown
         Стек переполнен.
     Nesting depth
         Слишком  большой  уровень вложенности при выполне-
         нии.

Comments: info@citmgu.ru Designed by Andrey Novikov Copyright © CIT