- Desk calculator
-
dc (ein Akronym für desk calculator) ist ein Rechenprogramm für Unix respektive Unix-Derivate. Es nutzt das Prinzip der umgekehrten polnischen Notation und ist eines der ältesten Unix-Tools - sogar älter als die Programmiersprache C. In der Praxis wird bc meistens dc vorgezogen, nicht zuletzt auch deshalb, weil dc seit 1993 nicht mehr aktualisiert worden ist und weil bc auf dc aufsetzt.
Beispiele
Anmerkung: das p am Ende der Eingabe steht für print und gibt das Ergebnis, genauer das letzte Element des Stacks, aus. In den Beispielen wird das Ergebnis in der letzten Zeile mitaufgeführt. Alle Leerzeichen und -zeilen mit Ausnahme deren, die zwischen Ziffern stehen, sind optional. Die Syntax mag etwas eigenwillig erscheinen und unterscheidet sich grundlegend von derer, die man beispielsweise in einen Taschenrechner eintippen würde. Das liegt daran, dass dc stack-basiert arbeitet. Das erste Beispiel würde verbal übersetzt lauten "schiebe (push) die beiden Elemente sechs und acht auf den Stack, entferne (pop) sie mit dem Multiplikations-Operator, multipliziere sie und schreibe das Ergebnis wieder auf den Stack; gibt danach den Inhalt des Stacks af den Bildschirm aus".
Multiplikation:
Berechnet 6 * 86 8 * p 48
Mehrere Rechenarten kombiniert:
Berechnet (12 + 3^4)/11-22:12 3 4 ^ + 11 / 22 - p -14
Register:
Neben Stacks können auch Register, sozusagen Stacks zweiter Ordnung, benutzt werden. Mit s<Name des Registers> (z.B. sc für das Register mit dem Namen c) werden Elemente darauf geschoben, mit l<Name des Registers> davon entfernt.
Das erste Beispiel mit Register statt mit Stacks:6 sc 8 lc * p 48
Folgendes Beispiel berechnet (1 + 3)* 2 mit Hilfe eines Registers (m):
[1 + 2 *] sm 3 lm x p
Das x führt die Berechnung auf den Stack aus.
Es lassen sich mit dc auch Makros ausführen:
dc -e '[[Gib einen Wert in Meter an oder drücke 0 um zu beenden]psj] sh[q]sz[lhx?d0=z10k39.370079*.5+0k12~1/rn[ Fuß ]Pn[ Zoll]P10Pdx]dx'
Hier wird nicht mehr die dc-eigene Shell verwendet sondern das Makro mit dem Schalter -e (für execute, dt. ausführen) an dc übergeben. Das Skript rechnet die Maßeinheit Meter in Fuß und Zoll um.
Siehe auch
Wikilinks
Wikimedia Foundation.