70 lines
No EOL
2.6 KiB
Text
70 lines
No EOL
2.6 KiB
Text
{{language
|
|
|exec=interpreted
|
|
|checking=dynamic
|
|
|hopl id=1957
|
|
}}
|
|
{{language programming paradigm|concatenative}}
|
|
[[Category:Utility]]
|
|
|
|
[[wp:dc (computer program)|dc]] is the unix '''d'''esktop '''c'''alculator. <br>
|
|
It uses a reverse polish notation and is turing complete.
|
|
|
|
;See also
|
|
* [[:Category:Bc|bc]] - '''b'''asic '''c'''alculator
|
|
|
|
|
|
== Quick reference ==
|
|
Commands in [[AT&T dc]]
|
|
number : push a number (0-9A-F digits, _ negative, . radix point)
|
|
[...] : push a string
|
|
+ - * / % ^ : arithmetic operations: add sub mul div mod pow
|
|
v : square root
|
|
c : clear stack
|
|
d : duplicate top of the stack
|
|
f : show stack
|
|
p : print value with a newline, leave it on the stack
|
|
P : print string, or print number as ASCII string
|
|
sx : store to register x
|
|
lx : load from register x
|
|
Sx : push to register x
|
|
Lx : pop register x
|
|
1 2 :x : store x[2] = 1 (x is register)
|
|
2 ;x : retrieve x[2]
|
|
<x >x =x : compare top 2 values: if true, then execute register x
|
|
!>x !<x !=x : (example: 5 2 <A executes register A if 2 < 5)
|
|
! : shell command
|
|
q : quit, or break 2 execution levels
|
|
3 Q : break 3 execution levels
|
|
i : set input radix from top of stack
|
|
I : get current input base, push it on stack
|
|
o : set output radix from top of stack
|
|
O : get current output base, push it on stack
|
|
k : set scale factor
|
|
K : get current scale factor
|
|
x : execute a string of dc commands
|
|
X : count decimal digits after decimal point
|
|
z : count elements on the stack
|
|
Z : count all decimal digits in number, or characters in string
|
|
? : read and execute one line of input
|
|
Y : debug information
|
|
|
|
Extensions in both [[GNU dc]] and [[OpenBSD dc]]
|
|
a : print ASCII character
|
|
n : print value without a newline
|
|
~ : divmod: division and remainder
|
|
r : reverse (swap) the top two elements
|
|
# : comment
|
|
|
|
Extension in [[GNU dc]]
|
|
| : arithmetic - modular exponentiation
|
|
|
|
Extensions in [[OpenBSD dc]]
|
|
3 J : break 3 execution levels, then jump to next M
|
|
M : mark for the J command
|
|
R : pop and discard top of the stack
|
|
<xey >xey : comparisons with an else branch: if true,
|
|
=xey !<xey : then execute register x
|
|
!>xey !=xey : else execute register y
|
|
1 2 G : equality: push 1 if 2 == 1, else push 0
|
|
1 2 ( : less than: push 1 if 2 < 1, else push 0
|
|
3 N : boolean not: push 1 if 3 == 0, else push 0 |