WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте

dc (desk calculator) — пакет для арифметических вычислений с произвольной точностью в 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 рассматривается как команда 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

См. также

Ссылки

  • bc(1)  страница справки man по пользовательским командам FreeBSD  (англ.)

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.ru - проект по пересортировке и дополнению контента Википедии