dc

Материал из Википедии — свободной энциклопедии
Текущая версия страницы покане проверялась опытными участниками и может значительно отличаться отверсии, проверенной 14 мая 2019 года; проверки требуют15 правок.
Перейти к навигацииПерейти к поиску
У этого термина существуют и другие значения, см.DC.

dc (deskcalculator) — пакет для арифметических вычислений с произвольной точностью вunix-системах. Обычно он оперирует вдесятичной системе счисления с целыми числами, однако можно задать системы счисления для ввода и вывода, а также точность вычислений. Общая структура dc —стековый калькулятор, использующийобратную польскую запись. Если аргумент указан, то сначала ввод производится из файла, а потом со стандартного ввода.

Содержание

Допустимые операции

[править |править код]

dc распознаёт следующие конструкции:

числоЗначение числа помещается в стек. Число — непрерывная цепочка цифр 0-9 или букв A-F (шестнадцатеричные цифры). В начале её может стоять знак подчеркивания_ для ввода отрицательного числа. Число может содержать десятичную точку. Последовательность цифр может быть даже пустой, если "число" содержит хотя бы знак подчеркивания или десятичную точку (странные представления нуля).
+ - / * % ^ ~Верхние два числа стека складываются (+), вычитаются (-), умножаются (*), делятся (/), берётся остаток (%), выполняется возведение в степень (^) или совершается деление с остатком (~).

^: oба операнда извлекаются из стека, выполняется возведение в степень, результат помещается обратно в стек. Дробная часть показателя степени игнорируется.

~: oба операнда извлекаются из стека, второй делится на первый, результат и остаток деления помещается в стек (операцияSdSn lnld/ LnLd% дает такой же результат).

sx, SxИзвлекается вершина стека и помещается в регистр с именемx, гдеx — любойсимвол ASCII. Если конструкция имеет видSx, тоx рассматривается как стек, в который и помещается извлечённое значение.
lx, 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Число в вершине стека заменяется его длиной (без учёта десятичной точки, знака минус и ведущих нулей, даже если они за десятичной точкой).
?Со стандартного ввода вводится одна строка и исполняется.
;:Используются dc для операций с массивами.

Примеры использования

[править |править код]

Вывести факториалы первых 10 натуральных чисел:

[la1+dsa*pla10>y]sy0sa1lyx

Квайн (программа, которая выводит саму себя):

[91Pn[dx]93Pn]dx[91PP93P[dx]P]dx

Печатать текст (Крылатая фраза)

dc -e '16iD09BD183D187D188D0B520D1P81D0BAD0B0D0B6D0B820D0BCD0B0D0BBD0BE2CP20D0BDD0BE20D185D0BED180D0BED188D0BE2EP'

См. также

[править |править код]

Ссылки

[править |править код]
  • dc(1) — страница справкиman по пользовательским командамFreeBSD  (англ.)
  • bc(1) — страница справкиman по пользовательским командамFreeBSD  (англ.)
Перейти к шаблону «Команды Unix»
Команды Unix
Перейти к шаблону «POSIX.1-2008»
УтилитыPOSIX.1-2008
Источник —https://ru.wikipedia.org/w/index.php?title=Dc&oldid=143126020
Категории: