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
См. также
Ссылки
- — страница справки man по пользовательским командам FreeBSD <span class="ref-info" title="{{{Expansion depth limit exceeded}}}" style="font-size:85%; cursor:help; margin-left:0.2em; color:#888;">({{{Expansion depth limit exceeded}}})
cs:Dc (programovací jazyk) de:Dc (Unix) en:Dc (computer program) fr:Dc (logiciel) pl:Dc (informatyka)
Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....