Regulární výrazy. Motto:

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

Download "Regulární výrazy. Motto:"

Transkript

1 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ý Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 1 z 59

2 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 2 z 59 Obsah 1. Základní seznámení 2. Ověření správnosti navržených výrazů 3. Základní syntaxe vzorů regulárních výrazů 4. Nahrazování textu 5. Pokročilejší syntaxe 6. Použití regulárních výrazů v programu 7. Zdroje

3 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 3 z Základní seznámení Obsah 1.1 Co to je 1.2 Datové typy používané při práci s regulárními výrazy 1.3 Princip použití

4 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 4 z Co to je Nejsou regulérní, ale opravdu regulární Zavedené ve verzi 1.4, ale každá další verze je trochu vylepšila Regulární výraz = řetězec popisující vzor (předpis), podle nějž se: Rozhoduje o správné podobě zadaného řetězce V zadaném řetězci se vyhledává řetězec popsaný vzorem V zadaném řetězci se nahrazují výskyty řetězce popsaného jedním vzorem řetězcem popsaným jiným vzorem Příklady využití Validaci vstupů, kontroly formátu dat Dělení řetězce na části podle složitějších kritérií Vyhledávání specifikovaných textů v rozsáhlejších textech Hromadné vyhledávání a nahrazování Hromadné přejmenovávání souborů

5 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 5 z Datové typy používané při práci s regulárními výrazy Všechny jsou definovány v balíčku java.util.regex Pattern vnitřní reprezentace programu definovaného daným regulárním výrazem; podle názvu třídy je označován jako pattern vzor MatchResult Rozhraní definující sadu zpráv, na něž musí umět reagovat výsledek hledání Matcher výsledek aplikace programu (vzoru) na zadaný text Implementuje rozhraní MatchResult, ale nabízí ještě další metody PatternSyntaxException výjimka popisující vzniklý problém

6 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 6 z Princip použití 1. Uživatel (programátor) definuje zdrojový kód programu = regulární výraz 2. Výraz se přeloží a získá se jeho vnitřní reprezentace, tzv. vzor (pattern) instance třídy java.util.regex.pattern 3. Program aplikujeme na zadaný text a získáme výsledek hledání, který je instancí třídy java.util.regex.matcher 4. Této instance se pak můžeme ptát na nejrůznější informace o výsledku hledání získaného aplikací programu (regulárního výrazu) na zadaný text. Pattern p = Pattern.compile("a*b"); //Vnitřní reprezentace výrazu Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); //Anebo zkráceně boolean c = Pattern.matches("a*b", "aaaaab");

7 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 7 z Ověření správnosti navržených výrazů Obsah 2.1 Možnosti předběžného ověření správnosti vzorů 2.2 Desktopový program 2.3 On-line ověřovač 2.4 Jednoduchý testovací program

8 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 8 z Možnosti předběžného ověření správnosti vzorů Regulární výrazy bývají často velmi nepřehledné, a proto je při jejich návrhu velmi vhodné mít možnost si vše někde stranou nezávazně vyzkoušet Testovací program je sice jednoduchý, ale stejně dobře můžete použít i předpřipravené jednoúčelové testery, kterých je plný internet; Mnohé z nich lze získat zdarma Další řada z nich pracuje v on-line režimu, takže ani nepotřebujete příslušné prostředí Při výběru testovacího programu je třeba dát pozor na to, aby pracoval se regulárními výrazy platnými pro vaši platformu (Java, JavaScript,.NET, PHP, Python, Perl, Ruby, ) Programy na následujících stránkách pracují s regulárními výrazy podle definice platformy Java

9 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 9 z Desktopový program Jednoduchý program, který najdete na disku I:

10 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 10 z On-line ověřovač Aplet dostupný na adrese

11 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 11 z Jednoduchý testovací program Ekvivalent následujícího programu si můžete napsat sami /*************************************************************************** * V zadaném textu najde a vypíše všechny nalezené výskyty * textu odpovídajícho zadanému regulárnímu výrazu. regexp Regulární výraz definující hledaný text text Prohledávaný text */ public static void findall(string regexp, String text) { System.out.printf("Text: %s%nreg.exp.: %s%n", regexp, text); Pattern pattern = Pattern.compile(regExp); Matcher matcher = pattern.matcher(text); } int i = 0; while (matcher.find()) { System.out.printf ("%2d. [%2d..%2d] «%s»%n", ++i, matcher.start(), matcher.end(), matcher.group()); }

12 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 12 z Základní syntaxe vzorů regulárních výrazů Obsah 3.1 Jednotlivé znaky 3.2 Množiny znaků Příklad Příklad Skupinové znaky 3.4 Hranice Hranice ve víceřádkovém režimu 3.5 Práce se skupinami Příklad Pojmenované skupiny 3.6 Kvantifikátory (počet opakování) Agresivita kvantifikátorů 3.7 Další operátory

13 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 13 z Jednotlivé znaky S výjimkou znaků speciálního určení vystupuje každý znak sám za sebe Platí i escape-sekvence Javy: \\ \uhhhh \t \n \r \f \a \' \" Pro znak Escape (\u001b) lze použít \e Řídící znaky typu Ctrl+X je možno zadávat ve tvaru \cx Znak s kódem do 127 lze zadat také pomocí pouhých dvou číslic: \xhh V osmičkové soustavě lze znaky zadat jednou až třemi číslicemi: \0o \0oo \0ooo Znaky. ^ +? * $ ( [ { } ] ) vystupují jako metaznaky, takže chceme-li je zadat, musíme před nimi uvést zpětné lomítko např. \. Příklady text: Okolo "Hradce" v male zahradce Vzor: ad 1. [ 9..11] «ad» 2. [26..28] «ad» Vzor: \u0020\x22 1. [ 5.. 7] «"» Vzor: \x20 1. [ 5.. 6] 2. [12..13] 3. [14..15] 4. [19..20]

14 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 14 z Množiny znaků [abc] Jeden ze znaků uvnitř závorek (zde a či b či c) POZOR! Uvnitř závorek se mění význam většiny metaznaků, které zde označují pouze samy sebe [^abc] Žádný ze znaků uvnitř závorek (cokoliv vyjma znaků a či b či c) [a za Z] Rozsah znaků (zde znaky a až z a znaky A až Z včetně) [a d[m p]] Sjednocení (zde znaky a až d nebo znaky m až p) [a z&&[^qw]] Průnik (zde znaky a až z s výjimkou znaků q a w) [a z&&[^m p]] Průnik (zde znaky a až z s výjimkou znaků m až p)

15 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 15 z Příklad 1 Text: Okolo "Hradce" v male zahradce Vzor: o[^o] 1. [ 2.. 4] «ol» 2. [ 4.. 6] «o» Vzor: [A Z] 1. [ 0.. 1] «O» 2. [ 6.. 7] «H» Vzor: [ ][^A Z][a z] 1. [14..17] «ma» 2. [19..22] «za»

16 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 16 z Příklad 2 Text : Příliš žluťoučký kůň úpěl ďábelské ódy Vzor: [^\x00 \xff] znaky s diakritikou, které nejsou v západoevropské znakové sadě 1. [ 1.. 2] «ř» 2. [ 5.. 6] «š» 3. [ 7.. 8] «ž» 4. [10..11] «ť» 5. [13..14] «č» 6. [18..19] «ů» 7. [19..20] «ň» 8. [23..24] «ě» 9. [26..27] «ď» Chcete-li v množině povolených znaků uvést také znak (minus), musíte jej zadat buď jako poslední nebo jako escape sekvenci \

17 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 17 z Skupinové znaky. (tečka) Libovolný znak (uvnitř hranatých závorek však zastupuje jen sama sebe) \d Číslice, tj. [0 9] \D NEčíslice, tj. [^0 9] \s Bílý znak, tj. mezera, tabulátor, konec řádku, konec stránky \S NE bílý znak \w Znak [A Za z0 9_] \W Znak [^\w] Text: Okolo "Hradce" v male zahradce Vzor: \S\s\S 1: [ 4.. 7] «o "» 2: [13..16] «" v» 3: [20..23] «e z» Vzor:..\s.. 1: [ 3.. 8] «lo "H» 2: [12..17] «e" v» 3: [19..24] «le za» Vzor: \w\w\w\w 1: [ 4.. 8] «o "H» 2: [12..16] «e" v»

18 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 18 z Hranice ^ Začátek řádku $ Konec řádku \b Hranice slova \B Není hranice slova \Q Začátek citace od tohoto místa přestávají platit metaznaky \E Konec citace opět začínají platit metaznaky \A Začátek vstupu \z Konec vstupu \Z Konec vstupu bez ukončovacího znaku \G Konec předchozí nalezené skupiny

19 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 19 z 59 Text: Okolo Hradce v malé zahrádce Vzor: \b\w+\b 1. [ 0.. 5] «Okolo» 2. [ 6..12] «Hradce» 3. [13..14] «v» Vzor: \b.a\s* 1. [15..19] «malé» 2. [20..28] «zahrádce» Vzor:...[eé]\b 1. [ 8..12] «adce» 2. [15..19] «malé» 3. [24..28] «ádce»

20 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 20 z Hranice ve víceřádkovém režimu Znaky ^ a $ implicitně ignorují ukončení řádků a označují jen jejich začátek a konec, resp. u víceřádkových vstupů začátek a konec celého textu V režimu MULTILINE se jejich význam poněkud mění: ^ označuje pozici na počátku vstupu a za každým ukončením řádku s výjimkou konce vstupu $ označuje pozice před ukončeními řádků a pozici na konci celého vstupu

21 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 21 z Práce se skupinami Skupiny jsou části výrazu uzavřené do kulatých závorek Chceme-li v textu hledat kulatou závorku, musím ji uvést zpětným lomítkem \( Skupiny je možno vnořovat Skupiny se označují svým pořadím, přičemž pořadí skupiny se počítá podle její otevírací závorky Java 7 zavedla možnost skupiny pojmenovat Výraz: ((A)(B(C)))(D) obsahuje následující skupiny: 0. ((A)(B(C)))(D) 1. ((A)(B(C))) 2. (A) 3. (B(C)) 4. (C) 5. (D) \n Obsah n-té skupiny Při nahrazování se na danou skupinu odvolává výrazem $n V Javě se nelze odvolávat na skupinu s pořadovým číslem >9, při více skupinách je nutno skupiny pojmenovávat viz dále pasáž Pojmenované skupiny

22 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 22 z Příklad Vzor pro kontrolu zadání data: \b\d{1,2}([./ ])\d{1,2}\1\d{4}\b Ověří, že mezi dnem a měsícem a mezi měsícem a rokem je stejný oddělovač tečka, pomlčka nebo lomítko. Text: ,3, /12/ Hledání 1. [ 0-8] « » 2. [ 20-28] « » 3. [ 41-49] «15/12/7890» Oddělovač 1. [ 0-0] 2. [ 12-12] «2,3,4567» 3. [ 12-12] « » 4. [ 12-12] « »

23 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 23 z Pojmenované skupiny Od verze 7.0 zavádí Java možnost definovat pojmenované skupiny, tj. skupiny, které lze pojmenovat a poté se na ně odkazovat jménem (?<jméno> ) Pojmenovaná skupina, pojmenování uzavíráme do špičatých závorek za úvodním otazníkem /k<jméno> Odvolávka na dříve se vyskytnuvší pojmenovanou skupinu ve vyhledávacím vzoru Vzor pro kontrolu zadání data nazveme-li skupinu obsahující oddělovač odd, získá výraz z předchozí části podobu: \d{1,2}(?<odd>[.\ /])\d{1,2}\k<odd>\d{4} Na pojmenované skupiny se nadále můžeme odvolávat i jejich indexem Výhody pojmenování oproti indexování Pojmenovaných skupin může být více než 9 Vložíme-li do výrazu další skupinu či z něj nějakou vyjmeme, odkazy na pojmenované skupiny upravovat nemusíme

24 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 24 z Kvantifikátory (počet opakování)? 0 nebo 1 výskyt předchozího znaku + 1 a více výskytů předchozího znaku * Libovolný počet výskytů předchozího znaku (včetně 0) {n} Přesně n opakování předchozího znaku {n,} Minimálně n opakování předchozího znaku {m,n} Minimálně m a maximálně n opakování předchozího znaku Uvnitř hranatých závorek vystupují? + * jako obyčejné znaky Text: Příliš žluťoučký kůň úpěl ďábelské ódy Vzor: [\x00 \x7f&&[^ ]]{2,} výsledek je tomto případě ekvivalentní aplikaci vzoru \w{2,} 1: [ 3.. 5] «li» 2: [ 8..10] «lu» 3: [11..13] «ou» 4: [28..33] «belsk» 5: [36..38] «dy» Vzor: \s\s+\s (vzhledem k zahrnutým mezerám se musí nejprve najít další mezera) 1: [ 6..17] «žluťoučký» 2: [20..26] «úpěl»

25 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 25 z Agresivita kvantifikátorů Přidáme-li za kvantifikátor znak?, převedeme kvantifikátor na zdráhavý (reluctant); ten zabere minimální počet znaků požadovaných vzorem Zdráhavé kvantifikátory se někdy označují jako líné lazy Standardní kvantifikátory jsou označovány jako hladové (greedy), protože spolknou všechny akceptovatelné znaky; pokud by však jejich hladovost měla být příčinou nevyhovění vzoru, jsou ochotny část spolknutých znaků vrátit Přidáme-li za kvantifikátor znak +, převedeme jej na lakomý (possessive); ten pracuje zpočátku stejně jako hladový, ale co jednou schvátí, to už nenavrátí Text: Okolo Hradce v male zahradce Zdráhavý vzor: ([aeo]).*?\1 1. [ 2-5] «olo» 2. [ 8-17] «adce v ma» 3. [ 18-28] «e zahradce» Hladový vzor: ([aeo]).*\1 1. [ 2-5] «olo» 2. [ 8-25] «adce v male zahra» Lakomý vzor: ([aeo]).*+\1 Nic nenalezeno

26 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 26 z Další operátory XY X Y Znaky X a Y musí jít za sebou, Buď X nebo Y, kde za X a Y můžeme dosadit nejen znaky, ale i jejich posloupnosti a skupiny znaků \ Další znak nebude považován za metaznak \Q Další znaky až po \E budou citovány, tj. nebudou považovány za metaznaky \E Konec citace Navrhněte vzor, který by zkontroloval pořadové číslo měsíce (nezkontroluje jeho správnost, ale pouze to, že za ně lze dané číslo považovat) \b((1[012]) [1 9])\b Obdobně bychom mohli navrhnout výraz kontrolující základní pravidla pro číslo dne: \b((3[01]) ([12][0 9]) [1 9])\b

27 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 27 z Nahrazování textu Obsah 4.1 Základy Příklad: Datum Příklad: Záměna křestních jmen a příjmení

28 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 28 z Základy V nahrazovacím regulárním výrazu uvedeme, čím budeme chtít nahradit každý nalezený text odpovídající hledanému výrazu Na skupiny znaků v nalezeném se můžeme odvolávat pomocí $n, kde n je číslo skupiny, jejíž nalezený text chceme na daném místě použít Na pojmenované skupiny se odkazujeme výrazem ${název}

29 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 29 z Příklad: Datum Úkol: Standardizovat tečku jako oddělovač použitý v datech Hledat: \b(\d{1,2})([./ ])(\d{1,2})\2(\d{4})\b Nahradit: $1.$3.$4 Text: ,3, /6/ Výsledek: ,3, Kdybychom skupinu se separátorem oddělujícím části data v předchozím příkladu označili sep (separátor), vypadal by vyhledávací vzor Hledat: \b(\d{1,2})(?<sep>[./ ])(\d{1,2})\k<sep>(\d{4})\b Zbytek se shoduje

30 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 30 z Příklad: Záměna křestních jmen a příjmení Bez pojmenovaných skupin: Hledat: ((\w+)(\s+(\w+))?)\s+(\w+) Nahradit: $5 $1 Text: John Fitzgerald Kennedy, Elton John, Martin Luther King Výsledek: Kennedy John Fitzgerald, John Elton, King Martin Luther Pokud skupinu pro příjmení pojmenujeme: Hledat: ((\w+)(\s+(\w+))?)\s+(?<surname>\w+) Nahradit: ${surname} $1 Text i výsledek jsou shodné Uvedený výraz ale nelze použít pro znaky s diakritikou; jak na to bude vysvětleno dále

31 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 31 z Pokročilejší syntaxe Obsah 5.1 Speciální režimy a třídy znaků Nastavení a zrušení speciálních režimů 5.2 Třídy znaků Příklad: Záměna křestních jmen a příjmení s diakritikou 5.3 Nezachytávající skupiny (?: ) Příklad 5.4 Nahlížení vpřed či vzad Příklad: prohození křestního jména (křestních jmen) a příjmení

32 5.1 Speciální režimy a třídy znaků d UNIX_LINES Jako konec řádku pro metaznaky. ^ $ se bude rozpoznávat pouze znak \n i CASE_INSENSITIVE Při vyhledávání se přestane rozlišovat velikost znaků m MULTILINE Zapíná jinou interpretaci znaků ^ a $. Při zapnutí režimu definují pozice v okolí konců řádků, při vypnutém označují pouze začátek a konec celé sekvence s DOTALL V tomto režimu představuje metaznak tečka opravdu všechny znaky včetně konců řádků, které v běžném režimu nezahrnuje. u UNICODE_CASE V režimu CASE_INSENSITIVE se budou považovat velká a malá písmena za shodná podle definic normy Unicode. Standardně to platí jen pro ASCII znaky U UNICODE_CHARACTER_CLASS Při nastavení režimu se budou třídy znaků klasifikovat podle Unicode Standard #18 x COMMENTS Umožní vkládání komentářů začínajících znakem # a končících na konci řádku Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 32 z 59

33 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 33 z Nastavení a zrušení speciálních režimů Uvnitř regulárního výrazu se režimy nastavují a vypínají pomocí sekvence (?idmsuxu idmsuxu) v níž se uvádějí na předchozí stránce vypsané znaky pro nastavení, resp. vypnutí (pak předchází znak ) příslušného režimu Režim lze zapnout či vypnout i pouze pro určitou skupinu pomocí sekvence (?idmsuxu idmsuxu:xxx) kde XXX představuje danou skupinu Nastavení režimu se neřadí mezi zachytávané skupiny, a proto se jejich závorky nepočítají Text: Okolo Hradce v malé zahrádce Vzor: hr 1. [22-24] «hr» Vzor: (?i)hr 1. [ 6-8] «Hr» 2. [22-24] «hr»

34 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 34 z Třídy znaků \p{lower} Malá písmena \p{ Upper} Velká písmena \p{ ASCII} Znaky ASCII [\x00 \x7f] \p{alpha} Písmena: [\p{lower}\p{upper}] \p{digit} Dekadické číslice: [0 9] \p{alnum} Alfanumerické znaky: [\p{alpha}\p{digit}] \p{punct} Oddělovače Jeden ze }~ \p{graph} Viditelné znaky: [\p{alnum}\p{punct}] \p{print} Tisknutelné znaky: [\p{graph}\x20] \p{blank} Mezera nebo tabulátor: [ \t] \p{cntrl} Řídící znaky: [\x00 \x1f\x7f] \p{xdigit } Hexadecimální číslice: [0 9a fa F] \p{space } Bílý znak: [ \t\n\x0b\f\r]

35 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 35 z Příklad: Záměna křestních jmen a příjmení s diakritikou Opět prohazujeme křestní jména a příjmení, ale tentokrát chceme aplikovat nahrazování i pro jména obsahující znaky s diakritikou Hledat: (?U:((\p{Alpha}+)(\s+(\p{Alpha}+))?)\s+(?<surname>\p{Alpha}+)) Nahradit: ${surname} $1 Text: John Fitzgerald Kennedy, Elton John, Josef Václav Sládek, Přemysl Oráč Výsledek: Kennedy John Fitzgerald, John Elton, Sládek Josef Václav, Oráč Přemysl

36 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 36 z Nezachytávající skupiny (?: ) Doposud probírané skupiny byly zachytávané Zachytávané skupiny se tak jmenují proto, že jejich obsah je zachycen a uložen pro případné budoucí použití. Nezachytávané skupiny specifikují pouze pozici v prohledávaném textu, přičemž tato pozice je určena zadaným výrazem Nezachytávané skupiny se nepočítají, protože se na ně stejně nedá odkazovat, při odkazu na nějakou předchozí skupinu se počítají pouze ty zachytávané Někdy potřebujeme ověřit, že nějaká skupina v prohledávaném textu je, ale nebudeme ji pak už potřebovat, takže si ji ani nemusíme pamatovat Nemusíme-li si skupinu pamatovat, můžeme tím zefektivnit vyhledávání To, že se nečíslují, se hodí v případě více skupin

37 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 37 z Příklad Text: ,3, /34/ Budeme-li chtít ověřit základní pravidla zápisu data, může mít vzor tvar:: \b((?:3[01]) (?:[12][0 9]) [1 9])([./ ])((?:1[012]) [1 9])\2(\d{4})\b 1. [ 1-9] « » 2. [ 21-29] « » 3. [ 41-49] « » 4. [ 50-59] « » 5. [ 72-82] « » Pro sjednocení oddělovačů použijeme nahrazovací výraz: $1;$3;$4 1;2;3456 2,3,4567 3;4; ;6; ;3; /34/ ;12;9876

38 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 38 z Nahlížení vpřed či vzad V řadě případů může být naše další rozhodování ovlivněno tím, jestli jsme již narazili na nějaký text anebo jestli na něj v budoucnu narazíme k takovémuto nahlížení slouží konstrukce: (?= ) Pozitivní náhled vpřed (?! ) Negativní náhled vpřed (?<= ) Pozitivní náhled vzad (?<! ) Negativní náhled vzad Pozitivní náhled povolí interpretaci další částí regulárního výrazu v případě, kdy se v daném směru popsaný text vyskytuje, negativní náhled v případě, kdy se popsaný text v daném směru nevyskytuje Náhledy text nekonzumují, pouze zjistí přítomnost či nepřítomnost textu, takže se tento text může stát součástí dalšího zpracování Vhodným použitím náhledů můžeme např. specifikovat pozici, kam se bude vkládat nějaký text Prozkoumávací skupiny probíráme až teď, protože se uplatní především při nahrazování textu

39 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 39 z Příklad: prohození křestního jména (křestních jmen) a příjmení Text: chceme do něj vložit oddělovače tisíců Hledat: (\d)(?=(\d\d\d)+(?!\d)) Nahradit: $1, Text: 123; 1234; 12345; ; ; ; Výsledek: 123; 1,234; 12,345; 123,456; 1,234,567; 12,345,678; 123,456,789

40 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 40 z Atomická nezachytávaná skupina Syntaxe: (?> ) Atomická skupina se chová podobně jako lakomý kvantifikátor: jakmile je tato skupina v textu nalezena, už takovou navždy zůstane, jinými slovy už z ní nebude možno něco odebrat, aby celý výraz vyšel Výhodou lakomých kvantifikátorů oproti atomickým skupinám je to, že lakomé kvantifikátory lze lépe optimalizovat

41 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 41 z Použití regulárních výrazů v programu Obsah 5.1 Třída Pattern Metody třídy Pattern Příznaky ovlivňující překlad veřejné atributy třídy Pattern Rozdělení řetězce na částí Ostatní metody instancí třídy Pattern 5.2 Rozhraní MatchResult 5.3 Třída Matcher Metody řídící vyhledávání Ovlivnění chodu vyhledávače Nahrazováni 5.4 Příklady Vodácký pokřik Rozdělení textu na slova 5.4.4

42 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 42 z Třída Pattern Instance třídy Pattern představují vnitřní reprezentace přeložených regulárních výrazů Každý regulární výraz musí být před použitím přeložen Teprve přeložený regulární výraz můžeme požádat o poskytnutí vyhledávače (matcher), který bude analyzovat dodaný text

43 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 43 z Metody třídy Pattern static Pattern compile(string regex) static Pattern compile(string regex, int flags) Přeloží zadaný text a vytvoří nový vzor při respektování případných zadaných příznaků Příznaky jsou celá čísla s jediným, nahozeným bitem, takže je můžeme skládat prostřednictvím sčítání nebo bitového OR ( ) static boolean matches(string regex, CharSequence input) Přeloží zadaný regulární výraz regex a ověří, zda mu text input vyhovuje static String quote(string s) Vrátí text, jehož překladem vznikne vzor, kterému bude zadaný text vyhovovat

44 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 44 z Příznaky ovlivňující překlad veřejné atributy třídy Pattern CANON_EQ Písmeno následované akcentem považuje za znak s daným akcentem CASE_INSENSITIVE Nedbá na velikost písmen COMMENTS Ignoruje mezery a povoluje komentáře začínající znakem # DOTALL V tomto režimu zastupuje znak. (tečka) také konce řádků (jinak ne) LITERAL Metaznaky považuje za normální znaky MULTILINE Umožňuje vyhledávat konce řádků

45 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 45 z 59 UNICODE_CASE Ignorace velikosti znaků odpovídá standardu Unicode UNICODE_CHARACTER_CLASS Novinka Javy 7 umožňuje, aby se do jednotlivých tříd započítávaly i znaky ze sady Unicode Toto nastavení může výrazně zpomalit vyhodnocování výrazů UNIX_LINES Za konec řádku je považován pouze \n

46 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 46 z Rozdělení řetězce na částí String[] split(charsequence input) String[] split(charsequence inp, int limit) Vrátí pole podřetězců řetězců zadaného textu daným vzorem s respektováním pořadí. Neobsahuje-li text daný vzor, je vrácen celý. Parametr limit specifikuje maximální povolenou velikost pole, tj. počet vyhledávání daného vzoru v textu. Není-li kladný, není počet vracených řetězců omezen, tj. regulárním výrazem zadaný oddělovač se bude vyhledávat až do konce zadaného textu Je-li parametr limit kladný, je posledním vráceným řetězcem veškerý zbylý text za limit-ním nalezeným oddělovačem Předchozí metody lze vyvolat i prostřednictvím metod třídy String public String[] split(string regex) public String[] split(string regex, int limit) Vrátí pole řetězců obsažených v původním řetězci a oddělených texty odpovídajícími regulárnímu výrazu v parametru

47 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 47 z Ostatní metody instancí třídy Pattern int flags() Vrátí číslo, z nějž lze odvodit nastavené příznaky Použití např.: if (pattern.flags() & Pattern.COMMENTS) { } Matcher matcher(charsequence input) Vytvoří vyhledávač vzoru v zadaném textu String pattern() String tostring() Vrátí text, jehož překladem vznikl daný vzor

48 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 48 z Rozhraní MatchResult Instance tohoto rozhraní jsou výsledky aplikace vzoru na text. Jejich metody umožňují jistou analýzu obdrženého výsledku int end() int end(int group) Vrátí index znaku za posledním znakem nalezené/zadané skupiny String group() String group(int group) Vrátí další, resp. zadanou skupinu odpovídající vzoru int groupcount() Vrátí počet nalezených výskytů vzoru v textu int start() int start(int group) Vrátí index prvního znaku nalezené/zadané skupiny

49 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 49 z Třída Matcher Instance třídy Matcher fungují jako interprety programu definovaného regulárním výrazem a pracujícími se zadaným textem jako zdrojem dat Při práci se používají tři metody: matches() zjišťuje, zda text přesně odpovídá vzoru lookingat() zjistí, zda je text odpovídající vzoru ve vstupním textu obsažen find() hledá případný další výskyt daného textu Vyhledávač (matcher) nemusí hledat v celém textu, ale lze mu zadat pouhé okénko region Vedle vyhledávání a kontrolování je vyhledávač schopen také ve vstupním textu nahrazovat jedny sekvence znaků jinými. Vyhledávač je možné resetovat a při té příležitosti mu zadat jiný vstupní text Instance vyhledávače nejsou vláknově bezpečné, při použití ve vícevláknových aplikacích je na to třeba myslet

50 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 50 z Metody řídící vyhledávání boolean matches() Zjistí, jestli (celý) text v oblasti odpovídá danému vzoru boolean lookingat() Zjistí, jestli se v textu nachází pasáž odpovídající danému vzoru; hledá vždy od začátku oblasti boolean find() boolean find(int start) Pokusí se najít další pasáž odpovídající danému vzoru MatchResult tomatchresult() Vrátí objekt s informacemi o výsledcích porovnávání boolean hitend() Oznámí, zda bylo při posledním hledání dosaženo konce vstupu boolean requireend() Oznámí, zda by další vstupující text mohl ovlivnit úspěšnost nalezení textu odpovídajícího danému vzoru

51 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 51 z Ovlivnění chodu vyhledávače Pattern pattern() Vrátí vzor, vůči němuž se prověřuje zadaný text Matcher usepattern(pattern newpattern) Změní vzor, který bude v textu vyhledáván, nemění se však aktuální pozice v prohledávaném textu Matcher region(int start, int end) Nastaví nové meze prohledávané oblasti v textu int regionend() Vrátí index konce prohledávané oblasti int regionstart() Vrátí index počátku prohledávané oblasti Matcher reset() Matcher reset(charsequence input) Resetuje vyhledávač, v druhém případě jej nastaví na zadaný text. Současně nastaví aktuální oblast (region) na celý text. Neovlivní nastavení ukotvení okrajů (viz dále)

52 Copyright Rudolf Pecinovský, Soubor: Regularni_vyrazy.doc, verze , uloženo út :29 52 z 59 boolean hasanchoringbounds() Oznámí, zda má aktuální oblast ukotvené okraje, tj. zda lze její počátek označit metaznakem ^ a konec metaznakem $. boolean hastransparentbounds() Oznámí, zda má aktuální oblast průhledné okraje, tj. jestli dopředné či zpětné nahlédnutí (lookahead, lookbehind) vidí I za ně Matcher useanchoringbounds(boolean b) Nastaví (resp. zruší jejich nastavení) ukotvení okrajů Matcher usetransparentbounds(boolean b) Nastaví (resp. zruší jejich nastavení) průhlednosti okrajů

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

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský rudolf@pecinovsky.cz

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský rudolf@pecinovsky.cz Vaše jistota na trhu IT Balíčky Rudolf Pecinovský rudolf@pecinovsky.cz Problémy velkých aplikací Rozsáhlé aplikace používají velké množství názvů objektů a jejich zpráv, které různé části programu sdílí

Více

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

- 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

9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include

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

Více

Objektově orientované programování v jazyce Python

Objektově orientované programování v jazyce Python Objektově orientované programování v jazyce Python Co to je objektově orientované programování Python není přímo objektově orientovaný jazyk, ale podporuje nejdůležitější části objektově orientovaného

Více

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

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,

Více

Objektově orientované programování v jazyce Python

Objektově orientované programování v jazyce Python Objektově orientované programování v jazyce Python Základní pojmy objektově orientovaného programování Objekt vychází z reálného světa. Má dva charakteristické rysy. Všechny objekty mají stav Všechny objekty

Více

PHP tutoriál (základy PHP snadno a rychle)

PHP tutoriál (základy PHP snadno a rychle) PHP tutoriál (základy PHP snadno a rychle) Druhá, vylepšená offline verze. Připravil Štěpán Mátl, http://khamos.wz.cz Chceš se naučit základy PHP? V tom případě si prostuduj tento rychlý průvodce. Nejdříve

Více

Paměť počítače. alg2 1

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

Více

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni! Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného

Více

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

Více

Algoritmizace a programování

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,

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

Nápověda k pokročilému vyhledávání

Nápověda k pokročilému vyhledávání Nápověda k pokročilému vyhledávání Nový rešeršní systém zpřístupněný Úřadem jako systém s rozšířeným vyhledáváním obsahuje proti původnímu sytému mnohem více vyhledávacích možností. Nicméně základní možnosti

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

5. Ř etězce (třída String)

5. Ř etězce (třída String) Řetězce (třída String) strana 49 5. Ř etězce (třída String) Pro práci s řetězci (tj. s posloupností znaků) se v jazyce Java používá třída String. Třída String slouží k ukládání konstantních řetězců, jejichž

Více

Algoritmizace a programování

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

Více

7. Datové typy v Javě

7. Datové typy v Javě 7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů

Více

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

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

Více

Standardní algoritmy vyhledávací.

Standardní algoritmy vyhledávací. Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární

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

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

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

Metodika. Architecture First. Rudolf Pecinovský rudolf@pecinovsky.cz

Metodika. Architecture First. Rudolf Pecinovský rudolf@pecinovsky.cz Copyright Rudolf Pecinovský, Soubor: 2014_Comm_PrW_Architecture First Methodology.doc, verze 1.00.2413, uloženo po 9.6.2014 14:43 1 z 39 Metodika Architecture First Rudolf Pecinovský rudolf@pecinovsky.cz

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

Automatická segmentace slov s pomocí nástroje Affisix. Michal@Hrusecky.net, Hlavacova@ufal.mff.cuni.cz

Automatická segmentace slov s pomocí nástroje Affisix. Michal@Hrusecky.net, Hlavacova@ufal.mff.cuni.cz Automatická segmentace slov s pomocí nástroje Affisix Michal Hrušecký, Jaroslava Hlaváčová Michal@Hrusecky.net, Hlavacova@ufal.mff.cuni.cz Motivace Při zpracování přirozeného jazyka nikdy nemůžeme mít

Více

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Využití OOP v praxi -- Knihovna PHP -- Interval.cz Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování

Více

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií VY_32_INOVACE_33_05 Škola Střední průmyslová škola Zlín Název projektu, reg. č. Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávací oblast Vzdělávání v informačních a komunikačních

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

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

ALGORITMIZACE A PROGRAMOVÁNÍ

ALGORITMIZACE A PROGRAMOVÁNÍ Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení

Více

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

Objektově orientované programování

Objektově orientované programování 10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Úvod Informace o prostředí Práce se soubory Regulární výrazy Konec. Programování v C# Soubory a regulární výrazy. Petr Vaněček 1 / 27

Úvod Informace o prostředí Práce se soubory Regulární výrazy Konec. Programování v C# Soubory a regulární výrazy. Petr Vaněček 1 / 27 Programování v C# Soubory a regulární výrazy Petr Vaněček 1 / 27 Obsah přednášky Informace o prostředí Práce se soubory Regulární výrazy 2 / 27 Zprostředkování informací Třída System.Environment Poskytuje

Více

Zadání soutěžních úloh

Zadání soutěžních úloh Zadání soutěžních úloh Kategorie žáci Soutěž v programování 24. ročník Krajské kolo 2009/2010 15. až 17. dubna 2010 Úlohy můžete řešit v libovolném pořadí a samozřejmě je nemusíte vyřešit všechny. Za každou

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

HELP Rešerše průmyslových vzorů

HELP Rešerše průmyslových vzorů HELP Rešerše průmyslových vzorů Zpracoval D. Pičman Nový rešeršní systém zpřístupněný Úřadem jako systém s rozšířeným vyhledáváním obsahuje proti původnímu sytému mnohem více vyhledávacích možností. Nicméně

Více

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

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)

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

Datové struktury. alg12 1 Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou

Více

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury Data a datové typy 1 / 28 Obsah přednášky Základní datové typy Celá čísla Reálná čísla Znaky 2 / 28 Organizace dat Výběr vhodné datvé struktry různá paměťová náročnost různá

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

Základní principy vyhledávání firem

Základní principy vyhledávání firem Základní principy vyhledávání firem Vyhledávat informace v databázi lze několika způsoby. Základní způsob používá postupné kroky, kdy otevíráme tzv. slovníky, z nichž vybíráme požadované hodnoty, například

Více

Základní jednotky používané ve výpočetní technice

Základní jednotky používané ve výpočetní technice Základní jednotky používané ve výpočetní technice Nejmenší jednotkou informace je bit [b], který může nabývat pouze dvou hodnot 1/0 (ano/ne, true/false). Tato jednotka není dostatečná pro praktické použití,

Více

Laboratorní práce: SNMP - Linux snmputils

Laboratorní práce: SNMP - Linux snmputils Laboratorní práce: SNMP - Linux snmputils Petr Grygárek, VŠB-TU Ostrava, FEI Cílem této laboratorní práce je naučit se pracovat s proměnnými SNMP s použitím PC s OS Linux s a utilit snmputils. Propojte

Více

Seminář Java II p.1/43

Seminář Java II p.1/43 Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii

Více

EBSCO. http://search.ebscohost.com. Poklikneme na možnost EBSCOhost Web. Vybereme (poklepeme, zaškrtneme) databázi, s kterou chceme pracovat.

EBSCO. http://search.ebscohost.com. Poklikneme na možnost EBSCOhost Web. Vybereme (poklepeme, zaškrtneme) databázi, s kterou chceme pracovat. EBSCO http://search.ebscohost.com Poklikneme na možnost EBSCOhost Web Vybereme (poklepeme, zaškrtneme) databázi, s kterou chceme pracovat. Vyhledávací techniky Rejstříky Pomůckou pro vyhledávání jsou rejstříky,

Více

Lokální definice (1) plocha-kruhu

Lokální definice (1) plocha-kruhu Lokální definice (1) syntaxe: (local (seznam definic) výraz) definice jsou dostupné pouze uvnitř příkazu local příklad: (local ( (define Pi 3.1415926) (define (plocha-kruhu r) (* Pi r r)) ) (plocha-kruhu

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <-> Znaky každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak číslo) kódování jiný příklad kódování existuje mnoho kódů pojmy: morseova abeceda problémy o znaková sada které znaky

Více

OOPR_05. Případové studie

OOPR_05. Případové studie OOPR_05 Případové studie 1 Přehled probírané látky příklad skládání objektů - čára příklad skládání objektů kompozice a agregace přetížené konstruktory pole jako datový atribut 2 Grafický objekt - čára

Více

15. Projekt Kalkulačka

15. Projekt Kalkulačka Projekt Kalkulačka strana 143 15. Projekt Kalkulačka 15.1. Základní popis, zadání úkolu Pracujeme na projektu Kalkulačka, který je ke stažení na java.vse.cz. Po otevření v BlueJ vytvoříme instanci třídy

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

Konvertor diakritiky 3. Instalace

Konvertor diakritiky 3. Instalace OBSAH Popis... 2 Ovládání aplikace... 3 Odstranění diakritických znamének... 4 Operace s textem... 4 Nastavení aplikace... 4 Písmo... 4 Jazyk... 4 Přidání dalšího jazyka do aplikace... 5 Znaky... 5 Instalace

Více

Funkční objekty v C++.

Funkční objekty v C++. Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční

Více

Znak Slovy Popis Zdroj Výsledek Formátova cí řetězec v CZ verzi Excelu

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

Více

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence

Více

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal Aplikační vrstva Úvod do Php Ing. Martin Dostal Co to je PHP? php soubory se nekompilují, interpret je spouští přímo bez překladu php běží na serveru php soubor je.txt soubor obsahující php kód: Zkrácený

Více

Vytváření a použití knihoven tříd

Vytváření a použití knihoven tříd Vytváření a použití knihoven tříd 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 Prostory jmen motivace spolupráce

Více

MQL4 COURSE. By Coders guru www.forex-tsd.com. -4 Operace & Výrazy

MQL4 COURSE. By Coders guru www.forex-tsd.com. -4 Operace & Výrazy MQL4 COURSE By Coders guru www.forex-tsd.com -4 Operace & Výrazy Vítejte ve čtvrté lekci mého kurzu MQL4. Předchozí lekce Datové Typy prezentovaly mnoho nových konceptů ; Doufám, že jste všemu porozuměli,

Více

Jazyk C++ I. Polymorfismus

Jazyk C++ I. Polymorfismus Jazyk C++ I Polymorfismus AR 2013/2014 Jazyk C++ I Operátory Co to vůbec jsou operátory? Na co je používáme? AR 2013/2014 Jazyk C++ I 2 Operátory Můžeme si upravit operátory pro vlastní objektové typy?

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Nástroj pro monitorování a analýzu českého internetu a sociálních médií

Nástroj pro monitorování a analýzu českého internetu a sociálních médií Nástroj pro monitorování a analýzu českého internetu a sociálních médií SOCIAL INSIDER VLASTNOSTI Zachycuje data z Facebooku, Twitteru, Youtube, Google+, stejně jako z tisíců českých a slovenských blogů

Více

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model Databázové systémy Tomáš Skopal - relační model * relační kalkuly Osnova přednášky relační kalkuly doménový n-ticový Relační kalkuly využití aparátu predikátové logiky 1. řádu pro dotazování rozšíření

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

PŘIDÁNÍ SOUBORŮ DO OBLASTI PŘIPRAVENÝCH ZMĚN

PŘIDÁNÍ SOUBORŮ DO OBLASTI PŘIPRAVENÝCH ZMĚN NÁPOVĚDA D:\Projekt>git help [prikaz] D:\Projekt>git config help zobrazí nápovědu pro uvedený příkaz vypíše seznam parametrů, které lze zadat do konfiguračního nastavení Git u ZÁKLADNÍ NASTAVENÍ GIT D:\Projekt>git

Více

Z. Kotala, P. Toman: Java ( Obsah )

Z. Kotala, P. Toman: Java ( Obsah ) Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

Projekty pro výuku programování v jazyce Java

Projekty pro výuku programování v jazyce Java JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil

Více

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

1. Téma 12 - Textové soubory a výjimky

1. Téma 12 - Textové soubory a výjimky 1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se

Více

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

Více

Textové, datumové a časové funkce

Textové, datumové a časové funkce Textové, datumové a časové funkce EU peníze středním školám Didaktický učební materiál Anotace Označení DUMU: VY_32_INOVACE_IT4.15 Předmět: IVT Tematická oblast: Microsoft Office 2007 Autor: Ing. Vladimír

Více

Vyšší odborná škola, Střední odborná škola a Střední odborné učiliště Kopřivnice, příspěvková organizace. Střední odborná škola MATURITNÍ PRÁCE

Vyšší odborná škola, Střední odborná škola a Střední odborné učiliště Kopřivnice, příspěvková organizace. Střední odborná škola MATURITNÍ PRÁCE Vyšší odborná škola, Střední odborná škola a Střední odborné učiliště Kopřivnice, příspěvková organizace Střední odborná škola MATURITNÍ PRÁCE název práce Obor: Třída: Školní rok: jméno a příjmení autora

Více

Množina v C++ (set, multiset).

Množina v C++ (set, multiset). Množina v C++ (set, multiset). Množina je datová struktura, ve které jsou uloženy nějaké prvky. V množině nesmí být dva stejné prvky. Naopak multimnožina může obsahovat i stejné prvky. Nad množinou lze

Více

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG 2008-9)

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG 2008-9) Programování v C++ Úplnej úvod Co se naučíte? tak samozřejmě C++, s důrazem na: dynamické datové struktury Objektově Orientované Programování STL (standardní knihovna šablon) vytváření vlastních šablon

Více

Dolování v objektových datech. Ivana Rudolfová

Dolování v objektových datech. Ivana Rudolfová Dolování v objektových datech Ivana Rudolfová Relační databáze - nevýhody První normální forma neumožňuje vyjádřit vztahy A je podtypem B nebo vytvořit struktury typu pole nebo množiny SQL omezení omezený

Více

1. Umístěte kurzor do sloupce Datový typ na řádek s polem, ve kterém vytvořit chcete seznam.

1. Umístěte kurzor do sloupce Datový typ na řádek s polem, ve kterém vytvořit chcete seznam. 10.6.7 POSTUP TVORBY KOMBINOVANÉHO SEZNAMU 1. Umístěte kurzor do sloupce Datový typ na řádek s polem, ve kterém vytvořit chcete seznam. 2. V rozbalovací nabídce se seznamem datových typů vyberte volbu

Více

Katalog egon služeb verze: 0.01

Katalog egon služeb verze: 0.01 Katalog egon služeb verze: 0.01 Historie verzí Verze Datum Popis 0.01 20.7.2011 egon služby prototypu OBSAH 1 Úvod... 5 1.1 Členění dokumentu... 5 1.2 Třídy služeb... 5 1.3 SLA služeb... 6 1.3.1 SLA-01...

Více

Programy na PODMÍNĚNÝ příkaz IF a CASE

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

Více

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

Více

Šablonovací systém htmltmpl vypracoval: Michal Vajbar, 2007. Šablonovací systém htmltmpl

Šablonovací systém htmltmpl vypracoval: Michal Vajbar, 2007. Šablonovací systém htmltmpl Šablonovací systém htmltmpl 1 Představení šablonovacích systémů Každý, kdo se zabývá tvorbou webových aplikací dříve nebo později zjistí, že je vhodné oddělovat obsah aplikace od jejího vzhledu. Pokud

Více

Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny

Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny Knihovna XmlLib TXV 003 63.01 druhé vydání říjen 2012 změny vyhrazeny 1 TXV 003 63.01 Historie změn Datum Vydání Popis změn Prosinec 2010 1 První vydání, popis odpovídá XmlLib_v13 Říjen 2012 2 Druhé vydání,

Více

MQL4 COURSE. By Coders guru www.forex-tsd.com -3 DATA TYPES. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět:

MQL4 COURSE. By Coders guru www.forex-tsd.com -3 DATA TYPES. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět: MQL4 COURSE By Coders guru www.forex-tsd.com -3 DATA TYPES Vítám vás ve třetí lekci svého MQL4 kurzu. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět: Jaký formát můžete

Více

Dědění, polymorfismus

Dědění, polymorfismus Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá

Více

Jak vyhledávat. Vyhledávače KAPITOLA 3

Jak vyhledávat. Vyhledávače KAPITOLA 3 KAPITOLA 3 Jak vyhledávat Už víme, jak zacházet s programem Microsoft Internet Explorer, a můžeme se pustit do surfování. Ostatně, stejně jsme to při seznamování s funkcemi programu chtíce nechtíce dělali.

Více

8. Posloupnosti, vektory a matice

8. Posloupnosti, vektory a matice . jsou užitečné matematické nástroje. V Mathcadu je často používáme například k rychlému zápisu velkého počtu vztahů s proměnnými parametry, ke zpracování naměřených hodnot, k výpočtům lineárních soustav

Více

Amos Software Jednoznakové předložky. Co je modul Jednoznakové předložky. Instalace. Zkušební režim. Odemknutí plné funkčnosti

Amos Software Jednoznakové předložky. Co je modul Jednoznakové předložky. Instalace. Zkušební režim. Odemknutí plné funkčnosti Amos Software Jednoznakové předložky Zásuvný modul pro Adobe InDesign CS6.0 květen 2012, verze 8.0 AMOS Software spol. s r. o. Co je modul Jednoznakové předložky Zásuvný modul Jednoznakové předložky společnosti

Více

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem

Více

Datové typy strana 29

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

Více

PÍRUKA A NÁVODY PRO ÚELY: - RUTINNÍ PRÁCE S DATY

PÍRUKA A NÁVODY PRO ÚELY: - RUTINNÍ PRÁCE S DATY PÍRUKA A NÁVODY PRO ÚELY: - RUTINNÍ PRÁCE S DATY YAMACO SOFTWARE 2006 1. ÚVODEM Nové verze produkt spolenosti YAMACO Software pinášejí mimo jiné ujednocený pístup k použití urité množiny funkcí, která

Více

přetížení operátorů (o)

přetížení operátorů (o) přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního

Více

Excel Asistent Magazín 06/2003

Excel Asistent Magazín 06/2003 Excel Asistent Magazín 06/2003 Pojmenované oblasti Jiří Číhař, Dataspectrum http:// // ExcelAsistentMagazín je určen k volnému šíření. Pokud Vás jeho obsah zaujal, zašlete jej prosím svým kolegům a přátelům.

Více

Překladač a jeho struktura

Překladač a jeho struktura Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice

Více

ANOTACE vytvořených/inovovaných materiálů

ANOTACE vytvořených/inovovaných materiálů ANOTACE vytvořených/inovovaných materiálů Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Formát Druh učebního materiálu Druh interaktivity CZ.1.07/1.5.00/34.0722 III/2 Inovace a

Více

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

Více