DC(1) 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
Слишком большой уровень вложенности при выполне-
нии.
|