AWK. Programovací jazyk textových manipulací
|
|
- Jaroslava Doležalová
- před 7 lety
- Počet zobrazení:
Transkript
1 AWK Programovací jazyk textových manipulací
2 Obsah 1 Použití awk Struktura programu Záznamy a položky Výstup BEGIN a END Akce Proměnné, výrazy a přiřazení...7 Příklad Regulární výrazy Relační výrazy Kombinace vzorků Interval určený vzorky Identifikátor položky jako proměnná Příkazy pro řízení toku Pole Funkce Interní proměnné awk Vstupní a výstupní funkce Numerické funkce Řetězcové funkce Časové funkce Řetězcové konstanty Speciální soubory Volby GNU awk Proměnná AWKPATH GNU awk rozšíření Ilustrační příklady...19 Následující kapitolu jsme pro čtenáře Zpravodaje ÚVT MU vybrali z knihy připravované pro nakladatelství Grada Publishing. Nechť poslouží všem, kteří chtějí trošku více proniknout do ovládání operačního systému UNIX, i když awk nacházíme i v jiných systémech. Awk je programovací jazyk pro práci s textem. V textově orientovaném UNIXu jej používáme také pro automatickou konstrukci příkazů, příkazových souborů a předzpracování vstupních dat. Název Awk pochází ze jmen jeho autorů: Alfred V. Aho, Peter J. Weinberger a Brian W. Kernighan. Interpretem tohoto jazyka je příkaz (program) awk. Jeho verzí se však vyskytuje více. Nejvíce funkcí má zřejmě implementace awk z projektu GNU (gawk) a jí je následující text věnován. Tato implementace má všechny rysy podle POSIX a navíc některá rozšíření.
3 1 Použití awk Příkaz se spouští následujícím způsobem: awk program [soubory] Program můžeme také číst ze souboru, potom zadáme: awk -f soubor [soubory] Program awk čte řádky buď ze zadaných souborů nebo ze standardního vstupu. Výstup směřuje na standardní výstup. 2 Struktura programu Program pro awk se tvoří posloupností příkazů ve tvaru: vzorek { akce } vzorek { akce } atd. V každém řádku čteném ze vstupu se hledá určený vzorek. Pokud se najde, provede se s řádkem zadaná akce. Poté, co se použijí všechny vzorky, přečte se ze vstupu další řádek a operace se opakují. Jak vzorek, tak akce se smí vynechat. Nelze však vynechat obojí současně. Pokud není ke vzorku určena akce, potom se vyhovující řádek zkopíruje na výstup. Pro řádek vyhovující více vzorkům bude akce provedena vícekrát. Řádek nevyhovující žádnému ze zadaných vzorků se ignoruje. Pokud vynecháme vzorek, potom se akce provede pro každý načtený řádek. Popis akce se musí uzavřít do složených závorek '{ }'. Tím se popis akce rozpozná od popisu vzorku. 3 Záznamy a položky Vstup, který awk čte, dělíme do záznamů (records) ukončených oddělovačem záznamu. Implicitním oddělovačem záznamu je znak nového řádku. V tomto případě je záznamem jeden řádek. Číslo aktuálního záznamu awk udržuje v proměnné NR. Každý zpracovávaný záznam se dělí do položek (field). Položky se implicitně oddělují bílým místem (mezera, tabulátor), lze však explicitně nastavit jinou hodnotu oddělovače položek. Na jednotlivé položky se odkazujeme $1, $2 atd. Údaj za znakem dolar je číslo (ne jenom číslice). Identifikátorem $0 se odkazujeme na celý záznam. Počet položek v aktuálním záznamu je uložen v proměnné NF. Chceme-li změnit implicitní nastavení oddělovačů záznamů a položek, nastavíme novou hodnotu do proměnné: RS pro oddělovač záznamů a FS pro oddělovač položek. Obsah těchto proměnných můžeme změnit obecně na regulární výraz (v jiných verzích awk pouze
4 na libovolný jeden znak). Oddělovač položek můžeme také nastavit na příkazovém řádku při spouštění awk volbou -Fc, kde c je oddělovač položek. Je-li oddělovač záznamů prázdný, potom se jako oddělovač chápe prázdný řádek na vstupu. Oddělovači položek potom jsou znaky mezera, tabulátor a nový řádek. V proměnné FILENAME je uloženo jméno aktuálního vstupního souboru ('-' v případě standardního vstupu). 4 Výstup Nejjednodušší program, který opíše standardní vstup na standardní výstup, je následující:... awk '{ print }'... Vzorek jsme vynechali, a proto se akce print provede pro všechny vstupující řádky. Akce print bez parametrů opíše celý řádek na výstup. Užitečnější bude vybrat si určité položky a tyto vypsat, např. první dvě položky v opačném pořadí: { print $2, $1 } Takový zápis akce na příkazovém řádku spouštějícím awk musí být nutně uzavřen do dvojice apostrofů, aby nedošlo k expanzi dvojic znaků $1 a $2 na poziční parametry shellu, ale aby se v nezměněné podobě předaly awk. Položky oddělené v zápisu akce print čárkou se na výstupu oddělí aktuálně nastavenou hodnotou oddělovače položek. Položky oddělené pouze mezerou se spojí bez oddělovače. Vyzkoušejme si: { print $2 $1 } Akce print umí vypisovat i obsahy proměnných a textové řetězce, např.: { print "Číslo záznamu=" NR, "Počet položek=" NF, $0 } Takto zadaný program před kompletním záznamem vypíše číslo záznamu a počet položek v aktuálním záznamu. Výstup můžeme rozdělit i do více výstupních souborů. Např. program: { print $1 >"soubor1"; print $2 >"soubor2" } zapíše první položku do souboru soubor1 a druhou položku do souboru soubor2. Lze použít i zápis >>. Potom se do souboru přidává za konec. Jméno souboru může být proměnná, obsah zapisovaný do souboru může být konstanta. Můžeme tedy napsat např.: { print "nesmysl" >>$2 }
5 Jako jméno souboru se použije obsah druhé položky (pozor, nesmí být prázdná). V tomto příkladě bude počet řádků v jednotlivých souborech znamenat četnost slov ve druhém poli. Podobně lze výstup z akce print předat rourou procesu. Např. poslat poštou na adresu 'zaznamenej': { print "mail zaznamenej" } Pokud si tento příklad vyzkoušíme, zjistíme, že se procesu předá celý vstup naráz, tj. nepředává se po jednotlivých záznamech a navíc se předá až po načtení konce vstupu. Pomocí proměnných OFS a ORS můžeme samostatně nastavit oddělovače pouze pro výstup. Obsahem OFS se oddělí vypisované položky a obsahem ORS se oddělí vypisované záznamy. Jazyk awk také poskytuje možnost formátovaných výstupů pomocí akce printf. Tato akce se zapisuje následujícím způsobem: printf formát, výraz, výraz,... Popisovačem formát sdělíme strukturu výstupu a prostřednictvím nadefinované struktury vypíšeme jednotlivé výrazy. V popisovači formát se používá stejná syntaxe jako v jazyce C. Uveďme si ve stručnosti možnosti: Do řetězce formát vkládáme text, který se má vypsat. Na místa, kde se má vypsat výsledek výrazu, vložíme popisovač ve tvaru: %příznaky šířka přesnost typ konverze Prvnímu popisovači (každý popisovač začíná vždy znakem %) se přiřadí výsledek prvního výrazu, druhému popisovači výsledek druhého výrazu atd. Jednotlivá pole popisovače mají tento význam (všechna pole vyjma konverze jsou nepovinná): příznaky se uvádějí žádný nebo více. Možné příznaky jsou: Výstup bude zarovnán vlevo. Bez uvedení tohoto příznaku bude výstup - zarovnán vpravo. Výstup čísla se znaménkem bude znaménko vždy obsahovat. Bez uvedení + tohoto příznaku se uvede pouze případné záporné znaménko. mezer Stejné jako příznak +, jenom se místo kladného znaménka vytiskne mezera. a Pokud se uvede + i mezera, potom + vyhraje. Výstup se převede do alternativní podoby. Podrobnosti jsou uvedeny u popisu # každé konverze. šířka Význam pole záleží na typu použité konverze. přesnost Přesnost uvádí, kolik číslic se má vypsat vpravo od desetinné tečky. Číslu odpovídající přesnosti musí předcházet tečka. Pokud se uvede tečka bez čísla, použije se hodnota 0. Přesnost lze zadat pouze s konverzemi e, E, f, g a G.
6 typ Pole může obsahovat znaky h, l nebo L. Symbol h sděluje, že se argument před výstupem převede na formát short, typ l převede na formát long int a typ L na formát long double. konverze Konverze obsahuje jeden znak, který sděluje, jak se má výraz vytisknout. Na místě konverze se smějí použít tyto symboly: i nebo d Předpokládá se celočíselný argument (int), který se interpretuje jako číslo se znaménkem. Pole šířka může obsahovat minimální počet znaků, na který se číslo vypíše. Implicitně je šířka 1. Význam příznaku # není definován. Celočíselný argument bez znaménka se vytiskne osmičkově. Význam pole šířka je stejný o jako u konverze i. Příznak # zvýší šířku tak, aby první číslice byla nula. Celočíselný argument bez znaménka se vytiskne desítkově. Význam pole šířka je stejný u jako u konverze i. Význam příznaku # není definován. Celočíselný argument bez znaménka se vytiskne šestnáctkově. Na místě číslic se použijí x i znaky abcdef. Význam pole šířka je stejný jako u konverze i. Příznak # zvýší šířku tak, aby první číslice byla nula. Celočíselný argument bez znaménka se vytiskne šestnáctkově. Na místě číslic se použijí X i znaky ABCDEF. Význam pole šířka je stejný jako u konverze i. Příznak # zvýší šířku tak, aby první číslice byla nula. Argument ve dvojnásobné přesnosti double se převede do tvaru '[-]ddd.ddd'. Pole šířka uvádí minimální počet vytisknutých znaků. Pole přesnost může za tečkou specifikovat f počet desetinných míst. Po uvedení příznaku # se vypíše desetinná tečka, i když nenásleduje žádná desetinná číslice. Argument ve dvojnásobné přesnosti double se převede do tvaru '[-]d.dddedd'. Exponent e budou vždy alespoň dvě číslice. Zobrazuje-li se hodnota 0, potom je i exponent nulový. Význam pole přesnost a příznaku # je stejný jako u konverze f. E Stejné jako e s tím rozdílem, že se místo e vypíše E. Stejné jako f nebo e. Konverze e se použije tehdy, pokud exponent je menší než -4 nebo je g větší než přesnost. G Stejné jako g s tím rozdílem, že se místo e vypíše E. Celočíselný argument se převede na typ unsigned char a výsledný znak se vypíše c (tj. ordinální hodnotu převede na ASCII znak). Význam pole přesnost a příznaku # je nedefinován. Předpokládá se, že argumentem je řetězec znaků (char *). Vypíší se znaky řetězce až s po (ale bez) ukončovacího null znaku. Pole šířka představuje maximální počet znaků, které se vypíší. Význam příznaku # je nedefinován. Akce printf negeneruje žádné výstupní oddělovače. Všechny se musejí specifikovat ve formátu. Uveďme si příklad použití: { printf "Průměr=%8.2f, počet pokusů=%10ld\n", $1, $2 } První položka se vytiskne jako číslo v pohyblivé řádové čárce celkem na 8 znaků se dvěma číslicemi za desetinnou tečkou. Druhá položka se vytiskne jako long integer na 10 znaků. Znak \n představuje nový řádek.
7 5 BEGIN a END BEGIN a END jsou speciálními případy vzorků. Vzorek BEGIN specifikuje akci, která se má provést dříve, než se přečte první záznam vstupu. Naopak vzorek END popisuje akci, která se provede po zpracování posledního čteného záznamu. Tímto způsobem můžeme řídit zpracování před a po čtení záznamů. Jako příklad uveďme nastavení specifického oddělovače položek a vytisknutí počtu načtených záznamů: BEGIN { FS = ":" }...zbytek programu... END { print NR } BEGIN musí být jako první vzorek (je-li uveden), END musí být posledním vzorkem. 6 Akce Akce programu awk je posloupnost příkazů vzájemně oddělených novým řádkem nebo středníkem. 7 Proměnné, výrazy a přiřazení Jazyk awk proměnné zpracovává podle kontextu: buď jako numerické hodnoty (v pohyblivé řádové čárce), nebo jako řetězce znaků. Řetězce se na numerické hodnoty převádějí podle potřeby. Potom např. x = 1 je typicky numerický přiřazovací příkaz, ale v příkazu x = "3" + "4" se řetězce převedou na numerické hodnoty a proměnné x se přiřadí numerická hodnota 7. Řetězce, ze kterých nelze získat numerickou hodnotu, mají hodnotu 0. Proměnná, které dříve nebyla přiřazena hodnota, má hodnotu nula. Interním proměnným awk se přiřazují hodnoty automaticky (viz dále). Proto např. program { s1 += $1; s2 += $2 } END { print s1, s2 } může k proměnné s1 přičítat. Proměnná interpretující se jako řetězec bez přiřazené hodnoty obsahuje prázdný řetězec. Potřebujeme-li se ujistit, že proměnná bude chápána jako numerická, přičteme k ní hodnotu 0. Potřebujeme-li naopak proměnnou interpretovat jako řetězec, připojme k ní prázdný řetězec, např.
8 b = 12 "" I když se numerické proměnné zpracovávají a ukládají v pohyblivé řádové čárce, desetinná tečka a číslice za ní se vypisují jenom tehdy, pokud je desetinná část nenulová. Číslo se na řetězec konvertuje podle obsahu proměnné CONVFMT voláním sprintf. Řetězec se na číslo konvertuje voláním atof. Příklad Na závěr první části pojednání o awk uveďme ilustrační příklad: Chceme awk použít na převod výstupu příkazu ls -l do klasického DOSovského tvaru výpisu adresáře, tj. ze tvaru: -rw-r--r-- 1 brandejs staff May 16 21:10 text2.tex do tvaru: text2.tex May 16 21:10 Sestavíme-li kolonu: ls -l grep -v ^total awk -f dirp potom pro awk1 potřebujeme následující program v souboru dirp: BEGIN {print "User is " ENVIRON["LOGNAME"]; print } {printf "%-18s %10i %3s %2i %4s\n", $9, $5, $6, $7, $8; suma = suma + $5 } END {printf " %4i file(s)%11i bytes\n", NR, suma } Příkazem grep -v ^total zrušíme nevýznamný řádek začínající slovem total. Pole ENVIRON popíšeme v pokračování. 8 Regulární výrazy Na místě vzorku se mohou vyskytnout jak základní regulární výrazy (RE) podle definice v příkazu ed, tak i rozšířené regulární výrazy podle definice v příkazu grep -E. Regulární výraz se uzavírá do dvojice lomítek. Např. program /L.*x/ vypíše všechny řádky, které obsahují nejprve znak L a potom x. Hledání vyhovujícího vzorku můžeme omezit např. na určitou položku. Např. program $1 ~ /^[Ll].*x$/ vypíše ty řádky, jejichž první položka začíná písmenem L nebo l a končí písmenem x. Operátor!~ vybere ten řádek, který vyhovující vzorek neobsahuje.
9 9 Relační výrazy Jazyk awk povoluje použití relačních operátorů <, >, ==,!=, >= a <=. Např. program $2 > $ vypíše ty řádky, jejichž druhá položka je alespoň o 100 větší než položka první. Aritmetické operátory se používají stejné jako v aritmetických expanzích shellu. Např. program NF % 2 == 0 vypíše všechny řádky se sudým počtem položek. Relační operátory se mohou používat jak pro aritmetické srovnávání, tak i pro porovnávání řetězců. Proto např. program $1 >= "s" vybere ty řádky, jejichž první položka začíná znakem s, t, u atd. 10 Kombinace vzorků Na místě vzorku se může vyskytnout i jejich kombinace spojená booleovskými operátory && (AND - logický součin), (OR - logický součet) a! (NOT - negace). Proto např. vzorek $1 >= "l" && $1 < "o" && $1!~ /^l.*x$/ způsobí výpis řádku, jehož první položka začíná písmenem l až n a zároveň položka nezačíná l a zároveň nekončí x. Operátory && a se vyhodnocují zleva doprava. Vyhodnocování se zastaví v okamžiku, kdy je výsledek vzorku jasný. 11 Interval určený vzorky Vzorek, kterým se vybírá akce, se může skládat ze dvou vzorků. Potom levý vzorek určuje první řádek a pravý vzorek určuje poslední řádek, pro který se akce provede. Např. vzorek /start/,/stop/ vypíše všechny řádky od řádku vyhovujícího vzorku /start/ po řádek vyhovující vzorku /stop/. Např. program NR == 100, NR == 200 vypíše záznamy (řádky) 100 až Identifikátor položky jako proměnná Identifikátory položek ($1,...) požívají stejných vlastností jako proměnné. Mohou se používat jak v aritmetickém, tak i řetězcovém kontextu. Lze jim také přiřadit hodnotu. Proto lze napsat např.
10 { $2 = NR; print } nebo dokonce { $1 = $2 + $3; print $0 } Odkazy na konkrétní položky se mohou také vyjádřit numerickým výrazem, např. { print $i, $(i+1), $(i+n) } 13 Příkazy pro řízení toku Jazyk awk dovoluje použít příkazy pro řízení toku obvyklé u vyšších programovacích jazyků. Jde o tyto příkazové konstrukce: if (podmínka) příkaz [ else příkaz ] while (podmínka) příkaz do příkaz while (podmínka) for (výraz 1 ; výraz 2 ; výraz 3 ) příkaz for (proměnná in pole) příkaz break continue next delete pole[index] exit [ výraz ] { příkaz[; příkaz... ] } Z výše uvedených konstrukcí můžeme vytvořit např. tyto příklady: { if ($3 > 1000) $3 = "moc velké" print } Následující příklad vytiskne vždy jednu položku na jeden řádek: { i = 1 while (i <= NF) { print $i ++i }} V příkladu jsme si ukázali, že na místě příkazu smí být i více příkazů uzavřených do složených závorek. Následující příkaz provede totéž: { for (i = 1; i <= NF; i++) print $i } První výraz znamená počáteční přiřazení, druhý výraz představuje podmínku a třetí výraz se opakovaně provádí. Příkaz break okamžitě ukončí provádění cyklu while nebo for. Příkaz continue přejde ihned na novou iteraci cyklu.
11 Příkazem next přejdeme na zpracování dalšího řádku (záznamu) vstupu. Příkaz exit je totéž, co načtení konce vstupu (souboru). Do programu pro awk lze vkládat komentáře. Řádek s poznámkou musí začínat znakem #. 14 Pole Pole (arrays) se v awk předem nedeklarují. Jako příklad použití pole uveďme { x[nr] = $0 } Tímto programem načteme celý vstup do jednorozměrného pole a zpracujeme jej až v akci náležející speciálnímu vzorku END. Prvky pole můžeme indexovat také nenumerickými hodnotami, např. řetězci. Ukažme si opět příklad použití /modra/ { x["modra"]++ } /cervena/ { x["cervena"]++ } END { print x["modra"], x["cervena"] } Pole v awk mohou být obecně n-rozměrná. Jejich prvky se totiž ukládají tak, jak je tomu u asociativních pamětí. S prvkem je uložen i jeho index. V případě více prvkových položek se jednotlivé indexy od sebe oddělují oddělovačem \034 (tuto hodnotu lze změnit proměnnou SUBSEP, viz dále). Potom např. i = "A"; j = "B"; k = "C" x[i,j,k] = "hello, world\n" do paměti uloží index ve tvaru A\034B\034C. V příkazu for můžeme použít zvláštní operátor in následovně: for (proměnná in pole)... Operátor in v příkazu for zajistí, že proměnné se budou postupně přiřazovat všechny prvky pole. Prvky jsou přiřazovány obecně v náhodném pořadí. Pokud obsah proměnné změníme nebo pokud současně zpřístupňujeme i jiné prvky pole, nastane zřejmě chaos. Je-li pole vícerozměrné, můžeme pro uložení všech indexů (jako řetězce) použít jednu proměnnou. Operátor in můžeme použít i v příkazech if a while ke zjištění, zda element určitého indexu se v poli nachází. Můžeme napsat if (hodnota in pole) print pole[hodnota] V případě vícerozměrných položek používáme zápis např. if (("A","B","C") in x) print x["a","b","c"] Prvky pole rušíme příkazem delete např. následovně: delete x["a","b","c"]
12 15 Funkce Funkce nebyly do původního awk zahrnuty. Definují se tímto způsobem: function jméno(seznam_parametrů) { příkazy } Při volání funkce se formální parametry nahradí aktuálními. Pole se předávají odkazem, ostatní proměnné hodnotou. Lokální proměnné se ve funkcích definují dost zvláštním způsobem. Je to zapříčiněno faktem, že původní awk pojem lokální proměnné nezná. Lokální proměnné se definují v rámci seznamu_parametrů tak, že se uvedou na konci a oddělí se více mezerami, např.: function f(p, q, a, b) { # proměnné a, b jsou lokální... } /abc/ {... ; f(1, 2);... } Levá kulatá závorka musí následovat bezprostředně za jménem funkce (bez bílého místa). Tím se odstraní případné nejednoznačnosti syntaxe (možnost záměny s konkatenací). Z funkce se smí volat jiná funkce a funkce smějí být rekurzivní. Na místě slova function se smí použít jenom func (rozšíření GNU verze). 16 Interní proměnné awk ARGC Obsahuje počet argumentů zadaných na příkazovém řádku při spouštění awk. Volby se do argumentů nepočítají. ARGIND Index do ARGV na právě zpracovávaný soubor. ARGV Pole argumentů z příkazového řádku. Pole se indexuje od 0 do ARGC-1. Obsah tohoto pole můžeme měnit a tím řídíme výběr souborů ke zpracování. CONVFMT Formát pro konverzi čísel, implicitně '%.6g'. ENVIRON Pole obsahující kopii proměnných prostředí. Indexem je jméno proměnné; vyzkoušejte např. ENVIRON["HOME"]. Obsah jednotlivých prvků pole můžete měnit. Tato změna se však neprojeví na proměnných prostředí předávaných procesům, které jsou z awk spouštěny (např. symbolem ). Tato vlastnost se může v dalších verzích změnit. ERRNO Tato proměnná obsahuje řetězec popisující chybu, která vznikla během poslední operace getline, přesměrování a zavření. FILENAME Jméno právě zpracovávaného souboru nebo '-' pro standardní vstup. Proměnná FILENAME je uvnitř bloku BEGIN nedefinována. FNR Číslo vstupního záznamu v rámci aktuálního souboru. FS
13 Oddělovač položek na vstupu; implicitně mezera. IGNORECASE Proměnná řídí zpracování malých a velkých písmen ve všech operacích s regulárními výrazy. Obsahuje-li proměnná IGNORECASE nenulovou hodnotu, potom se ignorují rozdíly mezi malými a velkými písmeny. Implicitně proměnná obsahuje nulu. NF Počet položek aktuálně zpracovávaného záznamu. NR Počet načtených záznamů. OFMT Výstupní formát čísel, implicitně '%.6g'. OFS Oddělovač položek na výstupu; implicitně mezera. ORS Oddělovač záznamů na výstupu; implicitně nový řádek. RS Oddělovač záznamů na vstupu; implicitně nový řádek. Z řetězce RS se akceptuje pouze první znak (což se může v budoucích verzích změnit). Pokud RS obsahuje prázdný řetězec, potom se záznamy oddělují prázdným řádkem a položky novým řádkem bez ohledu na nastavení FS. RSTART Index prvního vyhovujícího znaku vraceného funkcí match(). Pokud žádný nevyhovuje, potom proměnná obsahuje 0. RLENGTH Délka vyhovujícího řetězce vraceného funkcí match(). Pokud žádný nevyhovuje, potom proměnná obsahuje -1. SUBSEP Znak oddělující jednotlivé indexy při ukládání indexu prvku vícerozměrného pole. Implicitně \ Vstupní a výstupní funkce Následuje souhrnný přehled dosud uvedených i neuvedených vstupních a výstupních funkcí: close(soubor) Zavře soubor (nebo přesměrování). getline Načte další záznam do $0, nastaví se NF, NR, FNR. getline <soubor Načte další záznam do $0 ze souboru soubor, nastaví se NF, NR, FNR. getline var Načte další záznam do var, nastaví se NF, NR, FNR. getline var <soubor Načte další záznam do var ze souboru soubor, nastaví se NF, NR, FNR. next Ukončí se zpracovávání běžného záznamu (řádku). Přečte se další záznam a zahájí se provádění prvního příkazu programu. Pokud se načte konec souboru, provede se blok END (je-li nějaký).
14 next file Ukončí se zpracovávání aktuálně čteného souboru. Další řádek se čte už z dalšího souboru. Obnoví se FILENAME, FNR se nastaví na 1. Přečte se další řádek a zahájí se provádění prvního příkazu programu. Pokud se načte konec souboru, provede se blok END (je-li nějaký). print Vytiskne běžný záznam. print seznam_výrazů Vytiskne uvedený seznam výrazů. print seznam_výrazů >soubor Vytiskne uvedený seznam výrazů do souboru. printf formát, seznam_výrazů Vytiskne uvedený seznam výrazů podle zadaného formátu. printf formát, seznam_výrazů >soubor Vytiskne uvedený seznam výrazů podle zadaného formátu do souboru. system(příkaz_systému) Shell provede zadaný příkaz_systému a převezme se návratový kód. 18 Numerické funkce V awk můžeme používat následující vestavěné aritmetické funkce. atan2(y, x) Vypočte arkustangens y/x a vrátí hodnotu v radiánech. cos(výraz) Vrátí kosinus výrazu v radiánech. exp(výraz) Exponenciální funkce. int(výraz) Odřízne desetinnou část. log(výraz) Přirozený logaritmus. rand() Náhodné číslo mezi 0 a 1. sin(výraz) Sinus. sqrt(výraz) Druhá odmocnina. srand(výraz) Zadaný výraz se použije na "rozmíchání" generátoru náhodných čísel. Není-li výraz uveden, potom se použije aktuální hodnota času. Funkce vrátí předchozí hodnotu výrazu. 19 Řetězcové funkce gsub(r, s, t) Každý podřetězec řetězce t vyhovující regulárnímu výrazu r se nahradí řetězcem s. Funkce vrací počet náhrad. Pokud nebyl zadán řetězec t, použije se $0. index(s, t)
15 Vrátí index podřetězce t v rámci řetězce s nebo 0, pokud se podřetězec nenašel. length(s) Funkce vrátí délku řetězce s nebo řetězce $0, pokud jsme s nezadali. match(s, r) Vrátí se pozice uvnitř řetězce s, od které začíná podřetězec vyhovující RE r. Nenajdeli se, vrátí se 0. Funkce rovněž nastavuje proměnné RSTART a RLENGTH. split(s, a, r) Rozdělí řetězec s do jednorozměrného pole a podle RE r. Pokud r nezadáme, použije se obsah FS. Funkce v řetězci najde všechny výskyty oddělovače podle r. Tyto výskyty rozdělí řetězec na podřetězce a jednotlivé podřetězce se uloží do elementů pole a číslovaných od 1. Funkce vrátí počet podřetězců. sprintf(formát, výrazy) Funkce vytiskne výrazy podle zadaného formátu. Vrátí se výsledný řetězec. sub(r, s, t) Funkce se od gsub() liší tím, že se nahradí pouze první vyhovující řetězec. substr(s, i, n) Funkce vrací n-znakový podřetězec řetězce s začínající na pozici i. Pokud n vynecháme, vezme se zbytek řetězce s. tolower(řetězec) Vrací se řetězec se všemi velkými písmeny převedenými na malá písmena. Jiné znaky než velká písmena zůstanou beze změny. toupper(řetězec) Vrací se řetězec se všemi malými písmeny převedenými na velká písmena. Jiné znaky než malá písmena zůstanou beze změny. 20 Časové funkce Program GNU awk poskytuje možnost doplňovat produkovaný text informací o datu a čase. systime() Funkce předává aktuální čas v počtu sekund od (v POSIX kompatibilních systémech). strftime(formát, čas) Funkce zformátuje údaj čas podle zadaného formátu. Hodnota čas musí být v takovém tvaru, jaký produkuje systime(). Pokud hodnotu čas vynecháme, uplatní se aktuální čas. Řetězec formát se zadává stejně jako ve stejnojmenném knihovním podprogramu. Řetězec formát funkce strftime() obsahuje jak identifikaci časových údajů (začínají znakem %), tak i normální text - ten se opíše beze změn. Časové údaje jsou následující (uživatel by měl mít možnost konfigurovat údaje předávané touto funkcí podle národních zvyklostí): %a Zkratka dne v týdnu. %A Plné jméno dne v týdnu. %b Zkratka názvu měsíce. %B Plný název měsíce. %c Preferovaný způsob zápisu data a času. %d Den v měsíci (desítkově). %H Hodina ve 24hodinovém cyklu (00 až 23). %I Hodina ve 12hodinovém cyklu (01 až 12).
16 %j Den v roce (001 až 366). %m Měsíc (01 až 12). %M Minuta desítkově. %p AM nebo PM. %S Sekunda. %U Týden v roce (desítkově). První týden začíná první nedělí v roce. % Týden v roce (desítkově). První týden začíná prvním pondělím v roce. W %w Den v týdnu (desítkově). Neděle je den 0. %x Preferovaný způsob zápisu data bez času. %X Preferovaný způsob zápisu času bez data. %y Rok bez století (00 až 99). %Y Rok včetně století. %Z Jméno nebo zkratka časové zóny. % % Znak procento. Uveďme si příklad: strftime("dnes je %d. %m. %Y a máme %H:%M hodin.") 21 Řetězcové konstanty Řetězcové konstanty uvnitř programu pro awk jsou řetězce uzavřené do dvojic uvozovek. Uvnitř těchto řetězcových konstant můžeme používat tyto escape posloupnosti: \\ Znak obrácené lomítko. \a Znak 'zvonek' - pípne (alert). \b Backspace - návrat o znak zpět. \f Nová stránka (form feed). \n Nový řádek (new line). \r Návrat vozíku (carriage return). \t Horizontální tabulátor. \v Vertikální tabulátor. \ xhex Znak zapsaný šestnáctkově, např. \x1b je znak ESCAPE. \oct Znak zapsaný osmičkově, např. \033 je znak ESCAPE. \c Literál znaku c. Výše uvedené escape posloupnosti se mohou použít i uvnitř jednoznakového RE reprezentujícího třídu znaků. Např. '/[ \t\f\n\r\v]/' vyhovuje všem znakům typu "bílé místo". 22 Speciální soubory GNU verze awk při přesměrovávání výstupu příkazů print, printf a při čtení pomocí getline interně zpracovává následující speciální soubory. Tyto speciální soubory zprostředkují přístup k otevřeným popisovačům souborů zděděných od rodiče (zpravidla od shellu) nebo poskytnou informace o procesu.
17 /dev/pid Přečtením tohoto souboru obdržíme číslo aktuálně běžícího procesu ukončené znakem nového řádku. /dev/ppid Přečtením tohoto souboru obdržíme číslo rodičovského procesu. /dev/pgrpid Přečtením tohoto souboru získáme skupinové ID aktuálně běžícího procesu. /dev/user Přečtením tohoto souboru obdržíme jeden záznam ukončený novým řádkem. Položky záznamu jsou odděleny mezerou. Položka $1 obsahuje uživatelské ID z volání getuid(), $2 obsahuje uživatelské ID z volání geteuid(), $3 obsahuje ID skupiny z getgid(), $4 je hodnota z getegid(). Případné další položky jsou hodnoty vrácené voláním getgroups(). /dev/stdin Standardní vstup. /dev/stdout Standardní výstup. /dev/stderr Standardní chybový výstup. /dev/fd/n Soubor spojený s otevřeným popisovačem souboru číslo n. Výstup na standardní chybový výstup můžeme poslat např. tímto příkazem: print "Stala se chyba!" > "/dev/stderr" 23 Volby GNU awk Identifikátory voleb podle POSIX začínají jedním znakem minus, volby podle GNU začínají dvěma minusy. V rámci jedné volby -W lze zadat více slovních voleb, stejně tak lze zadat i více voleb -W na jednom řádku. -Ffs nebo --field-separator=fs Nastavení oddělovače položek na vstupu (tj. určení implicitní hodnoty proměnné FS). -v proměnná=hodnota nebo --assign=proměnná=hodnota Uvedené proměnné se přiřadí zadaná hodnota. Takto nastavené proměnné jsou k dispozici již během bloku BEGIN. -f soubor nebo --file=soubor Program se bude číst ze zadaného souboru. Těchto voleb může být na příkazovém řádku více. -W compat nebo --compat Program GNU awk se spustí v režimu kompatibility s klasickým awk. Všechna GNU rozšíření jsou vypnuta. -W copyleft nebo -W copyright nebo --copyleft nebo --copyright Na standardní chybový výstup se vypíše GNU copyright. -W help nebo -W usage nebo --help nebo --usage Na standardní chybový výstup se vypíše krátká nápověda k programu. -W lint nebo --lint
18 Program upozorní na ty programové konstrukce, které nemusejí jiné implementace awk zpracovat. -W posix nebo --posix Zapne se kompatibilní režim s následujícími omezeními: Nerozpoznají se escape posloupnosti \x. Nerozpozná se synonymum func pro function. Na místo operátorů ^ a ^= se nesmějí použít operátory ** a **=. -W source=program nebo --source=program Jako argument této volby se zadává text programu pro awk. Význam spočívá v možnosti číst v rámci jednoho spuštění awk program jak ze souboru (např. knihovnu funkcí), tak i z příkazového řádku (vlastní krátký program). V tomto případě nelze v rámci volby -W zadat volbu další. -W version nebo --version Na standardní chybový výstup předá informaci o verzi aktuálního awk. -- Oznamuje konec zadávání voleb. 24 Proměnná AWKPATH Do proměnné prostředí AWKPATH můžeme obvyklým způsobem nastavit seznam cest k adresářům, které se budou procházet při hledání programů (tj. uvedených za volbou -f). Pokud proměnná neexistuje, použije se implicitní hodnota:.:/usr/lib/awk:/usr/local/lib/awk 25 GNU awk rozšíření Na závěr shrneme rozšíření GNU verze awk oproti definici POSIX (viz též volba -W compat): Escape posloupnosti \x Funkce systime() a strftime() Rozpoznávání jmen zvláštních souborů Proměnné ARGIND, ERRNO, AWKPATH a IGNORECASE Příkaz 'next file'
19 26 Ilustrační příklady Příklad 1: Mějme textovou databázi předmětů, ze kterých si student při zápisu do semestru vybírá. Jednotlivé položky oddělujeme dvojtečkou. Učitel je v databázi jednoznačně identifikován svým přihlašovacím jménem. Pokud je více než jeden učitel, pak jsou jejich přihlašovací jména oddělena čárkou. Databáze nechť má tento tvar: P000:3:zk:Architektura počítačů:brandejs P004:2:zk:UNIX:brandejs I011:2:zk:Sémantiky programovacích jazyků:zlatuška Úkol zní: vypsat obsah databáze v "čitelném" tvaru a převést přihlašovací jméno na příjmení a první písmeno křestního jména. Pro tento účel si vytvořme např. soubor logins s následujícím obsahem: adelton:jan:pazdziora brandejs:michal:brandejs kas:jan:kasprzak kron:david:košťál zlatuska:jiří:zlatuška Pro převod přihlašovacího jména na příjmení pak použijeme jednorozměrné pole, kde indexem bude přihlašovací jméno a obsahem zkonstruovaná dvojice příjmení a křestního jména. Pole naplňujeme pouze jednou, a to v části BEGIN. Databáze předmětů nechť se načítá ze standardního vstupu.... awk -F':' 'BEGIN { while ( getline <"logins" == 1 ) { logins[$1]=sprintf("%s %1.1s.", $3, $2) } } { pocet=split($5,loginy,",") for (i=1; i <= pocet; i++) { if (i == 1) last = logins[loginy[i]] else last = last ", " logins[loginy[i]]; } printf("%-5s %-50.50s %1s %2s %s\n",$1,$4,$2,$3,last) }' Příklad 2: Následujícím programem spočítáme počet všech různých slov v textu: BEGIN { FS="[^a-zA-Z]" } { for (i=1;i<=nf;i++) words[$i] = "" } END { delete words[""] # prázdné položky nepočítáme for (i in words) sum++ print "V textu bylo " sum " různých slov" } Příklad 3: A poslední vzorový program vykonává totéž co příkaz wc: {words+=nf; chars+=1+length($0)} END {print NR,words,chars}
20
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
awk programovatelný filtr
awk programovatelný filtr Spouštění: Awk vzor {akce} nebo awk f prg_soubor [ soubory ] čte řádky ze zadaných souborů, nebo ze standardního vstupu výstup směřuje na standardní výstup Struktura programu:
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
Programovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>
9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include int main(void) { int dcislo, kolikbcislic = 0, mezivysledek = 0, i; int vysledek[1000]; printf("zadejte
Úvod do programování. Lekce 1
Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -
Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:
Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury
Algoritmizace a programování
Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech
Algoritmizace a programování
Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,
A7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk
A7B38UOS Úvod do operačních systémů 6. Cvičení Příkazy sed a awk sed sed [přepínače] 'příkaz' [soubory] sed [přepínače] -f skript [soubory] Stream editor - edituje neinteraktivně jeden nebo více souborů.
VISUAL BASIC. Práce se soubory
VISUAL BASIC Práce se soubory Práce se soubory 1/2 2 Vstupní data pro programy bývají uloženy do souborů Vstupy pro výpočet, nastavení vzhledu aplikace Výsledky práce programu je potřeba uchovat uložit
Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %
vstup a výstup na konzolu - vstupním zařízením je klávesnice, výstupním monitor (přístup jako k sériovým zařízením) - spojení s konzolami je nastaveno automaticky na začátku programu - ke konzole je možné
- jak udělat konstantu long int: L long velka = 78L;
Konstanty (konstatní hodnoty) Např.: - desítkové: 25, 45, 567, 45.678 - osmičkové: 045, 023, 03 vždy začínají 0 - šestnáctkové: 0x12, 0xF2, 0Xcd, 0xff, 0xFF - jak udělat konstantu long int: 245566553L
1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5
Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5
- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku
Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová
PROGRAMOVÁNÍ V SHELLU
PROGRAMOVÁNÍ V SHELLU Prostředí, jazyk, zdrojový kód chceme-li posloupnost jistých příkazů používat opakovaně, případně z různých míst adresářové struktury, můžeme tuto posloupnost uložit souboru, který
for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky
Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové
Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na
Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na obrazovku zpomaluje tím, že zobrazíme okno (proužek) o stavu
Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)
Základy jazyka C Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační záležitosti Konzultace Pracovna 5.076 Úterý 15:00 16:30 Emailem martin.kauer@upol.cz Web předmětu http://tux.inf.upol.cz/~kauer/index.php?content=var&class=zp1
Tvorba výrazu: speciální znaky shellu se uvádějí do apostrofů jednotlivé části výrazu se oddělují mezerou
Příkaz expr Tvorba výrazu: speciální znaky shellu se uvádějí do apostrofů jednotlivé části výrazu se oddělují mezerou výraz1 výraz2 vrátí první výraz, pokud není nulový a není prázdným řetězcem, jinak
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
Formátové specifikace formátovací řetězce
27.2.2007 Formátové specifikace formátovací řetězce - je to posloupnost podle které překladač pozná jaký formát má výstup mít - posloupnosti začínají znakem % a určující formát vstupu/výstupu - pokud chcete
Jazyk C# a platforma.net
Jazyk C# a platforma.net Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe jazyka C# - 1. část BI-DNP Evropský sociální fond
Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
Přednáška 4. Regulární výrazy. Filtry grep, sed a awk. Úvod do Operačních Systémů Přednáška 4
1 Přednáška 4 Regulární výrazy. Filtry grep, sed a awk. 2 grep grep [přepínače] vzor [soubory] Implicitně vypíše na standardní výstup řádky, které obsahují zadaný vzor. Vzor může být definován základním
Program grep. predn_05.doc
Program grep je filtr, který předává na výstup řádky obsahující resp. neobsahující zadaný vzor. Název grep je zkratka pro skupinu příkazů ex editoru: globally search for regular expression and print result
EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI
EVROPSKÝ SOCIÁLNÍ FOND Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Úvod do PHP PHP Personal Home Page Hypertext Preprocessor jazyk na tvorbu dokumentů přípona: *.php skript je součást HTML stránky!
Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru
Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru Textové řetězce V jazyce C neexistuje typ proměnné, který by byl určen výhradně pro ukládání textu V jazyce C používáme
PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.
PHP - úvod Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky. Klíčové pojmy: PHP, webový prohlížeč, HTTP, FTP Základní pojmy služba WWW = 1990 první prototyp serveru, od roku 1994
Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.
Přednáška 7 Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. 1 Příkaz expr výraz Celočíselná aritmetika I Zašle na standardní výstup vyhodnocení výrazu
NPRG030 Programování I, 2016/17 1 / :58:13
NPRG030 Programování I, 2016/17 1 / 31 10. 10. 2016 10:58:13 Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE NPRG030 Programování
Regulární výrazy. Filtry grep, sed a awk.
Přednáška 5 Regulární výrazy. Filtry grep, sed a awk. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2011 Příprava studijního programu Informatika je podporována projektem
Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
NPRG030 Programování I, 2010/11
Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE když X, Y jsou (číselné) výrazy, potom X = Y X Y X < Y X > Y X = Y jsou
2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv copyright To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího (aby
Proměnné a parametry. predn_08.odt :00:38 1
Proměnné a parametry predn_08.odt 16.04.2007 14:00:38 1 Proměnné a parametry Jméno proměnné - identifikátor [a-za-z_][a-za-z_0-9]* Hodnota proměnné textový řetězec celočíselná hodnota - ne v sh Přesun
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1
24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE
Funkce, podmíněný příkaz if-else, příkaz cyklu for
Funkce, podmíněný příkaz if-else, příkaz cyklu for Definice funkce Funkce je pojmenovaná část programu, kterou lze dále zavolat v jiné části programu. V Pythonu je definována klíčovým slovem def. Za tímto
5 Přehled operátorů, příkazy, přetypování
5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování
2. cvičení z ZI1 - Excel
Doc.Ing. Vlastimil Jáneš... janes@fd.cvut.cz 2. cvičení z ZI1 - Excel O Excelu - organizace listů : 1 list : max. 65 536 řádků a 256 sloupců, tj. 16 777 216 buněk. Sloupce : A, B,.Z, AA, AB,. IU, IV (26
C2110 Operační systém UNIX a základy programování
C2110 Operační systém UNIX a základy programování 5. lekce Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Masarykova univerzita, Kotlářská 2, CZ-61137 Brno C2110 Operační systém
Tabulkový procesor. Základní rysy
Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupních
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné
PSK3-9. Základy skriptování. Hlavička
PSK3-9 Název školy: Autor: Anotace: Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3 Ing. Marek Nožka Základy skriptování v unixovém shellu Vzdělávací oblast: Informační a komunikační technologie
Paměť počítače. alg2 1
Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových
BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Vstup, výstup BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních technologií České
Programování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Operátory a příkazy BI-JSC Evropský sociální fond
Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru
Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru Čtení dat ze souboru FILE *f = NULL; char str[10] = ""; float a = 0.0, b = 0.0; Soubor otevíráme v režimu pro čtení "r" f = fopen("/home/martinp/testdata/test1.txt",
for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }
Pole Kdybychom v jazyce C++chtěli načíst větší počet čísel nebo znaků a všechny bylo by nutné všechny tyto hodnoty nadále uchovávat v paměti počítače, tak by bylo potřeba v paměti počítače alokovat stejný
KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM
KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM CÍLE KAPITOLY Využívat pokročilé možnosti formátování, jako je podmíněné formátování, používat vlastní formát čísel a umět pracovat s listy. Používat
X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka
X36UNX 16 Numerické výpočty v sh příkazy expr, bc, dc Zdeněk Sojka sojkaz1@fel.cvut.cz dc desk calculator - zadávání příkazů postfixově - data se ukládají do stacku - příkazy obyčejně pracují s jedním
Operační systémy. Cvičení 3: Programování v C pod Unixem
Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené
Stručný návod k programu Octave
Stručný návod k programu Octave Octave je interaktivní program vhodný pro technické výpočty. Je nápadně podobný programu MATLAB, na rozdíl od něho je zcela zadarmo. Jeho domovská vebová stránka je http://www.octave.org/,
Racionální čísla, operátory, výrazy, knihovní funkce
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Racionální čísla,
Programy na PODMÍNĚNÝ příkaz IF a CASE
Vstupy a výstupy budou vždy upraveny tak, aby bylo zřejmé, co zadáváme a co se zobrazuje. Není-li určeno, zadáváme přirozená čísla. Je-li to možné, používej generátor náhodných čísel vysvětli, co a jak
DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v
DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve
Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8
Přednáška 8 Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. 1 Proměnné Jména nových proměnných by neměly kolidovat se jmény předdefinovaných proměnných.
Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false
Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární
Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C
Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace
02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox
02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů
Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory
Jazyk C Program v jazyku C má následující strukturu: Direktivy procesoru Globální definice (platné a známé v celém programu) Funkce Hlavička funkce Tělo funkce je uzavřeno mezi složené závorky { Lokální
dovolují dělení velkých úloh na menší = dekompozice
Podprogramy dovolují dělení velkých úloh na menší = dekompozice Příklad: Vytiskněte tabulku malé násobilky ve tvaru XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X 1 2 3 4 5 6 7 8 9 10 X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky
Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Vstup, výstup BI-PA1
Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných
Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro
Algoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo
Operátory, výrazy Tomáš Pitner, upravil Marek Šabo Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v
Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných
Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných jakési nádoby na hodnoty jsou různých typů při běžné
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
Regulární výrazy. Vzory
Regulární výrazy Regulární výrazy jsou určeny pro práci s textovými řetězci, jsou součástí J2SDK až od verze 1.4, v předchozích verzích je potřeba použít některou z externích knihoven, např. knihovnu ORO
5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina
5a. Makra Visual Basic pro Microsoft Escel Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty Zde bude stránka o cyklických odkazech a iteracích.
Sada 1 - Základy programování
S třední škola stavební Jihlava Sada 1 - Základy programování 07. Základní příkazy vstup a výstup hodnot Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284
4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody
4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty
Základy algoritmizace a programování
Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 19. září 2011 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Doporučená literatura web: http://marian.fsik.cvut.cz/zapg
Základy jazyka C. Základy programování 1 Tomáš Kühr
Základy jazyka C Základy programování 1 Tomáš Kühr Organizační záležitosti Konzultace Osobně v pracovně 5.043 Pondělí 15.00 16.00 Úterý 14.00 16.00 Čtvrtek 13.00 15.00 Pátek 9.30 11.30 Něco jde vyřešit
6. Příkazy a řídící struktury v Javě
6. Příkazy a řídící struktury v Javě Příkazy v Javě Příkazy v Javě Řídicí příkazy (větvení, cykly) Přiřazovací příkaz = Řízení toku programu (větvení, cykly) Volání metody Návrat z metody - příkaz return
Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů
Začínáme vážně programovat Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Podmínky a cykly Dokončení stručného přehledu řídících struktur jazyka C. Složený příkaz, blok Pascalské
IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C
Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace
Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
Znak Slovy Popis Zdroj Výsledek Formátova cí řetězec v CZ verzi Excelu
řetězec v Všeobecný Odpovídá obecnému formátu - čísla i text bude zarovnán dle kontextu (při nastavení češtiny tedy Excel zarovná text doleva, čísla a časové údaje doprava). Tento formát nemusíme zadávat
Programování v jazyce C pro chemiky (C2160) 9. Práce s PDB soubory
Programování v jazyce C pro chemiky (C2160) 9. Práce s PDB soubory Jednoduché (základní) datové typy Jazyk C obsahuje několik základní datových typů: int celá čísla (integer) char znak (character) float
Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu
Vytěžování dat, cvičení 1: Úvod do Matlabu Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Fakulta elektrotechnická, ČVUT 1 / 24 Úvod do Matlabu Proč proboha Matlab? Matlab je SW pro
Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16
Jazyk C práce se soubory 1 Soubory Použití souborů pro vstup většího množství dat do programu (uživatel nezadává z klávesnice ručně tisíce údajů...) pro uložení většího množství výsledků, např. k pozdějšímu
Vstup a výstup datové proudy v C
Vstup a výstup datové proudy v C Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 24. října 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Vstup a výstup 24. října 2011 1 / 37 Přehled, rozdělení
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,
Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;
Programovací jazyk C(++) static struct vm_area_struct * unmap_fixup(struct mm_struct *mm, struct vm_area_struct *area, unsigned long addr, size_t len, struct vm_area_struct 1. *extra) Základy { struct
Datové typy strana 29
Datové typy strana 29 3. Datové typy Jak již bylo uvedeno, Java je přísně typový jazyk, proto je vždy nutno uvést datový typ datového atributu, formálního parametru metody, návratové hodnoty metody nebo
Rozšíření ksh vůči sh při práci s proměnnými
Rozšíření ksh vůči sh při práci s proměnnými (X36UNX, Jan Skalický, 2006) Pole homogenní lineární struktura implicitn ě s číselným rozsahem index ů 0...1023 (někde 4095) implicitn ě řetězcov ě orientovaná
ZPRO v "C" Ing. Vít Hanousek. verze 0.3
verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout
Racionální čísla, operátory, výrazy, knihovní funkce
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Racionální čísla, operátory, výrazy, knihovní funkce BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík
DUM 06 téma: Tvorba makra pomocí VBA
DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie
24. XML. Aby se dokument XML vůbec zobrazil musí být well-formed (správně strukturovaný). To znamená, že splňuje formální požadavky specifikace XML.
24. XML Úvod Značkovací jazyk XML (extensible Markup Language) vznikl ze staršího a obecnějšího jazyku SGML (Standard Generalized Markup Language). XML byl vyvinut konsorciem W3C, aby poskytl standardní
Proměnná a její uložení v paměti
Proměnná a její uložení v paměti Počítačová paměť - řada buněk uložených za sebou, každá buňka má velikost 1 bajt (byte, B) - buňky jsou očíslovány, tato čísla se nazývají adresy Proměnná - data, se kterými
Datové typy pro reálná čísla
Datové typy pro reálná čísla KAPITOLA 3 V této kapitole: Vlastnosti datových typů pro reálná čísla v jazyce C/ C++ Vstupně/výstupní operace z pohledu reálných čísel Aritmetické operace s reálnými čísly
Operační systémy. Cvičení 4: Programování v C pod Unixem
Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné
2 Datové typy v jazyce C
1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,
Systém souborů (file system, FS)
UNIX systém souborů (file system) 1 Systém souborů (file system, FS)! slouží k uchování dat na vnějším paměťovém médiu a zajišťuje přístup ke struktuře dat! pro uživatele možnost ukládat data a opět je
Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty
Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)