Syntaxe vyjímek. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka { private:

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Syntaxe vyjímek. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka { private:"

Transkript

1 Vyjímky. Pod pojmem výjimka se rozumí nějaká výjimečná situace, která nastane v dané funkci. V jazyce C i C++ se často používá návratových hodnot funkcí, které vracejí úspěšnost provádění nějaké operace (např. -1, -2, -3,... se vrací v případě chyby, jinak se vrací 0 jako bez chyby). Chceme-li v posloupnosti několika řádků zdrojovém textu takto ošetřit všechny možné chyby, vznikne nám velice nepřehledný program plný vnořených příkazů if. Jinou možnost nám nabízí mechanizmus výjimek. Princip spočívá v tom, že označíme posloupnost příkazů do zvláštního bloku (try), říká se mu často hlídaný blok, ve kterém neošetřujeme žádné chyby. Právě v tomto bloku může vzniknout výjimka. Za tímto blokem označíme postupně jaké výjimky mohly v hlídaném bloku nastat, a jak je ošetřit. V C++ může být výjimkou proměnná jakéhokoliv primitivního datového typu, nebo instance jakékoliv třídy. Výjimka by v sobě měla nést nějakou informaci o situaci, která nastala a proč byla vyvolána.

2 Syntaxe vyjímek. Výjimka se vyvolá (vyvrhne) pomocí klíčového slova throw. Hlídaný blok se značí klíčovým slovem try. K odchycení vyvolaných výjimek slouží klíčové slovo catch. Vše uvedu na jednoduchém příkladu: Definice a implementace třídy, která reprezentuje (zpracovává) vyjímku. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka ; private: string Duvod; public: // Přístupove funkce // textovy popis void nastav(string d) Duvod = d; string dej() return Duvod; ostream &operator<< (ostream &os, Vyjimka &v) return os << v.dej() << endl; Výše definovaná výjimka jako třída poskytuje pouze textovou informaci. Pro textovou informaci jsou definované přístupové funkce. Mimo jiné je definovaná i nečlenské metoda operator <<, pro použití streamu. Třída používá STL knihovnu string. Knihovna zajišťuje zpracování řetězce, STL knihovny budou vysvětleny v tomto semestru později!

3 Definice třídy Zlomek. Třída provádí dělení čitatele jmenovatelem (operaci zlomku). Třída obsahuje přístupové metody nastavení hodnot jmenovatele a čitatele. Obsahuje metodu vydel(...). class Zlomek ; private: // Citatel, jmenovatel int C,J; public: // Pristupove funkce void nastavcitatel(int c) C = c; void nastavjmenovatel(int j) J = j; // Deleni osetreno vyjimkou double vydel() throw (Vyjimka); double Zlomek::vydel() throw (Vyjimka) // zacatek bloku 2 int *i = new int; if (J == 0) //zacatek bloku 1 string s("nejde"); Vyjimka v; v.nastav(s); throw v; // konec bloku 1 delete i; return ((double)c / J); // konec bloku 2 Právě metoda vydel(...) má definovanou vyjímku. V deklaraci metody vydel(...) se zde objevilo další klíčové slovo throw. Za slovem throw následuje seznam typů výjimek, které mohou být z dané metody (nebo i funkce) vyvrženy. V případě naší metody vyděl(...) se jedná o výjimky třídy Vyjimka. Nedoporučuji používat jako výjimky primitivní datové typy, i když syntaxe jazyka do umožňuje. V případě, že atribut J třídy zlomek bude v momentě zavolání metody vydel(...) roven nule, dojde k vyvolání výjimky. V tomto případě nejprve vytvořím instanci třídy Vyjimka, a poté ji příkazem throw vyvrhnu. Při vyvržení výjimky dojde k okamžitému opuštění aktuálního bloku daného závorkami. V našem příkladě jsem jej poznámkami označil jako blok 1. Výjimka byla z tohoto bloku vyvržena. Při opuštění tohoto bloku dojde k zavolání destruktorů všech lokálních instancí tak, jako by se jednalo o korektní opuštění bloku. V našem případě s a v. Nemusíte se obávat, že byla zlikvidována instance v, kterou bude v

4 budoucnu používat. Budete totiž pracovat s její kopií. Po opuštění bloku se výjimka šíří dále. Dojde k vyvržení výjimky z "vnějšího" bloku, v naše případě označeného jako blok 2. V tomto bloku budou opět korektně zlikvidovány všechny lokální instance. V našem případě bude zlikvidován ukazatel, ale nedojde k uvolnění paměti, na kterou ukazuje. Později ukážu, jak tento problém řešit. Příklad vstupní funkce aplikace main(...): int main(void) // instance tridy vyjimka a inicializace citatele Zlomek z1,z2; z1.nastavcitatel(10); z2.nastavcitatel(5); for(int i = 5; i > -5; i--) // nastaveni jmenovatele z1.nastavjmenovatel(i); z2.nastavjmenovatel(i); // proces deleni s moznosti odchytavani vyjimek try // zkouseno deleni cout << "10 / " << i << " = " << z1.vydel() << endl; cout << "5 / " << i << " = " << z2.vydel() << endl; catch (Vyjimka v) // odchyceni vyjimky (trida Vyjimka) cout << v << endl; // pouziti vyse definovane metody return 1; // pro stream operace Ve funkci main(...) je prováděno dělení s možným odchytem vyjímky v bloku označeným klíčovým slovem try. Při vyvržení výjimky z hlídaného bloku se zjistí, jestli za hlídaným blokem existuje pro tento typ výjimky odchycení catch. Jestliže ne, výjimka je vyvržená dále z aktuálního bloku. Jestliže ano, dojde k vykonání tohoto bloku označeného catch. Po odchycení a ošetření výjimky program normálně pokračuje příkazy za blokem catch. Jak jsem se již zmínil, při

5 vyvolání výjimky dojde k likvidaci všech lokálních proměnných. Je-li ale lokální proměnnou ukazatel, nebo reference, nedojde k uvolnění dat, na které "ukazují". Do našeho příkladu jsem úmyslně vložil do metody vydel(...) ukazatel na int. Při vyvolání výjimky se řádek delete neprovede. Paměť na kterou ukazatel ukazuje zůstane neuvolněná. Bylo by vhodné vyvrženou výjimku ošetřit na více místech. (V mém jednoduchém příkladě bych mohl jednoduše před slovo throw napsat delete i, já ale chci ukázat jak ošetřit výjimku na více místech). Opravme metodu vydel(...) následovně: double Zlomek::vydel() throw (Vyjimka) int *i = new int; try if (J == 0) //zacatek bloku 1 string s("nejde"); Vyjimka v; v.nastav(s); throw v; // konec bloku 1 delete i; catch (Vyjimka v) // Ošetrim, co mùžu delete i; throw; // V tomto pripade má stejný význam jako throw v; return ((double)c / J); Výjimku jsem odchytil ještě v metodě vydel(...). Uvolnil jsem paměť, na kterou ukazuje ukazatel i, a poté jsem výjimku opět vyvrhl. Jsme-li v bloku catch a chceme-li odchycenou výjimku poslat dále, nemusíme uvádět její název. Podívejme se ještě podrobněji na deklarace metod, ze kterých může být vyvržena výjimka. Metoda vydel(...) je deklarována: double vydel() throw (Vyjimka);. Znamená to, že z metody vydel(...) může být vyvržena výjimka třídy Vyjimka. Je-li více typů výjimek, které mohou být vyvrženy, oddělí se čárkou. Například double vydel() throw (Vyjimka,Jina1,Jina2); Není-li v deklaraci metody uvedeno klíčové slovo throw, znamená to, že z metody může být vyvržena JAKÁKOLIV výjimka. Pro ty, kteří znají Javu to může být trochu matoucí, protože v Javě je to přesně naopak (tedy žádná). Chceme-li v C++ deklarovat metodu, z níž nemůže být vyvržena výjimka, za deklaraci připíšeme throw (). Ještě jen zbývá dodat, že seznam výjimek, které mohou

6 být vyvrženy je součástí názvu metody, nebo funkce. Musí tedy být uveden i v deklaraci, i v definici. Výsledek programu je potom následující:

7 Odchycení jakékoliv výjimky Lze odchytit jakoukoliv vyjímku. Za klíčovým slovem catch místo typu a lokálního názvu výjimky uvedeme 3 tečky. Například: #include <iostream> using namespace std; class V1 ; class V2 ; int main() for(int i = 0; i < 5; i++) try if (i % 2 == 0) // vyvrzeni nejake první vyjimky V1 v; throw v; else // vyvrzeni nejake jine vyjimky V2 v; throw v; catch(...) // zachyceni jakekoliv vyjimky, zde nezname cout << "Chyceno" << endl; // ukonceni for cyklu Tento příklad nedává moc smysl, ale jasně ukazuje odchycení jakékoliv výjimky. Protože při vyvržení, i odchycení výjimky dochází často ke kopírování vyvržené výjimky na zásobník, je určitě efektivnější pracovat s referencemi, nebo ukazateli na výjimky. Vyjímky tvořící dědičnou hierarchii. C++ poskytuje používat vyjímky v situacích, kdy výjimky jsou odvozeny z jedné společné nadtřídy. Představme si třídu výjimek. Může být i abstraktní. Z této třídy dědí jiné výjimky, které jsou speciálním případem výjimky. Vytvořme si jako názornou ukázku-jednoduchou hierarchii výjimek.

8 Bázová třída vyjímky: #include <string> #include <iostream> using namespace std; // Bazova trida vyjimky class Vyjimka private: // Text vyjimky string Text; public: // Konstrukce vyjimky s parametrem textu Vyjimka(string s):text(s) ; // Pristupova metoda poskytnuti textu string dejtext() return Text; Odvozené třídy vyjímky: // Trida vyjimky deleni nulou (odvozena od bazove tridy) class DeleniNulou : public Vyjimka private: // Informace - ktere cislo delim nulou int Cislo; public: // Konstrukce vyjimky s parametrem textu a cisla DeleniNulou(string s, int i):vyjimka(s),cislo(i) ; // Pristupova metoda poskytnuti cisla int dejcislo() return Cislo; // Trida vyjimky preteceni (odvozena od bazove tridy) class Preteceni : public Vyjimka public: // Konstrukce vyjimky s parametrem textu Preteceni(string s):vyjimka(s) ; Vytvořili jsme tři výjimky. Nyní si ukážeme jak odchytávat výjimky, které mají společného předka. Problém je v tom, že musíme nejprve odchytit nejkonkrétnější výjimky a postupně odchytávat jejich nadtřídy.

9 Dokončím příklad: int main() for(short int p = 5; p >= 0; p--) // blok odchyceni vyjimek (blok kontroly) try // test vyjimky deleni nulou if (p == 0) /* Vyvrhnu ukazatel */ throw new DeleniNulou("Deleni nulou",10); cout << "10 / " << p << " = " << 10.0 / p << endl; // test vyjimky preteceni if ((short int ) (p * 10000) < p) throw new Preteceni("Pretekl short int"); // test na obecnou vyjimku, danou bazovou tridou if (p == 3) throw new Vyjimka("Jen tak, pro ukazku"); catch (Preteceni *v) // Odchyceni vyjimky preteceni cout << "Pøi násobení: " << v->dejtext() << endl; delete v; catch (DeleniNulou *v) // Odchyceni vyjimky deleni nulou cout << v->dejtext() << " nelze " << v->dejcislo() << "/0" << endl; delete v; catch (Vyjimka *v) // Odchyceni bazove vyjimky, nadtridu odchytim az posledni cout << v->dejtext() << endl; delete v; return 0; V příkladu jsme vyvrhli vždy ukazatel na třídu Vyjimka, nebo na nějakého potomka této třídy. Ukazatel na tuto třídu jsme museli odchytit až jako poslední. Stačí si uvědomit, že ukazatel na potomka je zároveň také ukazatelem na předka. Znamená to, že kdyby jsme odchytávali ukazatel na třídu Vyjimka jako první, došlo by zde vždy k odchycení a další výjimky by nebyly odchyceny nikdy. Můžete se o tom sami přesvědčit, když příklad upravíte tak, že nejprve bude blok catch (Vyjimka *v) a potom ostatní odchytávací bloky. Tento problém nastává samozřejmě vždy, nejen při používání ukazatelů jako v našem příkladě.

10 Všimněte si v příkladě řádků delete v;. Zde vždy zlikviduji výjimku, která byla vyvržená. Často se místo vyvrhnutí ukazatelů na výjimky a odchycení ukazatelů pracuje s referencemi. Uvedu jen jednoduchý příklad: #include <iostream> using namespace std; class V ; int main() try V v; throw v; catch (V &v) cout << "Chyceno" << endl; return 0; Výjimka opustí tělo funkce main(...). Nyní se podívejme, co se stane, jestliže výjimka není odchycená a opustí tělo funkce main. K tomuto účelu si napíšeme velice jednoduchý program: #include <iostream> using namespace std; int main() throw 1; /* Výjimka typu int */ cout << "Nestane se" << endl; return 0; V minulém článku jsem nedoporučoval používat jako výjimky primitivní datové typy, ale teď jsem to sám udělal. Snad mi to odpustíte, o typ výjimky teď vůbec nejde. Můžeme tento program zkompilovat a spustit. Uvidíme, že program se ukončí s nějakou chybovou hláškou : Neošetřená výjimka je dost závažná chyba, proto takto "tvrdý" konec. Výjimka bude vyvržená tak, jak jsme si ukázali minule. Opustí-li výjimka tělo naší funkce main(...), dojde k zavolání funkce terminate. Tato funkce, není-li předepsáno jinak, vypíše onu chybovou hlášku a ukončí

11 program zavoláním funkce abort. Funkce abort se postará o to, aby volajícímu procesu byla vrácena návratová hodnota 3. Takové chování nemusí být žádoucí. Můžeme například chtít vrátit jinou návratovou hodnotu, vypsat jinou, nebo žádnou hlášku (stderr u programů pod OS Windows není). Toho lze docílit pomocí funkce set_terminate. Funkce má jako parametr ukazatel na funkci, kterou má vyvolat volání funkce terminate. Funkce terminate i set_terminate jsou deklarovány v hlavičkovém souboru exception. Ve starších překladačích se tento soubor může jmenovat jinak. Například except.h Uveďme příklad: #include <exception> #include <iostream> using namespace std; void mojeterminate() cerr <<"Bohuzel, programator nebyl schopen osetrit vyjimky."<<endl; exit(-10); // Doporucuji vzdy ukoncit program. int main() set_terminate(mojeterminate); throw 1; // vyjimka typy int cout << "Nestane se" << endl; return 0; Takto je chování programu v případě, že výjimka opustí funkci main(...), dáno ANSI normou. Problém nastane u aplikací pro Windows, které žádný stderr nemají. Chováni funkce terminate je jiné, a nejspíše se pro každý překladač liší. Například Borland C++ Builder vytvoří dialogové okno s hláškou: "Abnormal program termination". Budete-li ale chtít experimentovat s výjimkami v GUI aplikaci, zjistíte, že všechny výjimky vyvržené z metod formulářů jsou ošetřeny nějakým mechanizmem, který je pro programátora "neviditelný". Chcete-li si zkusit v GUI aplikaci v BCPPB vyvrhnout výjimku z funkce WinMain (obdoba main), musíte výjimku vyvrhnout přímo v této funkci. Pokud možno mimo blok try. U GUI aplikací v OS Linux tento problém nenastává, protože v Unixových systémech mají i GUI aplikace svůj standardní chybový výstup. Vyvržení nedeklarované vyjímky. Je-li z těla funkce nebo metody vyvržená výjimka, která není v seznamu výjimek, které mohou být z těla funkce, nebo metody vyvrženy, dojde k zavolání funkce unexpected. Tato funkce implicitně zavolá funkci terminate. Chování funkce unexpected lze změnit pomocí funkce set_unexpected, která má jako svůj parametr ukazatel na funkci bez parametrů a vracející void. Použití funkce set_unexpected je obdobné jako použití funkce set_terminate. Funkce unexpected je deklarována v souboru exception.

12 Příklad: #include <exception> #include <iostream> using namespace std; void mojeunexpected() cerr << "Bohuzel, programator spatne pracuje s vyjimkami" << endl; exit(-10); void f() throw() throw 1; int main() set_unexpected(mojeunexpected); f(); return 0; Standardní vyjímky. V standardní knihovně C++ se výjimky příliš nepoužívají. Informace o chybě se často předává jako předem určená návratová hodnota z funkce, nebo metody, nebo pomocí chybového stavu - viz třeba objekt cin, nebo jiný objekt třídy istream, se kterým nelze pracovat v případě, že přečte chybná data. Několik standardních výjimek v C++ ale přece jenom je. Budeme se k nim postupně dostávat v dalších článcích. Všechny tyto výjimky jsou děděny ze třídy exception (např. ve Visual C++): class exception public: exception() throw(); exception(const exception& rhs) throw(); exception& operator=(const exception& rhs) throw(); virtual ~exception() throw(); virtual const char *what() const throw(); ; Jedna výjimka, o které by jsme už ale měli vědět je výjimka typu bad_alloc, nebo nějaký její potomek, kterou vyvrhne operátor new v případě, že selže. V některých starších překladačích, které neodpovídají normě, se setkáme s výjimkou typu xalloc. Výjimka bad_alloc je definována v prostoru jmen std. Operátor new v případě selhání může buď vrátit NULL, nebo vyvrhnout tuto výjimku. Operátor new může selhat v situaci, kdy nelze alokovat požadovanou paměť.

13 Úplné ošetření činnosti operátoru new je následující: int *pointer; try if ((pointer = new int[3]) == NULL) // Prece jenom, pro jistotu pokud new operator // vrati pouze NULL (zalezi na prekladacich) cout << "Vratil NULL" << endl; catch (std::bad_alloc &b) cout << "Vyhodil vyjimku" << endl; Jak se chová new, když selže, se můžete přesvědčit například tak, že v tomto příkladě místo čísla 3 (velikost pole) dáte hodně velké číslo. Chcete-li možnost vyvržení výjimky u operátoru new potlačit, lze to pomoci parametru operátoru new, který je nothrow: int *i; // Urcite new nevyvrhne vyjimku. i = new(nothrow) int[10]; Nevyvrhne-li výjimku operátor new, neznamená to samozřejmě, že nějaká nemůže být vyvržena z konstruktoru, který bude zavolán. Výjimka bad_alloc, i parametr nothrow (Je to vlastně prázdná struktura.) se vztahují pouze na selhání alokace paměti. Závěrem k vyjímkám. Výjimky jsou určitě skvělá a pohodlná věc. Vše ale něco stojí. Při používání výjimek platíme tu největší daň za používání objektově orientovanému programování. Výsledný program používající výjimky bude jednak o mnoho větší a také mnohem pomalejší. Bude pomalejší dokonce i tehdy, nebude-li žádná výjimka vyvržená. Stačí pouze, že existuje blok try. Uvědomme si, co vše se musí v hlídacím bloku kontrolovat. To vše stojí čas a také jsou k tomu potřebné instrukce navíc. Záleží-li Vám opravdu na rychlosti programu, potom je používání výjimek na pováženou. Naopak ale například v programovacím jazyce Java se to výjimkami jen "hemží" a s rychlostí si nikdo nedělá starosti. Stejně tak podíváme-li se například na funkci WinMain v BCPPB, zjistíme, že celé její tělo je vlastně v hlídacím bloku. Používání výjimek je sice drahé, ale pro programátora velmi užitečné.

14 Cvičení. Cv. 1. Napište svou obecnou bázovou třídu pro vyjímky. Výjimka poskytuje informaci o času vyvrhnutí vyjímky, o programu vyvrhnutí vyjímky, o kódu vyjímky (pokud neznámý, tak 0xFFFF) a o textu vyjímky. Definice virtuálních metod je provedeno v abstraktní třídě. Bázová třída obsahuje defaultní konstruktor, konstruktor s optimálními argumenty, přístupové metody s optimálními argumenty. Zvažte, které argumenty musíte předat třídě, které si třída vytáhne sama!! Abstraktní třída se jmenuje AbExcept, bázová třída se jmenuje BaseExcept. Cv. 2. Napište program pro opakované zadávání jména a příjmení, RČ. Jméno má maximálně 15 znaků, příjmení 20 znaků. Program ošetřete vy jímkami pro případ nesmyslných dat (dlouhé jméno, syntaxe RČ). Použijte Třídu vyjímky ze Cv. 1. Cv. 3. Vytvořte strukturu MyData, která obsahuje dynamické alokace řetězců. Struktura má defaultní konstruktor, funkci Init, virtuální destruktor. Funkce Init a defaultní konstruktor inicializuje všechny atributy na 0, včetně ukazatelů na dynamicky alokovatelné řetězce. Po inicializaci instance struktury, proveďte konstrukci std objektu string pomocí argumentu řetězce (v té době ukazujících na 0). Vyzkoušejte zda bude vyvrhnuta nějaká výjimka, pokud ano jaká, pokud lze něco zobrazit, zobrazte jako informaci.

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

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Globální konstantní proměnné Konstantní proměnné specifikujeme s klíčovým slovem const, tyto konstantní proměné

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

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

Kód. Proměnné. #include <iostream> using namespace std; int main(void) { cout << "Hello world!" << endl; cin.get(); return 0; }

Kód. Proměnné. #include <iostream> using namespace std; int main(void) { cout << Hello world! << endl; cin.get(); return 0; } Jazyk C++ Jazyk C++ je nástupcem jazyka C. C++ obsahuje skoro celý jazyk C, ale navíc přidává vysokoúrovňové vlastnosti vyšších jazyků. Z toho plyne, že (skoro) každý platný program v C je také platným

Více

Iterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0;

Iterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0; Iterátory v C++. Iterátor v C++ je vlastně taková obdoba ukazatelů pro kontejnery. Dříve, než se dostaneme k bližšímu vysvětlení pojmu iterátor, ukážeme si jednoduchý příklad, jak pracovat s obyčejným

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

17. Projekt Trojúhelníky

17. Projekt Trojúhelníky Projekt Trojúhelníky strana 165 17. Projekt Trojúhelníky 17.1. Základní popis, zadání úkolu Pracujeme na projektu Trojúhelníky, který je ke stažení na java.vse.cz. Aplikace je napsána s textovým uživatelským

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

map, multimap - Asociativní pole v C++.

map, multimap - Asociativní pole v C++. map, multimap - Asociativní pole v C++. Jedná se o asociativní pole. V asociativním poli jsou uloženy hodnoty ve tvaru (klíč,hodnota), kde klíč je vlastně "index" prvku. Klíčem může být libovolný objekt,

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

Virtuální metody - polymorfizmus

Virtuální metody - polymorfizmus - polymorfizmus - potomka lze použít v místě, kde je možné použít předka - v dosud probraných situacích byly vždy volány funkce, které jsou známy již v době překladu. V situaci, kdy v době překladu není

Více

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39 Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++ Proudy pro standardní vstup a výstup V jazyce C++ provádíme textový vstup a výstup prostřednictvím tzv. datových proudů Datové

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

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových

Více

3. Třídy. Základní pojmy objektového programování. Třídy

3. Třídy. Základní pojmy objektového programování. Třídy 3. Třídy Základní pojmy objektového programování Jak už víme, je Java objektovým programovacím jazykem. V úvodu této kapitoly si objasníme základní pojmy objektové teorie. Objekt představuje souhrn dat

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++ Dědičnost tříd Dědičnost umožňuje vytvářet nové třídy z tříd existujících tak, že odvozené třídy (tzv. potomci) dědí vlastnosti

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

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

Projekt Obrázek strana 135

Projekt Obrázek strana 135 Projekt Obrázek strana 135 14. Projekt Obrázek 14.1. Základní popis, zadání úkolu Pracujeme na projektu Obrázek, který je ke stažení na http://java.vse.cz/. Po otevření v BlueJ vytvoříme instanci třídy

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

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz) Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz) Autor: Radek Vystavěl Díl 12: Algebra Lineární transformace MATEMATIKA Lineární transformace, neboli přeet hodnoty x podle

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

Jazyk C++ II. Šablony a implementace

Jazyk C++ II. Šablony a implementace Jazyk C++ II Šablony a implementace AR 2013/2014 Jazyk C++ II Úvod Dědičnost a kompozice nejsou vždy tou správnou odpovědí na požadavky znovupoužitelnosti kódu. Proto máme možnost definování určité třídy

Více

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný typem proměnné - ukazatel je tedy adresa společně s

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

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu Procesy, vlákna Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu Implementace vláken one-to-one o implementace na úrovni jádra o každé vlákno je pro

Více

4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady Základy programování (IZAPR, IZKPR) Přednáška 5 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky Příkazy cyklu -

Více

Java aplety. Předávání parametrů z HTML

Java aplety. Předávání parametrů z HTML Java aplety Aplety jsou speciální formou Java aplikací - mohou být spouštěny z prostředí WWW prohlížeče. Aby je prohlížeč spustil, musíme vložit do HTML stránky potřebné příkazy:

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

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace

Více

2 Datové typy v jazyce C

2 Datové typy v jazyce C 1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,

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

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

Proměnné a datové typy

Proměnné a datové typy Proměnné a datové typy KAPITOLA 2 V této kapitole: Primitivní datové typy Proměnné Opakování Mezi základní dovednosti každého programátora bezesporu patří dobrá znalost datových typů. Ta vám umožní efektivní

Více

Ošetřování chyb v programech

Ošetřování chyb v programech Ošetřování chyb v programech Úvod chyba v programu = normální záležitost typy chyb: 1) programátorská chyba při návrhu každých 10 000 řádek 1 chyba lze jen omezeně ošetřit (před pádem aplikace nabídnout

Více

1. Téma 03 - Rozhodování

1. Téma 03 - Rozhodování 1. Téma 03 - Rozhodování Cíl látky Seznámit se a prakticky si vyzkoušet zápis rozhodování v jazyce Java 1.1. Úvod Jednou z nejčastěji používanou konstrukcí při programování je rozhodování. Právě této problematice

Více

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch. 1. ŘEŠENÉ PŘÍKLADY 1.2 PŘÍKLAD 24-2-8-2_DOKONALÉ ČÍSLO Napište program, který má na vstupu přirozené číslo N > 1. Výstupem je informace o tom, zda toto číslo je/není dokonalé. (Dokonalé číslo je takové

Více

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje Konstanty I možnosti: přednostně v paměti neexistuje žádný ; o preprocesor (deklarace) #define KONSTANTA 10 o konstantní proměnná (definice) const int KONSTANTA = 10; příklad #include v paměti

Více

Kolekce, cyklus foreach

Kolekce, cyklus foreach Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník 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 Abstraktní datové typy omezené rozhraní

Více

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro: 21.4.2009 Makra - dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h - jak na vlastní makro: #define je_velke(c) ((c) >= 'A' && (c)

Více

Prezentace a vysvětlení programového prostředí NXC

Prezentace a vysvětlení programového prostředí NXC Úvod Další jazyk, který je možno použít pro programování NXT kostky je NXC Not exatly C Na rozdíl od jazyku NXT-G, kde jsme vytvářeli program pomocí grafických prvků přesněji řečeno pomocí programovacích

Více

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write(\nPrumerna teplota je {0}, tprumer); Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());

Více

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans. 1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými

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

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

7. Dynamické datové struktury

7. Dynamické datové struktury 7. Dynamické datové struktury Java poskytuje několik možností pro uložení většího množství dat (tj. objektů či primitivních datových typů) v paměti. S nejjednodušší z nich, s polem, jsme se již seznámili.

Více

19. Projekt Adventura

19. Projekt Adventura Projekt Adventura strana 189 19. Projekt Adventura 19.1. Základní popis, zadání úkolu Pracujeme na projektu Adventura, který je ke stažení na java.vse.cz. Po otevření v BlueJ vytvoříme instanci třídy Hra.

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Programování v C++ Ostrava, 2008 Rostislav Fojtík

Programování v C++ Ostrava, 2008 Rostislav Fojtík Programování v C++ Ostrava, 2008 Rostislav Fojtík Obsah: Úvodní lekce... 5 1. Základy OOP v C++... 7 2. Nové prvky jazyka C++... 17 3. Třídy a instance... 29 4. Statické datové členy a funkce. Přátelé....

Více

PHP. nejen pro začátečníky. $c; echo { Martin Pokorný. Vzdìlávání, které baví www.c-media.cz. Nakladatelství a vydavatelství.

PHP. nejen pro začátečníky. $c; echo { Martin Pokorný. Vzdìlávání, které baví www.c-media.cz. Nakladatelství a vydavatelství. }else{ { if($b >$ c){ echo $max=$b; // vypí }else{ echo $max=$c; // vypí?> cas se }e B : se{ echo B ; default: ($b>$c){ echo C ; } $max=$b; }else{ $max=$c; PHP nejen pro začátečníky k;?> $c; echo { Martin

Více

Datové abstrakce v programovacích jazycích

Datové abstrakce v programovacích jazycích Datové abstrakce v programovacích jazycích Motivace Strukturovat rozsáhlé programy Dovolit separátní překlad Možné formy strukturování: Podprogramy původní forma abstrakce -abstrakce výpočtů Moduly kontejnery

Více

Úvod do programování. Lekce 5

Úvod do programování. Lekce 5 I N V E S T I C E D O R O Z V O J E V Z D Ě L Á V Á N Í Inovace a zvýšení atraktivity studia optiky reg. č.: CZ.1.07/2.2.00/07.0289 Úvod do programování Lekce 5 Tento projekt je spolufinancován Evropským

Více

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda 1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání

Více

Základní datové struktury

Základní datové struktury Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013

Více

Návšteva z Ameriky. Dne 11.11.2014 Tělocvična SPŠE

Návšteva z Ameriky. Dne 11.11.2014 Tělocvična SPŠE Návšteva z Ameriky Dne 11.11.2014 Tělocvična SPŠE Tohoto dne v tělocvičně naší školy proběhla velice vzácná a výjímečná akce pořádaná křesťanskou skupinou. Tato akce má název Exit Tour. Součástí této události

Více

6. blok část B Vnořené dotazy

6. blok část B Vnořené dotazy 6. blok část B Vnořené dotazy Studijní cíl Tento blok je věnován práci s vnořenými dotazy. Popisuje rozdíl mezi korelovanými a nekorelovanými vnořenými dotazy a zobrazuje jejich použití. Doba nutná k nastudování

Více

10 Balíčky, grafické znázornění tříd, základy zapozdření

10 Balíčky, grafické znázornění tříd, základy zapozdření 10 Balíčky, grafické znázornění tříd, základy zapozdření 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 příkazům balíčkům, grafickému

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

Lekce 19 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Lekce 19 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace

Více

Windows je registrovaná obchodní známka firmy Microsoft v USA a v ostatních zemích.

Windows je registrovaná obchodní známka firmy Microsoft v USA a v ostatních zemích. Sun, Sun Microsystems, Java a všechny obchodní známky a loga obsahující Sun nebo Java jsou ochrannými známkami nebo registrovanými ochrannými známkami firmy Sun Microsystems, Inc. v USA a v ostatních zemích.

Více

Práce se soubory v Javě

Práce se soubory v Javě Práce se soubory v Javě Cílem kapitoly je naučit pracovat se soubory a adresáři v Javě. Na jednoduchých příkladech ukázat procházení adresáře, čtení z textového souboru a zápis do textového souboru. Klíčové

Více

PHP a Large Objecty v PostgreSQL

PHP a Large Objecty v PostgreSQL PHP a Large Objecty v PostgreSQL Pavel Janík ml. http://www.janik.cz PHP a Large Objecty v PostgreSQL 1 Jazyk PHP je velmi mocným jazykem pro vývoj webových aplikací. Má podporu snad všech velkých i menších

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

Platforma.NET 4. hodina dnes to bude ideologické

Platforma.NET 4. hodina dnes to bude ideologické Platforma.NET 4. hodina dnes to bude ideologické Aleš Keprt Ales.Keprt@upol.cz říjen 2006 Doporučená literatura 1. Duffy J. Professional.NET Framework 2.0. Wrox Press, 2006. 2. Wikipedia.NET Framework

Více

Objektově orientované programování v jazyku C++

Objektově orientované programování v jazyku C++ Objektově orientované programování v jazyku C++ Ing. David Procházka, Ph.D., Ing. Ondřej Popelka, Ph.D., Mgr. Tomáš Foltýnek, Ph.D., Ing. Jan Kryštof, Ph.D., Ing. Hana Netrefová, Ph.D. 2 Obsah Obsah Cíl

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

Vstupní požadavky, doporučení a metodické pokyny

Vstupní požadavky, doporučení a metodické pokyny Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem

Více

Inovace bakalářského studijního oboru Aplikovaná chemie http://aplchem.upol.cz

Inovace bakalářského studijního oboru Aplikovaná chemie http://aplchem.upol.cz Inovace bakalářského studijního oboru Aplikovaná chemie http://aplchem.upol.cz CZ.1.07/2.2.00/15.0247 Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. Tvorba

Více

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu: Plán předmětu Název předmětu: Algoritmizace a programování (PAAPK) Školní rok: 2007/2008 Forma studia: Kombinovaná Studijní obory: DP, DI, PSDPI, OŽPD Ročník: I Semestr: II. (letní) Typ předmětu: povinný

Více

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury 1 / 34 Obsah přednášky Základní řídící struktury posloupnost příkazů podmínka cyklus s podmínkou na začátku cyklus s podmínkou na konci cyklus s pevným počtem opakování Jednoduchá

Více

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2014 5.9 10/14

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2014 5.9 10/14 ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2014 5.9 10/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 31 0:40 Programovací jazyky Programovací jazyky jsou jazyky

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

Standardní vstup a výstup

Standardní vstup a výstup Standardní vstup a výstup Trochu teorie S pojmy standardní vstup/výstup (I/O, input/output) jste se již pravděpodobně setkali, pokud ale ne, zde je krátké vysvětlení. Standardní vstup a výstup jsou vlastně

Více

PHP. Čtvrtek 8. září. Čtvrtek 15. září. Anonymní test znalostí

PHP. Čtvrtek 8. září. Čtvrtek 15. září. Anonymní test znalostí Čtvrtek 8. září Anonymní test znalostí Čtvrtek 15. září PHP je programovací jazyk, který pracuje na straně serveru. S PHP můžete ukládat a měnit data webových stránek. PHP původně znamená Personal Home

Více

Webový server lapache

Webový server lapache Webový server lapache Abstrakt lapache (lukas light apache) je jednoduchý UNIXový webový server podporující: podmnožinu HTTP 1.0/1 protokolu virtuální servery (s vlastními chybovými stránkami a kořenem

Více

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Proměnné 1.1 Deklarace a inicializace proměnných

Více

V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto:

V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto: 20. Programovací techniky: Abstraktní datový typ, jeho specifikace a implementace. Datový typ zásobník, fronta, tabulka, strom, seznam. Základní algoritmy řazení a vyhledávání. Složitost algoritmů. Abstraktní

Více

Roman Lukáš email: lukas@fit.vutbr.cz

Roman Lukáš email: lukas@fit.vutbr.cz ZADÁNÍ PROJEKTU Z PŘEDMĚTŮ IFJ A IAL Roman Lukáš email: lukas@fit.vutbr.cz 22. září 2008 1 Obecné informace Název projektu: Implementace interpretu imperativního jazyka IFJ08. Informace: diskusní skupina

Více

MySQLi (objektově) Příklad vytvoření instance třídy včetně parametrů pro připojení: $mysqli = new mysqli('localhost', 'login', 'heslo', 'databaze');

MySQLi (objektově) Příklad vytvoření instance třídy včetně parametrů pro připojení: $mysqli = new mysqli('localhost', 'login', 'heslo', 'databaze'); MySQLi (objektově) Rozšíření PHP MySQL - základní rozšíření umožňující práci s MySQL. Doporučuje se ho používat pouze do verze MySQL 4.1.3. I když je funkční i u novějších verzí, neumožňuje využití nových

Více

Testování. Zadání příkladu. Vytvoření kostry třídy. Obsah:

Testování. Zadání příkladu. Vytvoření kostry třídy. Obsah: Obsah: Testování... 1 Zadání příkladu... 1 Vytvoření kostry třídy... 1 Napsání testů... 2 Testy správnosti... 3 Testy výjimek... 3 Testy vztahů/závislostí... 4 Zdrojový text testu... 4 Spuštění testů...

Více

Datové typy a struktury

Datové typy a struktury atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro

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

Používáme pole a kolekce

Používáme pole a kolekce Kapitola Po přečtení této kapitoly budete schopni: Deklarovat, inicializovat a používat proměnné typu pole Deklarovat, inicializovat a používat proměnné různých typů kolekcí Nyní již víte, jak vytvářet

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

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

Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner

Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner Jakub Čermák http://www.jcermak.cz Microsoft Student Partner Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces

Více

7.5 Diagram tříd pokročilé techniky

7.5 Diagram tříd pokročilé techniky 7.5 Diagram tříd pokročilé techniky Stereotypy - jeden ze základních prostředků rozšiřitelnosti UML - pro modelovací konstrukce neexistující v UML, ale podobné předdefinované v UML definované uživatelem

Více

IPA - Lab.1 Úvod do programování v ASM

IPA - Lab.1 Úvod do programování v ASM IPA - Lab.1 Úvod do programování v ASM Ondřej Klubal http://www.fit.vutbr.cz/~iklubal/ipa/ 2014 Ondřej Klubal IPA - Lab.1 1 / 16 Osnova Nástroje Konvence volání Použití DLL Windows API Makra NASM + VS

Více

MQL4 COURSE. By Coders guru www.forex-tsd.com. -5 Smyčky & Rozhodnutí Part 1

MQL4 COURSE. By Coders guru www.forex-tsd.com. -5 Smyčky & Rozhodnutí Part 1 MQL4 COURSE By Coders guru www.forex-tsd.com -5 Smyčky & Rozhodnutí Part 1 Vítejte v páté lekci mého kurzu MQL4. Předchozí lekci si můžete stáhnout z tohoto odkazu: http://forex-tsd.com /attachment.php?attachmentid=399

Více

Desatero, aneb nejčastější chyby v programování

Desatero, aneb nejčastější chyby v programování Desatero, aneb nejčastější chyby v programování Aleš Keprt Univerzita Palackého listopad 2008, březen 2009 1. Nepoužívejte pole na místě veřejného rozhraní Používejte třídy obsahující pole uvnitř Pole

Více

Sekvenční a podmíněné provádění

Sekvenční a podmíněné provádění Programování v Bourne shellu Sekvenční a podmíněné provádění Sekvenční provádění znamená vykonávání jednoho příkazu za druhým bez ohledu na okolnosti. Pro oddělení příkazů při sekvenčním provádění se používá

Více

Programovací jazyk C++ Mgr. Rostislav Fojtík Ostrava, 1998

Programovací jazyk C++ Mgr. Rostislav Fojtík Ostrava, 1998 1 Programovací jazyk C++ Mgr. Rostislav Fojtík Ostrava, 1998 2 Obsah 1. Úvod...3 2. Základy objektově orientovaného programování v jazyku C++...4 2.1. Třídy...4 2.2. Dědičnost - inheritance...6 3. Nové

Více

Vstup a výstup datové proudy v C

Vstup a výstup datové proudy v C Vstup a výstup datové proudy v C Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 24. října 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Vstup a výstup 24. října 2011 1 / 37 Přehled, rozdělení

Více

MS Excel 2010. Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

MS Excel 2010. Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU MS Excel 2010 Základy maker Operační program Vzdělávání pro konkurenceschopnost Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU Registrační číslo: CZ.1.07/2.2.00/15.0224, Oblast podpory:

Více