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