- dc
-
dc — пакет для арифметических вычислений с произвольной точностью в unix-системах. Обычно он оперирует в десятичной системе счисления с целыми числами, однако можно задать системы счисления для ввода и вывода, а также точность вычислений. Общая структура dc — стековый калькулятор, использующий обратную польскую запись. Если аргумент указан, то сначала ввод производится из файла, а потом со стандартного ввода.
Содержание
Допустимые операции
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 для операций с массивами. Пример использования
Вывести факториалы первых 10 натуральных чисел:
[la1+dsa*pla10>y]sy 0sa1 lyx
Квайн (программа, которая выводит саму себя):
[91Pn[dx]93Pn]dx
См. также
Ссылки
Команды Unix POSIX.1-2008 Утилиты POSIX.1-2008 admin • alias • ar • asa • at • awk • basename • batch • bc • bg • c99 • cal • cat • cd • cflow • chgrp • chmod • chown • cksum • cmp • comm • command • compress • cp • crontab • csplit • ctags • cut • cxref • date • dd • delta • df • diff • dirname • du • echo • ed • env • ex • expand • expr • false • fc • fg • file • find • fold • fort77 • fuser • gencat • get • getconf • getopts • grep • hash • head • iconv • id • ipcrm • ipcs • jobs • join • kill • lex • link • ln • locale • localedef • logger • logname • lp • ls • m4 • mailx • make • man • mesg • mkdir • mkfifo • more • mv • newgrp • nice • nl • nm • nohup • od • paste • patch • pathchk • pax • pr • printf • prs • ps • pwd • qalter • qdel • qhold • qmove • qmsg • qrerun • qrls • qselect • qsig • qstat • qsub • read • renice • rm • rmdel • rmdir • sact • sccs • sed • sh • sleep • sort • split • strings • strip • stty • tabs • tail • talk • tee • test • time • touch • tput • tr • true • tsort • tty • type • ulimit • umask • unalias • uname • uncompress • unexpand • unget • uniq • unlink • uucp • uudecode • uuencode • uustat • uux • val • vi • wait • wc • what • who • write • xargs • yacc • zcat GNU Coreutils Файловые утилиты chgrp • chown • chmod • cp • dd • df • dir • dircolors • install • ln • ls • mkdir • mkfifo • mknod • mv • rm • rmdir • shred • sync • touch • vdir Текстовые утилиты cat • cksum • comm • csplit • cut • expand • fmt • fold • head • join • md5sum • nl • od • paste • ptx • pr • sha1sum • sort • split • sum • tac • tail • tr • tsort • unexpand • uniq • wc Shell-утилиты basename • chroot • date • dirname • du • echo • env • expr • factor • false • groups • hostid • id • link • logname • nice • nohup • pathchk • pinky • printenv • printf • pwd • readlink • seq • sleep • stat • stty • tee • test • true • tty • uname • unlink • users • who • whoami • yes Категории:- Утилиты UNIX
- Семейства языков программирования
- Конкатенативные языки программирования
- Стековые языки программирования
Wikimedia Foundation. 2010.