Dc (program)
dc (desc calculator) je softwarový kalkulátor s reverzní polskou notací a neomezenou aritmetickou přesností.[1] Je jednou z nejstarších unixových utilit a předchází dokonce vzniku programovacího jazyka C.[pozn. 1] Stejně jako jiné utility té doby vyznačuje výkonnými funkcemi, také však extrémně strohou syntaxí.[zdroj?] Tradičně, na základě dc byl vytvořen uživatelsky příjemnější kalkulační program bc (s infixovou notací), ačkoli současné implementace bc nebývají na dc závislé.[3] HistorieNástroje dc a bc byly vyvinuty Lorindou Cherryovou a Robertem Morrisem z Bellových laboratoří v roce 1971.[4][5][6] Ken Thompson tvrdil, že dc byl zcela první program napsaný v Bellových laboratořích pro počítač PDP-11.[7] PopisTento článek přináší několik příkladů ve snaze ukázat jazyk jako takový. Kompletní seznam příkazů a syntaxe je třeba nastudovat z manuálové stránky konkrétní implementace. Na rozdíl od bc je dc založen na postfixové notaci, což znamená, že matematické výrazy jsou prováděny na způsob zásobníku. Vynásobení čísel čtyři a pět (většinu bílých znaků lze vynechat): 4 5 *
p
Toto lze přeložit jako „vlož čtyři a pět do zásobníku, pak s operátorem násobení vyjmi dva prvky ze zásobníku, vynásob je a vlož výsledek zpět do zásobníku.“ Příkaz p slouží k vypsání horního prvku v zásobníku. Pro výpočet (12 + 3^4)/11-22: 12 3 4 ^ + 11 / 22 -
p
Krom základních aritmetických a zásobníkových operací zahrnuje dc i podporu maker, podmínek a ukládání výsledků pro pozdější použití. Však je jeho syntaxe velmi strohá a komplexní programy bývají jen velmi obtížně čitelné.[zdroj?] Mechanismem, který se skrývá se za makry a podmínkami, je tzv. registr. Registr je v dc úložný prostor s jednoznakovým názvem, do nějž lze ukládat a naopak z něj načítat. Pro práci s nimi se používají příkazy s a l. Například sc vyjme horní prvek ze zásobníku a uloží jej do registru c; lc vloží hodnotu z registru c do zásobníku: 3 sc 4 lc * p
S registry lze pracovat také jako se sekundárními zásobníky, takže lze mezi nimi a hlavním zásobníkem hodnoty vyjímat a vkládat. Makra jsou implementována tak, že umožňují, aby hodnoty v registrech a zásobníku byly řetězci i čísly. Řetězec lze vypsat, může být ale také zpracován jako posloupnost příkazů. Kupříkladu je možné do registru m uložit makro pro přičtení jedničky a poté vynásobení dvěma: [1 + 2 *] sm
S použitím příkazu x, který provede operaci na horní pozici zásobníku, je možné: 3 lm x p
Mechanismus maker lze využít i ke konstrukci podmínek. Příkaz =r vyjme ze zásobníku dvě hodnoty a makro, uložené v registru r, provede pouze v případě, že jsou si rovny. Následující příklad vypíše řetězec shodne jen tehdy, je-li hodnota na vrcholu zásobníku rovna 5: [shodne]p] sm 5 =m
Cyklus je možné vytvořit definicí makra, které podmínečně volá samo sebe. Příkladem budiž následující výpočet faktoriálu: # F(x): return x!
# if x-1 > 1
# return x * F(x-1)
# otherwise
# return x
[d1-d1<F*]dsFxp
Příklad převedu vzdálenost v metrech na stopy a palce. Velká část příkladu se zabývá výzvami pro zadání hodnot na vstup, vypisováním výstupu ve vhodném formátu a probíhání cyklem pro převod dalšího čísla¨. Je zde ukázáno i pouštění jednořádkového příkazu z příkazového řádku. dc -e '[[Zadej cislo (v metrech) nebo 0 pro ukonceni.]psj]sh[q]sz[lhx?d0=z10k39.370079*.5+0k12~1/rn[ stop ]Pn[ palcu]P10Pdx]dx'
OdkazyPoznámky
ReferenceV tomto článku byl použit překlad textu z článku Dc (computer program) na anglické Wikipedii.
Externí odkazy
|
Portal di Ensiklopedia Dunia