Hlavní navigace

Matematika v příkazové řádce XII - aplikace sc (3)

13. 4. 2006
Doba čtení: 14 minut

Sdílet

Ve dvanácté části seriálu věnovaného matematicky zaměřeným aplikacím provozovaným zejména z příkazového řádku nebo z textového terminálu dokončíme popis tabulkového procesoru sc. Povíme si, jakým způsobem je možné nastavovat parametry editace, resp. přepočtů tabulek, a také jak lze tabulky exportovat i importovat v různých datových formátech.

Obsah

1. Nastavení parametrů za běhu tabulkového procesoru
2. Parametry vyžadující číselné nebo řetězcové hodnoty
3. Parametry nabývající pouze dvou nebo tří hodnot
4. Volby zadávané při startu tabulkového procesoru
5. Volby uložené v konfiguračním souboru
6. Export a import dat
7. Obsah dalšího pokračování tohoto seriálu

1. Nastavení parametrů za běhu tabulkového procesoru

Ve dvanácté a třinácté části seriálu, který je věnován matematicky zaměřeným aplikacím provozovaným z příkazového řádku a/nebo textového terminálu, si popíšeme většinu zbývajících funkcí tabulkového procesoru sc. V předchozích částech jsme si popsali základní funkce a operace, jakými jsou například příkazy pro posuny buňkového kurzoru, práci se značkami, vkládání dat a editaci buněk, práci se sloupci, řádky a zvýrazněnými bloky tabulky apod. Dnešní část je věnována popisu voleb, kterými je možné ovlivnit chování tabulkového procesoru; dále pak příkazy pro importy a exporty dat a také popisu způsobu práce se vzorci a makry, které z (alespoň na první pohled) poměrně jednoduchého tabulkového procesoru dělají všestranný a profesionální nástroj. Nejprve si popíšeme způsob interaktivního nastavení parametrů přímo za běhu tabulkového procesoru sc (druhá a třetí kapitola) a posléze také nastavení parametrů v příkazové řádce nebo v inicializačním souboru (čtvrtá a pátá kapitola).

2. Parametry vyžadující číselné nebo řetězcové hodnoty

Změna parametrů, které vyžadují zadání číselné či řetězcové hodnoty, se provádí klávesou/příkazem S (příkaz pochází od slova set. Pozor, jedná se o velké písmeno!). Po stlačení této klávesy se zobrazí krátké (jednořádkové) menu s dostupnými parametry, jejichž popis a význam je uveden v následující tabulce. Po výběru jednoho z parametrů je možné zadat jeho hodnotu, což je (samozřejmě v závislosti na typu parametru) buď číselná hodnota nebo řetězec.

Jméno parametru Význam
pagesize Hodnota tohoto parametru se uplatní zejména při provádění příkazů PageUp, PageDown, J a K, což jsou nám známé příkazy, které slouží pro vertikální pohyb v tabulce. Pokud je v tomto parametru uložena nenulová hodnota, je považována za počet řádků, o jejichž počet je vertikální posun proveden. Standardně je nastavena nulová hodnota, která značí, že se posun má provést o polovinu výšky okna textového terminálu.
byrows Výběrem tohoto parametru se specifikuje, že se výpočty mají provádět po jednotlivých řádcích. To může mít dopad na způsob výpočtu složitějších vzorců, které se odkazují na různá místa v tabulce. V dalších verzích tohoto tabulkového procesoru by mělo dojít ke změně logiky vyhodnocování, kdy by se pro každou buňku vytvořil graf závislostí, současná verze však výpočty provádí přímočarým způsobem buňku po buňce.
bycols Tento parametr při svém nastavení způsobí, že se výpočty budou provádět po jednotlivých sloupcích. Jedná se o opak předchozí volby a její nastavení může mít vliv na vyhodnocování buněk v tabulce. Velký význam při vyhodnocování má i následující parametr.
iterations Hodnotou tohoto parametru může být libovolné kladné číslo, které udává počet iterací, které proběhnou před zobrazením tabulky na obrazovce. To má význam jak pro vzorce obsahující skutečnou iteraci (ať již přímou či nepřímou), tak i v případě, že se vzorec odkazuje na hodnotu buněk, které se nachází na sloupcích napravo či řádcích nalevo od dané buňky – v těchto buňkách totiž může být uložena neaktualizovaná hodnota. Standardně je počet iterací nastaven na hodnotu deset, což znamená, že se bez problémů můžeme nepřímo odkazovat až přes devět vzorců.
tblstyle Tímto parametrem je možné zvolit, jakým způsobem se bude provádět export dat uložených v tabulce. Implicitně je nastaveno 0, což značí, že hodnoty jednotlivých buněk jsou odděleny dvojtečkou (colon). Dále je možné nastavit tex (výstup pro TEX), latex (výstup vhodný pro LATEX), slatex (výstup pro SLATEX), frame (výstup pro FrameMaker) a konečně tbl, což zapříčiní výstup do textového souboru, ve kterém jsou buňky opět odděleny dvojtečkou (jako u implicitní volby), ale k datům jsou navíc připojeny i řídící příkazy zpracovávané filtrem tbl.

3. Parametry nabývající pouze dvou nebo tří hodnot

Kromě výše uvedených parametrů, které od uživatele vyžadují zadání číselné nebo řetězcové hodnoty, je možné v sc provést přepnutí významu velkého množství dalších parametrů. Jedná se o volby, které jsou buď zapnuté (povolené) či vypnuté (zakázané), takže způsob jejich výběru může být zjednodušen; stačí pouze stlačit klávesy Ctrl+T (mnemotechnickou pomůckou je pro tento příkaz anglické slovo toggle) a po nich provést jednopísmennou volbu parametrů (po stlačení Ctrl+T se zobrazí krátké menu s výpisem jednotlivých příkazů). Klávesové zkratky pro volbu (resp. přepnutí) parametrů jsou sepsány ve druhé tabulce. Některé parametry mohou nabývat tří různých hodnot, i ty je však možné přepnout pomocí stejného příkazu jako parametry dvouhodnotové.

Klávesová zkratka Význam klávesové zkratky
Ctrl+T a Pomocí tohoto parametru se povoluje nebo zakazuje automatické přepočítání vzorců v tabulce po zápisu či přepisu i jediné buňky. U středně velkých tabulek a rychlých počítačů je tato volba akceptovatelná, ale u příliš velkých tabulek (obsahujících například import databázové tabulky) se může stát, že se doba potřebná na přepočtení zvýší – v tomto případě je vhodné volbu vypnout a přepočet provádět ručně pomocí příkazu @.
Ctrl+T b Pomocí této volby se zapne či naopak vypne podpora pro zrakově postižené uživatele. Je podporováno mnoho čteček obrazovek, například SpeakUp.
Ctrl+T c Touto volbou je možné přepínat způsob zobrazení buňkového kurzoru. Buď se jedná o inverzní zobrazení celé buňky (pokud je parametr povolen), nebo o zobrazení znaku < (pokud je parametr zakázán). V případě, že použitý terminál nepodporuje změnu atributů znaků, je zapotřebí tuto volbu zakázat, nejlépe v uživatelském konfiguračním souboru.
Ctrl+T e Zakázání či naopak povolení volání externích funkcí. Pokud je volání povoleno, může být překreslení tabulky zpomalováno velkým počtem volání externích programů, proto je tato volba implicitně vypnuta. Tímto tématem se budeme podrobněji zabývat v následující části tohoto seriálu.
Ctrl+T i Touto volbou se povoluje či naopak zakazuje automatické vkládání řádků či sloupců tabulky při provádění některých blokových operací. Implicitně je tato volba vypnuta, ale v praxi je výhodné, pokud je automatické vkládání povoleno.
Ctrl+T w Zapnutí či vypnutí automatického přesunu na další řádek či sloupec u některých blokových operací.
Ctrl+T l Zapnutí či vypnutí automatického vytváření popisky buňky při použití příkazu rd.
Ctrl+T n Povolení či zákaz automatického vkládání číselných hodnot do buněk tabulky. Pokud je tento parametr povolen, rozezná tabulkový procesor vstup číselných údajů z klávesnice a vloží tyto údaje do vybrané buňky. V případě, že je parametr zakázán (což je implicitní nastavení), musí se pro zápis číselných údajů použít příkazy uvedené v předchozí části tohoto seriálu. Automatické vkládání číselných hodnot koliduje s dalšími příkazy, proto je nutné povolení či zakázání této volby pečlivě zvážit, zejména při přípravě maker.
Ctrl+T o Zapnutí či vypnutí automatické optimalizace výrazů zapsaných ve vzorcích. V současné verzi sc optimalizuje pouze konstantní části výrazů.
Ctrl+T t Povolení či zákaz zobrazení informací o aktivních buňkách v nejhornějším řádku textového okna terminálu.
Ctrl+T r Tento parametr může nabývat jedné ze tří hodnot. Parametrem se řídí, co se stane v případě, že je nějaká hodnota zapsána do buňky a následně potvrzena klávesou Enter. První (implicitní) možností je, že buňkový kurzor zůstane stát na aktuální buňce. Druhou možností je posun buňkového kurzoru doprava (pravděpodobně nejpoužitelnější), třetí možností posun buňkového kurzoru na další řádek (vhodné při zadávání dat do jednoho sloupce).
Ctrl+T s Povolení či zákaz rozšíření barevného pozadí buněk v případě, že text či číselná hodnota v buňce přesáhne šířku sloupce. Pokud je parametr povolen, je buňka rozšířena doprava a spolu s ní i případné barevné pozadí, což na obrazovce vytvoří „zubaté“ sloupce.
Ctrl+T x Zapnutí či vypnutí funkce jednoduchého šifrování dat v tabulce.
Ctrl+T z Toto je jedna z velmi užitečných voleb, kterou mnohdy nenabízí ani pokročilé tabulkové procesory vyšší váhové kategorie (jmenovitě OpenOffice.org Calc a Excel). Ve chvíli vyvolání této volby se zapamatuje sloupec a řádek aktivní buňky. Zapamatovaný sloupec a/nebo řádek potom slouží jako zarážka při automatickém posunu kurzoru – viz volba Ctrl+T r. Takto je možné nastavit pouze aktivní pracovní oblast (například tři sloupce), které se pomocí Enteru „automaticky“ vyplňují.
Ctrl+T C Povolení či zákaz používání barev při zvýrazňování buněk a chybných stavů aplikace. Tato volba je zakázána, protože není na některých terminálech podporována (to je však spíše chyba příslušného termcapu) a na pomalejších připojeních může být zdržení dané přenosem barvových informací neakceptovatelné. Pomalým připojením však může být i napojení na počítač ve stejné síti přes ssh, protože sc překreslení celé tabulky nemá optimalizované (na rozdíl od například Vimu či Emacsu). Na některých konfiguracích proto může být výhodné spouštět sc z programu screen, který výstup na terminál optimalizuje.
Ctrl+T E Povolení či zákaz barevného zvýraznění buněk obsahujících chybné hodnoty či výrazy.
Ctrl+T N Povolení či zákaz barevného zvýraznění buněk obsahujících záporné hodnoty. Pokud je tato volba povolena, je index barvy buněk se zápornou hodnotou zvýšen o jedničku. To, o jaké barvy se bude jednat, závisí na nastavení terminálu (většinou jsou buňky s kladnými hodnotami modré a buňky se zápornými hodnotami červené). Tato volba do určité míry nahrazuje podmíněné formátování buněk známé z tabulkových procesorů vyšší třídy.
Ctrl+T $ Velmi užitečná volba při práci s monetárními hodnotami (tj. například cenami nebo při zpracování faktur). Pokud je tato volba povolena, jsou všechny číselné hodnoty automaticky při svém vstupu vyděleny stem, tj. jakoby šlo o hodnoty zadávané v haléřích (… vlastně centech). Jedná se vlastně o stejné chování, jaké nabízí většina pokladen v obchodech, kde prodávající také nemusí zadávat „desetinnou čárku“.

4. Volby zadávané při startu tabulkového procesoru

Některé parametry uvedené výše ve druhé a třetí kapitole je možné specifikovat i při startu tabulkového procesoru sc volbami na příkazovém řádku. Volby jsou uvozeny znakem - (pomlčka), přičemž jejich pořadí může být libovolné, jedinou výjimku z tohoto pravidla představuje volba -P. V následující tabulce jsou uvedeny podporované volby spolu s jejich významem.

Volba Význam volby
-a Pokud je v tabulce, která se má editovat, definováno automaticky spouštěné makro (autorun macro), je toto makro skutečně spuštěno.
-c Aplikace je spuštěna s volbou přepočtu buněk nastavenou na sloupcový režim. Viz též volby byrows a bycols.
-e Nastavení zaokrouhlení číselných hodnot na sudá čísla.
-m Pomocí tohoto parametru se zakazuje automatické přepočítání vzorců v tabulce po zápisu či přepisu i jediné buňky. U středně velkých tabulek a rychlých počítačů je tato volba akceptovatelná, ale u příliš velkých tabulek (obsahujících například import databázové tabulky) se může stát, že se doba potřebná na přepočtení zvýší – v tomto případě je vhodné volbu vypnout a přepočet provádět pomocí příkazu @.
-n Pokud je tento parametr na příkazovou řádku zadán, rozezná tabulkový procesor vstup číselných údajů z klávesnice a vloží tyto údaje do vybrané buňky. V případě, že je parametr zakázán (což je implicitní nastavení), musí se pro zápis číselných údajů použít příkazy uvedené v předchozí části tohoto seriálu. Automatické vkládání číselných hodnot koliduje s dalšími příkazy, proto je nutné povolení či zakázání této volby pečlivě zvážit, zejména při přípravě maker.
-o Tato volba povolí automatickou optimalizaci konstantních částí výrazů.
-q Velmi užitečná volba, která se používá například při požadavku na automatické (neinteraktivní) provedení výpočtů (například ze shellovských skriptů) s ukončením tabulkového procesoru ihned po provedení těchto výpočtů bez vstupu do interaktivního režimu.
-r Aplikace je spuštěna s volbou přepočtu buněk nastavenou na řádkový režim. Jedná se o implicitní volbu.
-v Při exportu tabulky do roury (pipy) se všechny vzorce vyčíslí na své hodnoty a teprve tyto hodnoty jsou poslány na výstup.
-x Povolení šifrování dat při vstupu a výstupu tabulky či její části přes rouru (pipe).
-C Po stisku klávesy Enter se kurzor přesune na další sloupec.
-R Po stisku klávesy Enter se kurzor přesune na další řádek.
-P Tento příkaz očekává zadání oblasti buněk v tabulce. Vybraná oblast bude poslána na standardní výstup, čehož může být využito například pro automatické exporty a importy dat mezi databází a tabulkou. Pokud se místo oblasti buněk zadá pouze znak %, značí to celou tabulku (zde opět shledáváme podobnost s textovým editorem vi). Bez zadání oblasti se tabulkový procesor dostane do interaktivního režimu, ve kterém je oblast zapotřebí zadat ručně.
-W Pracuje podobně jako předchozí volba, ale s tím rozdílem, že je vytvořen textový soubor, který přesně kopíruje vzhled tabulky na obrazovce, včetně skrytých sloupců a/nebo řádků.

5. Volby uložené v konfiguračním souboru

Konfiguraci tabulkového procesoru sc je možné uložit do konfiguračního souboru, který je umístěn v domácím adresáři uživatele pod jménem .scrc. Nejzajímavější na tomto konfiguračním souboru je, že má stejný formát jako soubory s uloženou tabulkou. Vzhledem k tomu, že v souborech s tabulkami mohou být uloženy i příkazy, zejména příkaz set, bývá zvykem ukládat do souboru .scrc právě konfigurační volby. Navíc je možné zadat příkaz set scrc, který zajistí, že se podobný soubor bude vyhledávat a posléze načítat i z nastaveného adresáře, tj. z adresáře, který je vypsán příkazem pwd. Z bezpečnostních důvodů (makroviry apod.) je však doporučováno tuto volbu nenastavovat. V následující tabulce jsou vypsány volby, kterými je možné chování tabulkového procesoru ovlivňovat, zejména co se týče práce s externími soubory:

Volba Význam volby
scext Pomocí této volby je nastavena přípona k souborům obsahujícím tabulky. Tyto soubory jsou vytvářeny příkazem P (Put). Pokud není tato volba nastavena, jsou tabulky uloženy do souboru, který žádnou příponu nemá. Pro tabulky tvořené touto aplikací se většinou používá přípona .sc.
ascext Tato volba nastavuje příponu souborů vytvářených pomocí příkazu W (Write), tj. textových souborů obsahujících výpis z tabulek formátovaný tak, jak jsou tabulky zobrazeny na obrazovce. Pokud tato volba není nastavena, použije se implicitní přípona .asc.
tbl0ext Specifikace přípony souborů vytvořených pro další zpracování filtrem tbl v případě, že parametr tblstyle je nastaven na nulu. Implicitně je pro tento případ nastavena přípona .cln.
tblext Specifikace přípony souborů vytvořených pro další zpracování filtrem tbl. Implicitně je nastavena přípona .tbl.
texext Přípona k souborům vyexportovaným pro systém TEX. Pokud není tato volba nastavena, použije se implicitně přípona .tex.
latexext Přípona k souborům vyexportovaným pro systém LATEX. V případě, že tato volba není nastavena, použije se implicitně přípona .lat.
salatexext Přípona k souborům vyexportovaným pro systém SLATEX. V případě, že tato volba není nastavena, použije se implicitně přípona .stx.

6. Export a import dat

Tabulkový procesor sc obsahuje několik funkcí, které je možné použít pro importy a exporty dat. Nejdůležitějším zjištěním by pro nás mělo být, že formát, který je v tomto tabulkovém procesoru použit pro uložení tabulky, je velmi jednoduchý a především textově orientovaný (samozřejmě pokud není použito šifrování), takže případné změny v tabulce je možné provádět i ruční či programovou změnou tohoto souboru, například pomocí skriptů napsaných v shellu či Perlu. V následujících odstavcích budou popsány příkazy, které je možné použít pro načtení a uložení dat do externích souborů. Při zadávání dále uvedených příkazů je zapotřebí dávat pozor na to, aby se dodržela velikost písmen.

Prvním (a současně i základním) příkazem pro práci se soubory je příkaz G, jehož zkratka je odvozena od anglického slova Get. Toto slovo již samo o sobě dobře vysvětluje význam příkazu – po jeho zadání se do tabulkového procesoru načte zvolený soubor s tabulkou. Pokud je pomocí volby -x nebo příkazem Ctrl+T x povoleno šifrování, jsou data před uložením do tabulky rozšifrována. Další možnost načtení dat skrývá příkaz M (od slova Merge), který slouží ke spojení dvou tabulek. V současné verzi tabulkového procesoru jsou hodnoty na stejných místech tabulky přepsány, v dalších verzích se (snad) dočkáme možnosti relativního přesunu načítané tabulky do jiného umístění.

Opakem předchozích příkazů je příkaz P, který si lze zapamatovat pomocí mnemotechnické pomůcky Put. Po vyvolání tohoto příkazu se celá tabulka uloží do souboru, přičemž je možné použít šifrování, jež se zapíná buď volbou -x na příkazovém řádku nebo příkazem Ctrl+T x. Kromě příkazu P je možné použít i příkaz ZZ, který znalci textového editoru vi jistě velmi dobře znají – nejprve je proveden zápis dat do souboru a poté je tabulkový procesor ukončen. Zápis je však proveden pouze v případě, že data v tabulce jsou změněna. Pokud aplikace nezná název souboru, do kterého se má provést zápis, zobrazí se vstupní řádek, do kterého se jméno souboru zapíše.

Zajímavou alternativou k výše uvedeným příkazům P a ZZ je příkaz W (Write). Tento příkaz taktéž slouží k výpisu tabulky do souboru, tentokrát však ve formátu, který odpovídá způsobu zobrazení tabulky na obrazovce. Jedním z rozdílů je například způsob zápisu vzorců (zde se zapíší hodnoty vzorců, ne jejich textová podoba) a ignorování skrytých sloupců či řádků tabulky. Tento příkaz je možné použít i v režimu přesměrování výstupu do jiného programu, například pro účely publikování na internetu, importu do databáze či tisku tabulky.

Dalším příkazem sloužícím k exportu tabulárních dat, je příkaz T. Formát dat je řízen volbou tblstyle. Pomocí této volby se nastavuje zejména způsob oddělení hodnot jednotlivých buněk v tabulce. Buď je použita dvojtečka (implicitní volba) nebo ampersand (to je vhodné například pro LATEX). I data vytvořená tímto příkazem je možné přesměrovat na vstup další aplikace.

CS24_early

7. Obsah dalšího pokračování tohoto seriálu

V následujícím pokračování tohoto seriálu dokončíme popis ovládání tabulkového procesoru sc. Ukážeme si tvorbu interních i externích maker, pomocí kterých je možné funkčnost tabulkového procesoru prakticky libovolně rozšiřovat.

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.