1-Úvod. Automaty a gramatiky(bi-aag) Plán přednášky. 8. Regulární výrazy - aplikace

Rozměr: px
Začít zobrazení ze stránky:

Download "1-Úvod. Automaty a gramatiky(bi-aag) Plán přednášky. 8. Regulární výrazy - aplikace"

Transkript

1 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 2/51 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 4/51 1-Úvod Automaty a gramatiky(bi-aag) 8. Regulární výrazy - aplikace Jan Holub Katedra teoretické informatiky Fakulta informačních technologií ČVUT v Praze Jak popsat množiny řetězců? Omezený regulární výraz (UNIX shell) Regulární výraz (RE) Rozšířený regulární výraz (ERE) Regulární výraz - jak poznat, o kterém typu se mluví: Regular expression = regulární výraz podle Kleena Regex, Regexp = posixový a perlový regulární výraz c Jan Holub, 2011 Evropský sociální fond. Praha & EU: Investujeme do vaší budoucnosti BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 1/51 Plán přednášky 1. Úvod jak popisovat množiny řetězců 2. Co je regulární výraz a co ještě není Shell pattern matching vs. grep, perl 3. Plnohodnotné regulární výrazy 4. Definice, příklady Posix RE BRE, ERE 5. Definice, příklady Perl RE 6. Shody a rozdíly vůči teorii (Kleene) 7. Podpora RE v programovacích jazycích 8. Implementace regexp enginů 1-Úvod Jak popsat a rozhodovat množiny řetězců? BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 3/51 Omezený regulární výraz (UNIX shell): pattern matching Plnohodnotný regulární výraz: konečný automat Rozšířený reguálrní výraz: matching engine s backtrackingem

2 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 6/51 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 8/ Coještěnení RE 2-UNIXShell Pattern UNIX shell pattern Popisuje množiny řetězců nad abecedou T, které jsou vlastní podmnožinou množiny regulárních jazyků (tzn. není tak silný, jako RE). Používá speciální metasymboly pro vyjádření libovolného řetězce, libovolného symbolu a libovolného symbolu ze zadané množiny Pattern je posloupnost symbolů a metasymbolů Použité metasymboly: [abc0-9], [ˆd-z] : popisuje množinu povolených, resp. zakázaných symbolů (pro zákaz se vedle ˆ dá použít také! ). Umožňuje pomocí pomlčky popsat rozsah.? : otazník znamená jakýkoli symbol : hvězdička znamená libovolný řetězec \ : escape symbol pro umožnění vkládání [,?,, \ do patternu Řetězec "vyhovuje"patternu, pokud se symbol po symbolu dá namapovat na symboly patternu BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 5/51 2-UNIXShell Pattern BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 7/51 2-UNIXShell Pattern Použité metasymboly: [ ], [ˆ ]? \ Příklady množin řetězců a patternů, které je popisují: řetězce pattern a.txt a.txt a.txt, b.txt [ab].txt a.<3 znaky> a.??? a na začátku a.txt na konci a.txt libovolný řetězec

3 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 10/51 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 12/51 2-UNIXShell Pattern 2-POSIX třídysymbolů Příklady patternů a množin řetězců, které jsou popsány: pattern řetězce main.c [a-ce].c?x?.txt Třídy symbolů, které nahrazují rozsahy v závorkách. Posix třídy jsou na rozdíl od rozsahů přesně definovány a je vhodné je používat, pokud vyžadujeme spolehlivé vyhodnocení patternu. Třídy jsou popsány pomocí [: name :] a samotné se dají použít jen uvnitř hranatých závorek. [[: alpha :]] je to samé co [a-za-z] [[: alnum :]] je to samé co [[: alpha :]01 9] [: alpha :] [: alnum :] [: ascii :] [: blank :] [: cntrl :] [: digit :] [: graph :] [: lower :] [: print :] [: punct :] [: space :] [: upper :] [: word :] [: xdigit :] BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 9/51 2-UNIXShell Pattern BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 11/51 2-UNIXShell Pattern Příklady patternů a množin řetězců, které jsou popsány: pattern řetězce main.c main.c [a-ce].c a.c, b.c, c.c, e.c?x? axa, axb, axc,....txt cokoli na začátku a.txt na konci libovolný řetězec Pokud chceme popsat řetězec, co obsahuje znak(y), \, [,?, potřebujeme před tyto symboly v patternu vložit escape symbol \ nebo použít Nadto pozor na způsob, jakým shell interpretuje neescapované metasymboly: ls [a].txt: existuje-li a.txt, nalezne pouze jej. ls [a].txt: nalezne [a].txt, pokud tento existuje a zároveň neexistuje a.txt

4 2-Pattern-poznámky na závěr BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 14/ Plnohodnotné regulární výrazy BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 16/51 Definice významu metasymbolů se mezi Unixovými nástroji liší v závislosti na použití. Některé například vyhledají s pomocí řetězce obsahující / a jiné nástroje zase ne. Při vyhledávání souborů patterny a? nenaleznou soubory začínající tečkou. Použijte. Vyhledávanému vzorku se často říká glob Dělení symbolů v regulárních výrazech: Literály (ordinary characters) Metasymboly (special characters) 1. Kotvy (anchors) 2. Zástupné symboly (character sets) 3. Modifikátory a kvantifikátory (modifiers, quantifiers) Escape symbol BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 13/ Plnohodnotné regulární výrazy BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 15/ Plnohodnotné regulární výrazy V praxi se regulární výrazy používají velmi běžně. Přímo vycházejí z Kleeneovy teorie a podle potřeb ji dále rozvíjejí. Vyvinuly se dva hlavní standardy: Posixové základní a rozšířené RE (BRE a ERE) Perlové regexpy Význam symbolů v regulárních výrazech: Literály: znamenají samy sebe Metasymboly: mají speciální význam 1. Kotvy: určují pozici výskytu v textu 2. Zástupné symboly: znamenají libovolný literál z dané množiny 3. Modifikátory a kvantifikátory: Umožňují operace na regulárních výrazech jako je sjednocení nebo iterace Escape symbol: dělá z metasymbolu literál

5 3 - Plnohodnotné regulární výrazy BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 18/51 4-BRE-Zástupné symboly BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 20/51 Řetězec x je výskyt regulárního výrazu r, pokud řetězec x patří do množiny řetězců definované regulárním výrazem r. Popis množiny symbolů v BRE: x symbol x. jakýkoli symbol [abc] a nebo b nebo c [a-c] a nebo b nebo c [ˆa-c] jakýkoli symbol kromě a, b a c [[: alpha :][: space :]#] jakýkoli symbol abecedy, mezerový symbol nebo # BRE akceptuje posixové třídy symbolů BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 17/ PosixovéBRE BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 19/51 4-BRE-Kvantifikátory BRE = Basic Regular Expressions Základní norma pro UNIXové regulární výrazy Tuto normu splňuje většina UNIXových nástrojů, které pracují s RE. Kvantifikátory následují za regulárním výrazem. Odpovídají operaci iterace, ale umí být i jemnější: \{m, n\} \{m, \} \{m\} 0 nebo víc výskytů za sebou od m po n výskytů za sebou m a víc výskytů za sebou m výskytů za sebou \ před { a } je nutný.

6 4 - BRE-Kvantifikátory-příklady BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 22/51 4-BRE-Kotvy-příklady BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 24/51 Kvantifikátory následují za regulárním výrazem. Odpovídají operaci iterace, ale umí být i jemnější: Regulární výraz popsané řetězce ba b, ba, baa, baaa,... [ba] libovolně dlouhý řetězec symbolů a a b \(ba\) [ba]\{1, 2\} ε, ba, baba, bababa b, a, bb, ba, ab, aa a\{3, \} aaa, aaaa, aaaaa,... [ba]\{2\} bb, ba, ab, aa Kotvy slouží k popisu pozice výskytu na řádku. Regulární výraz Nalezne Zavrhne ˆkop kopáč Franta známý kopytník chod$ dlouhý podchod pochod na jih \<kol kolo okolo tok\> roztok stokrát \ před { a } je nutný. BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 21/51 4-BRE-Kotvy BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 23/ BRE-Speciálníznaky Kotvy slouží k popisu pozice výskytu na řádku. Kotva Význam ˆ Začátek řádku $ Konec řádku \< Začátek slova (nestandardní, původem z vi) \> Konec slova (nestandardní, původem z vi) \ před < a > je nutný. Další znaky v BRE: Znak Význam \(\) Vytvoření skupiny; skupiny jsou implicitně číslovány, aby se na ně dalo odkazovat \čislo Opakovaný výskyt vzorku z odpovídající závorky (mechanismus pro pamatování!) \n Znak nové řádky (nestandardní; používá například sed) \ před ( a ) je nutný.

7 4 - BRE-Speciálníznaky BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 26/51 4-BRE-různý významescape \ BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 28/51 Další znaky v BRE: Regulární výraz \(hrad\) \(hrad \)\1 popsané řetězce hrad hrahra, hradhrad, hraddhradd,... Pokud je znak \ před, [,., \, ˆ, $, "vypíná" speciální význam těchto znaků. Pokud je znak \ před (, ), <, >, {, }, "zapíná" speciální význam těchto znaků. Co popisuje [\ \[ ]\{2\}? \ před ( a ) je nutný. BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 25/51 4-BRE, ERE-POZOR! BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 27/ PosixERE Veškeré RV, pokud není řečeno jinak, jsou "hladové" (greedy). To znamená, že se budou snažit najít nejdelší možný vzorek: Text: Pattern: Nalezený vzorek: aabcaabcde a. b aabcaab BRE dovolují popisovat některé neregulární jazyky a zároveň neumí všechny regulární Chybí možnost popsat alternativu - sjednocení BRE nejednotně používají escape znak Proto existují Extended Regular Expressions (ERE), které se (s diskutabilní úspěšností) snaží řešit problémy BRE

8 4-ERE-změny oprotibre BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 30/51 4-ERE-změny oprotibre BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 32/51 Ruší se následující speciální znaky: \{\} \<\> \(\) \cislo Nové metasymboly pro skupinu: ( ) skupinové závorky alternativa ve skupině ERE (ab bc cd) (hrad zamek) popsaná množina řetězců {ab, bc, cd} {hrad, zamek} Kvantifikátory - příklady: Regulární výraz popsané řetězce ba b, ba, baa, baaa,... ba+ ba, baa, baaa,... ba? b, ba [ba] libovolně dlouhý řetězec symbolů a a b (ba) ε, ba, baba, bababa [ba]{1, 2} b, a, bb, ba, ab, aa a{3, } aaa, aaaa, aaaaa,... [ba]{2} bb, ba, ab, aa BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 29/51 4-ERE-změny oprotibre BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 31/ BREaERE-výskyt Nové kvantifikátory: kvantifikátor význam 0 nebo víc opakování + 1 a víc opakování? 0 nebo 1 výskyt {m, n} od m po n výskytů {m, } m a víc výskytů {m} m výskytů Výskyt v UNIXových nástrojích: BRE ERE vi awk more nawk ed egrep grep grep -E sed sed -r......

9 4-BREaERE - kontroverze BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 34/51 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 36/51 Ačkoli se norma pokouší definovat "správné" regulární výrazy, nepředkládá přehledný a snadno použitelný formalismus Téměř každý UNIXový nástroj používá vlastní variantu regulárních výrazů - je důležité otestovat RE před jeho pracovním nasazením Zjištění, zda řetězec $string obsahuje výskyt regulárního výrazu regex: $string =~m/regex/; Náhrada prvního výskytu za jiný: $string =~s/regex/replacement/; Náhrada všech výskytů za jiný: $string =~s/regex/replacement/g; BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 33/51 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 35/51 Perl je skriptovací jazyk (počátek 90. let) Má přímo zabudovanou podporu regulárních výrazů Staví na posixových RE, rozšiřuje je a zpříjemňuje práci s nimi Některá rozšíření způsobila, že perlový regexp popisuje striktně více než třídu regulárních jazyků (podobnost s BRE) Za standard se bere Perl 5.10 regexp Perl navazuje na ERE a přidává další funkcionalitu: Opět zavádí pamatování a odkazování pomocí \cislo Lazy kvantifikátory (vedle greedy) Umožňuje lookahead, lookbehind Vlastní, "shorthand" třídy symbolů Nové kotvy

10 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 38/51 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 40/51 Sjednocené metasymboly: { }[ ]( )ˆ$. +?\ mají speciální význam Pokud je chceme vyhledat jako literály, musí jim předcházet \ Escape sekvence pro ASCII znaky: \n, \r, \t, \x[hexa], \u[unicode], Modifikátory vyhledávání výskytu regulárního výrazu: i = ignore case g = v případě nahrazování vyhledat a nahradit všechny výskyty. Při opakovaném hledání hledat od posledního výskytu.... BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 37/51 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 39/51 Sjednocené metasymboly - příklady: Regulární výraz popsané řetězce /(abc){1, 2}/ abc, abcabc /[ab]?d/ d, ad, bd /ˆ. $/ jakákoli celá řádka /a+b c+/ ab, aab,..., c, cc,... /\ \\\+/ \+ Příklady: Regulární výraz /hi\nworld/ popsané řetězce hi world /entry\t\x61\x74/ entry at /hello/i hello, Hello, hello,...

11 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 42/51 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 44/51 Vkládání proměnných do regulárních výrazů: $var = hr; /${var}ad/ nalezne výskyt řetězce hrad Nové třídy proměnných: \d, \D = [0-9], [ˆ0-9] \s, \S = [mezerové znaky], [ˆ\s] Zpětná reference na výskyt uzávorkovaný v regulárním výrazu pomocí ( ): Zevnitř regulárního výrazu: \<pořadové číslo otevírací závorky> Vně regulárního výrazu: $<pořadové číslo otevírací závorky> Závorka, která si nemá pamatovat, má formu (? : regex) \w, \W = [znaky slov], [ˆ\w] Nová kotva \b nalezne hranice slov. BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 41/51 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 43/51 Příklady: Regulární výraz popsané řetězce $x = int; /${x}\s+\w+; / int a;, int b;, int ab;,... /\b\d+\b/ číslo (jen z číslic) Lookahead - pozitivní i negativní (za výskytem se má něco vyskytovat, nebo nesmí vyskytovat). (?=regexp) (?!regexp) Lookbehind - pozitivní i negativní (před výskytem se má něco vyskytovat, nebo nesmí vyskytovat). Regulární výraz použitý v lookbehindu musí mít fixní délku výskytu. (?<=regexp) (?<!regexp)

12 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 46/51 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 48/51 Příklady: Regulární výraz popsané řetězce /([abc]+)d\1/ ada, bdb, cdc, aadaa, abdab,... proměnná $1: a, b, c, aa, ab,... /(? : so ra)k/ sok, rak (pro připomenutí?) /auto(?=mat)/ auto (po kterém musí následovat mat ) /(?<=pod)chod/ chod (který musí předcházet pod ) Příklad: budeme vyhledávat v textu abcabcabcd regexp výskyt abc d ano (abc) (abc) d ano, $1 = abcabcabc, $2 = (abc)?(abc) d ano, $1 =, $2 = abcabcabc (abc) +(abc) d ano, $1 = abcabcabc, $2 = (abc) +(abc)+d ne BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 45/51 BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 47/51 6-Shody arozdílyvůči teorii Greedy, lazy a possessive kvantifikace Všechny kvantifikátory jsou ze základu greedy Pokud chceme lazy kvantifikátor, napíšeme za kvantifikátor?, pro possessive + greedy lazy possessive? + + +? ?...+ Posixové a perlové regulární výrazy vycházejí z Kleeneovy teorie, ale jsou zde odlišnosti: Kleene RE popisuje regulární jazyky Žádný kontext Nejjednodušší možný popis (bez +,?, { }, ˆ,..) BRE/ERE/Perl RE popisuje i něco navíc (díky odkazům) Kotvy, lookaround Popis co nejpříjemnější pro užití (Perl)

13 7 - PodporaREvjazycích BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 50/51 9-Závěr-odkazy adotazy Zabudována jako součást syntaxe přímo do jazyka Perl, Ruby, Awk, Tcl, PHP,... Prostřednictvím knihoven a funkcí Java, C, C++,... Za vzor se berou Perl 5.10 regulární výrazy /html_node/regular-expressions.html BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 49/51 8- Regexp vyhledávací enginy BI-AAG (2011/2012) J. Holub: 8. Regulární výrazy - aplikace p. 51/51 DKA (převod RV na DKA) NKA (převod RV na NKA, Thompsonova metoda) Backtracking vyhledávání (nutné pro neregulární jazyky). Pozor, až exponenciální složitost ve srovnání s automaty!

Programování. Bc. Veronika Tomsová

Programování. Bc. Veronika Tomsová Programování Bc. Veronika Tomsová Regulární výrazy Regulární výrazy slouží k porovnání a zpracovaní textu PHP podporuje syntaxi POSIX-Extended Regulární výrazy jsou velice vhodné například k ověření emailové

Více

Regulární výrazy. Honza Vrbata

Regulární výrazy. Honza Vrbata Regulární výrazy Honza Vrbata honza@vrbata.cz CO TO JE? Regulární výraz (regular expression) je speciálně zkonstruovaný řetězec popisující celou množinu řetězců, konkrétně regulární jazyk. Prakticky se

Více

grep a regulární výrazy

grep a regulární výrazy grep a regulární výrazy Josef Hajas hajasj1@fel.cvut.cz http://cs.felk.cvut.cz/~hajasj1/unix/ Vysázeno v LAT E Xu p.1/1 Co nás čeká grep: K čemu slouží? Jak používat? nejpoužívanější přepínače grepu regulární

Více

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 2/29 Hodnocení předmětu BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 4/29 Automaty a gramatiky(bi-aag) 1. Základní pojmy Jan Holub Katedra teoretické

Více

Regulární výrazy. Filtry grep, sed a awk.

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

Více

Regulární výrazy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 14. března / 20

Regulární výrazy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 14. března / 20 Regulární výrazy M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 14. března 2007 1/ 20 Regulární výrazy Jako například v aritmetice můžeme pomocí operátorů + a vytvářet výrazy jako (5+3)

Více

DUM č. 5 v sadě. 34. Inf-10 Praktická typografie s LO Writer/MS Word

DUM č. 5 v sadě. 34. Inf-10 Praktická typografie s LO Writer/MS Word projekt GML Brno Docens DUM č. 5 v sadě 34. Inf-10 Praktická typografie s LO Writer/MS Word Autor: Lukáš Rýdlo Datum: 30.01.2014 Ročník: 4AV, 4AF Anotace DUMu: Nahrazování textu a opravy pomocí regulárních

Více

Úvod do UNIXu. Okruh č. 4 - vi, regulární výrazy, grep a sed. Jakub Galgonek. verze r2. inspirováno materiály Davida Hokszy

Úvod do UNIXu. Okruh č. 4 - vi, regulární výrazy, grep a sed. Jakub Galgonek. verze r2. inspirováno materiály Davida Hokszy Okruh č.4 Okruh č. 4 - vi, regulární výrazy, grep a sed verze 1.0.0-r2 inspirováno materiály Davida Hokszy Textové editory Okruh č.4 vi(m) prastarý textový editor (1976) dostupný v podstatě na každém UNIXovém

Více

Regulární výrazy. jemný úvod. Miloslav Brada

Regulární výrazy. jemný úvod. Miloslav Brada Regulární výrazy jemný úvod Miloslav Brada Regulární výrazy - RegExy K čemu vůbec jsou? Nástin možností Jednoduché vzory, pravidla regexpů Metaznaky Opakování Skupiny Jednoduchý příklad na závěr 2 Co RegExy

Více

Co jsou to regulární výrazy? Regulárními výrazy se používají ke zpracovávání textových řetězců. Vytvoříme si tzv. masku a zjišťujeme, zda jí textový řetězec vyhovuje (např. zda se skládá ze samých čísel

Více

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto: IB102 Automaty, gramatiky a složitost, 6. 10. 2014 1/29 Regulární výrazy Definice 2.58. Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto: 1 ε, a a pro každé a

Více

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 2. března / 32

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 2. března / 32 Formální jazyky Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 2. března 2017 1/ 32 Abeceda a slovo Definice Abeceda je libovolná neprázdná konečná množina symbolů(znaků). Poznámka: Abeceda se často

Více

Formální jazyky a gramatiky Teorie programovacích jazyků

Formální jazyky a gramatiky Teorie programovacích jazyků Formální jazyky a gramatiky Teorie programovacích jazyků doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Připomenutí základních pojmů ABECEDA jazyk je libovolná podmnožina

Více

B A B A B A B A A B A B B

B A B A B A B A A B A B B AB ABA BA BABA B AB A B B A A B A B AB A A B B B B ABA B A B A A A A A B A A B A A B A A B A BA B A BA B D A BC A B C A B A B C C ABA B D D ABC D A A B A B C D C B B A A B A B A B A A AB B A AB A B A A

Více

Jednoznačné a nejednoznačné gramatiky

Jednoznačné a nejednoznačné gramatiky BI-AAG (2011/2012) J. Holub: 11. Bezkontextové gramatiky p. 2/36 Jednoznačné a nejednoznačné gramatiky BI-AAG (2011/2012) J. Holub: 11. Bezkontextové gramatiky p. 4/36 Automaty a gramatiky(bi-aag) 11.

Více

Přednáška 4. Regulární výrazy. Filtry grep, sed a awk. Úvod do Operačních Systémů Přednáška 4

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

Více

Regulární výrazy. Vzory

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

Více

Programovací jazyk Pascal

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

Více

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 2/41 Formální překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 4/41 Automaty a gramatiky(bi-aag) 5. Překladové konečné

Více

2 Formální jazyky a gramatiky

2 Formální jazyky a gramatiky 2 Formální jazyky a gramatiky 2.1 Úvod Teorie formálních gramatik a jazyků je důležitou součástí informatiky. Její využití je hlavně v oblasti tvorby překladačů, kompilátorů. Vznik teorie se datuje přibližně

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Č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

Více

Úvod do programovacích jazyků (Java)

Ú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

Více

more Program se zastaví vždy po vypsání jedné stránky textu. Ukončení Ctrl+C less Umožňuje pohybovat se v souboru dopředu i dozadu.

more Program se zastaví vždy po vypsání jedné stránky textu. Ukončení Ctrl+C less Umožňuje pohybovat se v souboru dopředu i dozadu. GREP, AWK, SED a jiné filtry v LINUXu Vybrané filtry more Program se zastaví vždy po vypsání jedné stránky textu. Ukončení Ctrl+C less Umožňuje pohybovat se v souboru dopředu i dozadu. head [-n] tail [-n]

Více

Konečný automat. Jan Kybic.

Konečný automat. Jan Kybic. Konečný automat Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 33 Konečný automat finite state machine Konečný automat = výpočetní model, primitivní počítač Řídící jednotka s

Více

Parsování v Haskellu, knihovna Parsec

Parsování v Haskellu, knihovna Parsec Parsování v Haskellu, knihovna Parsec IB016 Seminář z funkcionálního programování Vladimír Štill, Martin Ukrop Fakulta informatiky, Masarykova univerzita Jaro 2016 IB016: Cvičení 09 Jaro 2016 1 / 12 Regulární

Více

63. ročník Matematické olympiády 2013/2014

63. ročník Matematické olympiády 2013/2014 63. ročník Matematické olympiády 2013/2014 Úlohy ústředního kola kategorie P 2. soutěžní den Na řešení úloh máte 4,5 hodiny čistého času. Při soutěži je zakázáno používat jakékoliv pomůcky kromě psacích

Více

Tabulkový procesor. Základní rysy

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

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

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.

Více

Úvod do programovacích jazyků (Java)

Ú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

Více

HROMADNÉ ÚPRAVY NAJÍT A NAHRADIT

HROMADNÉ ÚPRAVY NAJÍT A NAHRADIT HROMADNÉ ÚPRAVY NAJÍT A NAHRADIT Funkce Najít a nahradit slouží k rychlému vyhledávání určitých slov a jejich nahrazování jinými slovy. Lze hledat i určité varianty slov a nahrazovat je buď hromadně (všechny

Více

Pumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému

Pumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému BI-AAG (2011/2012) J. Holub: 10. Vlastnosti regulárních jazyků p. 2/22 Pumping lemma - podstata problému BI-AAG (2011/2012) J. Holub: 10. Vlastnosti regulárních jazyků p. 4/22 Automaty a gramatiky(bi-aag)

Více

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 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!

Více

UNIVERZITA PARDUBICE ÚSTAV ELEKTROTECHNIKY A INFORMATIKY VYUŽITÍ REGULÁRNÍCH VÝRAZŮ PŘI OPRAVÁCH TEXTU, ÚPRAVÁCH A GENEROVÁNÍ SOUBORŮ BAKALÁŘSKÁ PRÁCE

UNIVERZITA PARDUBICE ÚSTAV ELEKTROTECHNIKY A INFORMATIKY VYUŽITÍ REGULÁRNÍCH VÝRAZŮ PŘI OPRAVÁCH TEXTU, ÚPRAVÁCH A GENEROVÁNÍ SOUBORŮ BAKALÁŘSKÁ PRÁCE UNIVERZITA PARDUBICE ÚSTAV ELEKTROTECHNIKY A INFORMATIKY VYUŽITÍ REGULÁRNÍCH VÝRAZŮ PŘI OPRAVÁCH TEXTU, ÚPRAVÁCH A GENEROVÁNÍ SOUBORŮ BAKALÁŘSKÁ PRÁCE 2007 Miloš Kukla UNIVERZITA PARDUBICE ÚSTAV ELEKTROTECHNIKY

Více

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 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ů.

Více

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 21. března / 50

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 21. března / 50 Formální jazyky Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 21. března 2013 1/ 50 Abeceda a slovo Definice Abeceda je libovolná neprázdná konečná množina symbolů(znaků). Poznámka: Abeceda se často

Více

Základy algoritmizace. Pattern matching

Základy algoritmizace. Pattern matching Základy algoritmizace Pattern matching 1 Pattern matching Úloha nalézt v nějakém textu výskyty zadaných textových vzorků patří v počítačové praxi k nejfrekventovanějším. Algoritmy, které ji řeší se používají

Více

Programování v jazyce JavaScript

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 Syntaxe 1. část BI-JSC Evropský sociální fond

Více

Algoritmizace a programování

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

Více

Lexikální analýza. Rozhraní lexikálního analyzátoru. Miroslav Beneš Dušan Kolář. M. Beneš, D. Kolář: Lexikální analýza 1. Lexikální analýza 2

Lexikální analýza. Rozhraní lexikálního analyzátoru. Miroslav Beneš Dušan Kolář. M. Beneš, D. Kolář: Lexikální analýza 1. Lexikální analýza 2 Lexikální analýza Miroslav Beneš Dušan Kolář Rozhraní lexikálního analyzátoru Lexikální analýza 2 M. Beneš, D. Kolář: Lexikální analýza 1 Úkoly Čtení zdrojového textu Sestavování symbolů Odstranění mezer

Více

Lexikální analýza. Miroslav Beneš Dušan Kolář

Lexikální analýza. Miroslav Beneš Dušan Kolář Lexikální analýza Miroslav Beneš Dušan Kolář Rozhraní lexikálního analyzátoru Lexikální analýza 2 Úkoly Čtení zdrojového textu Sestavování symbolů Odstranění mezer a poznámek Normalizace symbolů (velká/malá

Více

Základy algoritmizace a programování

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

Více

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Úvod do Prologu Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Warren (Warren Abstract Machine) implementace

Více

Proměnné a parametry. predn_08.odt :00:38 1

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

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

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.

Více

PROGRAMOVÁNÍ V SHELLU

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ý

Více

Hardwarová realizace konečných automatů

Hardwarová realizace konečných automatů BI-AAG - Automaty a gramatiky Katedra teoretické informatiky ČVUT FIT 11.1.21 Co potřebujeme Úvod Potřebujeme: zakódovat vstupní abecedu, zakódovat stavy automatu, pamatovat si současný stav, realizovat

Více

Jazyk C++, některá rozšíření oproti C

Jazyk C++, některá rozšíření oproti C Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra

Více

Úvod do programování 6. hodina

Úvod do programování 6. hodina Úvod do programování 6. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Algoritmy Třídění pole: Selection

Více

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007 WSH Windows Script Hosting OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007 Co je skript? Skriptování nástroj pro správu systému a automatizaci úloh Umožňuje psát skripty jednoduché interpretované programové

Více

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. 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

Více

FUNKCE 3. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika

FUNKCE 3. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika FUNKCE 3 Autor: Mgr. Dana Kaprálová Datum (období) tvorby: září, říjen 2013 Ročník: sedmý Vzdělávací oblast: Informatika a výpočetní technika 1 Anotace: Žáci se seznámí se základní obsluhou tabulkového

Více

Program grep. predn_05.doc

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

Více

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÝCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS SROVNÁNÍ RYCHLOSTI

Více

Základy XML struktura dokumentu (včetně testových otázek)

Základy XML struktura dokumentu (včetně testových otázek) Základy XML struktura dokumentu (včetně testových otázek) Otakar Čerba Oddělení geomatiky Katedra matematiky Fakulta aplikovaných věd Západočeská univerzita v Plzni Přednáška z předmětu Počítačová kartografie

Více

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů SPJA, cvičení 1 ipython, python, skripty základy syntaxe: základní datové typy, řetězce podmínky: if-elif-else, vyhodnocení logických výrazů cykly: for, while kolekce: seznam, n-tice, slovník funkce, list

Více

Práce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing)

Práce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing) Třída Character Práce s textem doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz reprezentuje objekty zapouzdřující hodnotu

Více

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti LEXIKÁLNÍ ANALÝZA Kód ve vstupním jazyku Lexikální analyzátor

Více

LinuxDays 2017 Ondřej Guth GNU grep LD 17 1 / 14

LinuxDays 2017 Ondřej Guth GNU grep LD 17 1 / 14 Používáte GNU grep? A víte, jak funguje uvnitř? Ondřej Guth ondrej.guth@fit.cvut.cz LinuxDays 2017 Ondřej Guth GNU grep LD 17 1 / 14 1 Úvod 2 Přehled zpracování vstupu 3 Obyčejný řetězec jako regulární

Více

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. 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

Více

Poslední nenulová číslice faktoriálu

Poslední nenulová číslice faktoriálu Poslední nenulová číslice faktoriálu Kateřina Bambušková BAM015, I206 Abstrakt V tomto článku je popsán a vyřešen problém s určením poslední nenulové číslice faktoriálu přirozeného čísla N. Celý princip

Více

Regulární výrazy v Mergadu

Regulární výrazy v Mergadu Regulární výrazy v Mergadu aneb Reguláry pro začátečníky i pokročilé Regulární výrazy mají v IT široké uplatnění. V aplikaci Mergado si s jejich pomocí ušetříte práci při vyhledávání skupin produktů a

Více

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu

Více

Regulární výrazy a grep

Regulární výrazy a grep A7B38UOS Úvod do operačních systémů 5. Cvičení Regulární výrazy a grep Grep grep [přepínače] vzor [soubory] Implicitně vypíše na standardní výstup řádky, které vyhoví zadanému vzoru. -i nerozlišuje malá

Více

Úloha 3 editor a skripty. připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese https://service.felk.cvut.cz/heslo

Úloha 3 editor a skripty. připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese https://service.felk.cvut.cz/heslo Domácí příprava k předmětu YD38UOS Úloha 1 vzdálené připojení připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese https://service.felk.cvut.cz/heslo pro připojení použijte protokol ssh (pokud

Více

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Logika pro každodenní přežití Stefan Ratschan Katedra číslicového návrhu Fakulta informačních technologíı České vysoké učení technické v Praze Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Více

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 21. září 2009 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Organizace předmětu Přednášky 1. 5. Základní

Více

Lekce 2. Řetězce a práce s nimi. Vstup a výstup. C2184 Úvod do programování v Pythonu podzim 2016

Lekce 2. Řetězce a práce s nimi. Vstup a výstup. C2184 Úvod do programování v Pythonu podzim 2016 . Vstup/výstup Lekce 2. Vstup/výstup. a práce s nimi. Vstup a výstup. C2184 Úvod do programování v Pythonu podzim 2016 Formátování Národní centrum pro výzkum biomolekul Masarykova univerzita 2.1 Char (znak)

Více

Úvod do programování. Lekce 1

Ú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) -

Více

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE FORMALISMY PRO SYNTAXÍ ŘÍZENÝ PŘEKLAD: PŘEKLADOVÉ A ATRIBUTOVÉ GRAMATIKY.

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE FORMALISMY PRO SYNTAXÍ ŘÍZENÝ PŘEKLAD: PŘEKLADOVÉ A ATRIBUTOVÉ GRAMATIKY. PROGRAMOVACÍ JAZYKY A PŘEKLADAČE FORMALISMY PRO SYNTAXÍ ŘÍZENÝ PŘEKLAD: PŘEKLADOVÉ A ATRIBUTOVÉ GRAMATIKY. 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Formální

Více

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

- 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á

Více

C2110 Operační systém UNIX a základy programování

C2110 Operační systém UNIX a základy programování C2110 Operační systém UNIX a základy programování 6. lekce Petr Kulhánek, Jakub Štěpán kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kotlářská

Více

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě PHP PHP původně znamenalo Personal Home Page a vzniklo v roce 1996, od té doby prošlo velkými změnami a nyní tato zkratka znamená Hypertext Preprocessor. PHP je skriptovací programovací jazyk, určený především

Více

Vyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Vyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Vyhledávání v textu doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 9. března 209 Jiří Dvorský (VŠB TUO) Vyhledávání v textu 402

Více

LOGICKÉ OBVODY 2 kombinační obvody, minimalizace

LOGICKÉ OBVODY 2 kombinační obvody, minimalizace LOGICKÉ OBVODY 2 kombinační obvody, minimalizace logické obvody kombinační logické funkce a jejich reprezentace formy popisu tabulka, n-rozměrné krychle algebraický zápis mapy 9..28 Logické obvody - 2

Více

PB071 Úvod do jazyka C

PB071 Úvod do jazyka C PB071 Úvod do jazyka C Překladové systémy Jiri Slaby Fakulta informatiky Masarykova univerzita 2. 5. 2016 Jiri Slaby (Fakulta informatiky, MU) PB071 Překlad 2. 5. 2016 1 / 23 Obsah přednášky 1 Úvod a motivace

Více

Stručné shrnutí v bodech

Stručné shrnutí v bodech ISDS Instrukce pro vývojáře aplikací třetích stran Nové SSL certifikáty s SHA-256 Aktualizovaná a doplněná verze ze dne 4.8.2015, která nahrazuje verzi 1.1 ze dne 28.7.2015 Předkládá O2 Czech Republic

Více

Cvičení 1. Úvod do teoretické informatiky(2014/2015) cvičení 1 1

Cvičení 1. Úvod do teoretické informatiky(2014/2015) cvičení 1 1 Úvod do teoretické informatiky(2014/2015) cvičení 1 1 Cvičení 1 Příklad 1: Pro každý z následujících formálních zápisů množin uveďte(svými slovy), jaké prvky daná množina obsahuje: a) {1,3,5,7,...} b)

Více

Programování v Pythonu

Programování v Pythonu ƒeské vysoké u ení technické v Praze FIT Programování v Pythonu Ji í Znamená ek P íprava studijního programu Informatika je podporována projektem nancovaným z Evropského sociálního fondu a rozpo tu hlavního

Více

dovolují dělení velkých úloh na menší = dekompozice

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íce

Konstruktory překladačů

Konstruktory překladačů Konstruktory překladačů Miroslav Beneš Dušan Kolář Konstruktor Lex generátor lexikálních analyzátorů M. E. Lesk, 1975 - pro OS Unix flex - Vern Paxson, 1990 - GNU verze určeno pro generování výstupu v

Více

Kdy se narodil... Vypracovali: Mrkývka Vojtěch, Mrázek Ondřej, Novotná Marie. Předmět: PLIN08 Projekty II. Semestr: Jaro 2015

Kdy se narodil... Vypracovali: Mrkývka Vojtěch, Mrázek Ondřej, Novotná Marie. Předmět: PLIN08 Projekty II. Semestr: Jaro 2015 Kdy se narodil... Vypracovali: Mrkývka Vojtěch, Mrázek Ondřej, Novotná Marie Předmět: PLIN08 Projekty II Semestr: Jaro 2015 Vedoucí projektu: Mgr. Marek Grác, Ph.D. Úkolem tohoto projektu bylo vytvořit

Více

5. Dynamické programování

5. Dynamické programování 5. Dynamické programování BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické

Více

Jazyk C++ II. STL knihovna kontejnery část 2

Jazyk C++ II. STL knihovna kontejnery část 2 Jazyk C++ II STL knihovna kontejnery část 2 AR 2013/2014 Jazyk C++ II Asociativní kontejnery Slovníky u kterých pořadí dat nemá smysl. Kontejner si sám určuje, kam který údaj uloží. Údaje mají tvar klíč/hodnota.

Více

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

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

Více

ČVUT FIT: BI-SKJ: Perl

ČVUT FIT: BI-SKJ: Perl ČVUT FIT: BI-SKJ: Perl J. Škvor, březen - duben 2011 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního 1 města Prahy. Praha

Více

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE. PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNAKICKÁ ANALÝZA DOKONČENÍ, IMPLEMENACE. VLASNOSI LL GRAMAIK A JAZYKŮ. 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Gramatika

Více

Lineární algebra : Násobení matic a inverzní matice

Lineární algebra : Násobení matic a inverzní matice Lineární algebra : Násobení matic a inverzní matice (8. přednáška) František Štampach, Karel Klouda frantisek.stampach@fit.cvut.cz, karel.klouda@fit.cvut.cz Katedra aplikované matematiky Fakulta informačních

Více

Naproti tomu gramatika je vlastně soupis pravidel, jak

Naproti tomu gramatika je vlastně soupis pravidel, jak 1 Kapitola 1 Úvod V přednášce se zaměříme hlavně na konečný popis obecně nekonečných množin řetězců symbolů dané množiny A. Prvkům množiny A budeme říkat písmena, řetězcům (konečným posloupnostem) písmen

Více

IB111 Úvod do programování skrze Python Přednáška 13

IB111 Úvod do programování skrze Python Přednáška 13 IB111 Úvod do programování skrze Python Přednáška 13 Programovací jazyky Nikola Beneš 14. prosinec 2016 IB111 přednáška 13: programovací jazyky 14. prosinec 2016 1 / 21 Osnova dnešní přednášky Programovací

Více

Formátování textu pomocí regulárních výrazů

Formátování textu pomocí regulárních výrazů Gymnázium Brno, třída Kapitána Jaroše, příspěvková organizace Formátování textu pomocí regulárních výrazů Závěrečná práce Vedoucí práce: Mgr. Marek Blaha Anna Řechtáčková Brno 2016 Děkuji Marku Blahovi

Více

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora SofCon spol. s r.o. Střešovická 49 162 00 Praha 6 tel/fax: +420 220 180 454 E-mail: sofcon@sofcon.cz www:

Více

Reranking založený na metadatech

Reranking založený na metadatech České vysoké učení technické v Praze Fakulta informačních technologií Katedra softwarového inženýrství Reranking založený na metadatech MI-VMW Projekt IV - 1 Pavel Homolka Ladislav Kubeš 6. 12. 2011 1

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

Tvorba výrazu: speciální znaky shellu se uvádějí do apostrofů jednotlivé části výrazu se oddělují mezerou

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

Více

Dynamické programování

Dynamické programování Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)

Více

Příklad buňka tabulky

Příklad buňka tabulky Realizováno za finanční podpory ESF a státního rozpočtu ČR v rámci v projektu Zkvalitnění a rozšíření možností studia na TUL pro studenty se SVP reg. č. CZ.1.07/2.2.00/29.0011 Pojmenované šablony Pojmenované

Více

Funkce, podmíněný příkaz if-else, příkaz cyklu for

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

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze

Více

Regulární výrazy. Motto:

Regulární výrazy. Motto: Regulární výrazy Motto: Programátor musel jednou řešit zajímavý problém. Rozhodl se jej vyřešit použitím regulárních výrazů. Nyní musel řešit dva problémy. Rudolf Pecinovský rudolf@pecinovsky.cz Copyright

Více