Seminář C++ 10. cvičení Obsluha výjimek Ing. Jan Mikulka.

Slides:



Advertisements
Podobné prezentace
Standardní knihovní funkce pro práci s textovými řetězci
Advertisements

Programování v C jazyku - SEMINÁŘ
Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
Funkce Připomeňme si program pro výpočet faktoriálu:
Vstup a výstup doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Programování 2 Cvičení 5.
Pole, ukazatele a odkazy
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Počítače a programování 1. Obsah přednášky Výjimky - základní typy výjimek Způsoby zpracování výjimek.
C++ Přednáška 3 Konstantní a statické členy tříd, ukazatel this, konstantní instance třídy Ing. Jiří Kulhánek , kat. 352, VŠB TU Ostrava 2004.
Preprocess Úvod do tvorby funkcí Princip preprocesoringu Direktivy preprocesoru Podmíněný překlad Základy tvorby funkcí Zjednodušený popis principu předávaní.
Programování v C++ Cvičení.
Algoritmizace a programování
C++0x stručný náhled na nadcházející revizi standardu programovacího jazyka C++ (ISO/IEC 14882) Jan Ringoš.
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
Ing. Josef Veselý Označení šablony a vzdělávací sady viz.rozpis.
C – strukturované příkazy
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
C# - Exceptions (výjimky)
Ing. Josef Veselý Označení šablony a vzdělávací sady viz.rozpis.
Dynamická alokace, polymorfismus
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
Příklady v jazyku C – část 6
PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
6. cvičení Polymorfismus
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
Čísla Desetinná čísla. čísla desetinná se v PC ukládají jiným způsobem než čísla celá – výpočty s nimi provádí dvě odlišné části procesoru při výpočtech.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Příklady v jazyku C – část 3
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro vstup a výstup 12 Verze
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
IB111 Programování a algoritmizace
ZADÁNÍ Sestavte program, který vypočítá obvod a obsah čtverce o straně a. Zajistěte, aby výpočet byl realizován pouze v případě, kdy strana a bude mít.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Šesté cvičení Výjimky Balíky.
POSLOUPNOST úkol 1_41. ZADÁNÍ Sestavte program, který doplní tabulku nepřímé úměrnosti pro hodnoty proměnné x = 1, …, n. Nepřímá úměrnost je zadána uživatelem.
C# - konverze datových typů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
C – jak na procedury Mgr. Lenka Švancarová. C – procedury #include int main() { printf("Ahoj\n"); return(0); } #include void pozdrav(void) { printf("Ahoj\n");
FEL Komunikátor. Memory Leak program konsumuje operační paměť, kterou neumožňuje uvolnit o uvolnění paměti stará Garbage Collector ▫plně v režii Java.
Pokročilé programování v C++ (část B)
PŘÍKAZ while úkol 1_42.
Vazby dynamických proměnných,databázové systémy Přednáška č. 10.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část I.
ÚPLNÁ PODMÍNKA V JAVĚ úkol 1_29.
POSLOUPNOST test. ZKUSTE ODPOVĚDĚT Co je to komentář? Poznámky, které nám pomohou pochopit, když se k programu vrátíme po delší době, co jsme chtěli tou,
Funkce Přednáška č. 5. Funkce (functions)  posloupnost příkazů uvedená hlavičkou  využití – opakovaně volaná sekvence – strukturování programu – ošetření.
Šablony funkcí a tříd Šablony v C++ jsou vzory, podle kterých může překladač vytvářet celé skupiny podobných tříd či funkcí, které se liší jen v některých.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Datové typy a operátory Základní programové.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA:
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
Počítače a programování 2
Y36PJC Programování v jazyce C/C++
C# konzole – Podíl dvou čísel, podmínka IF
Y36PJC Programování v jazyce C/C++
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
ZAL – 3. cvičení 2016.
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
Výukový materiál zpracován v rámci projektu
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
Programování v jazyce C++
C# přehled vlastností.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Transkript prezentace:

Seminář C cvičení Obsluha výjimek Ing. Jan Mikulka

Ošetřování výjimek ► zpracování chyb ► umožňuje oddělit kód programu od kódu zpracování chyb – větší přehlednost ► knihovní funkce nemusí zpracovávat chyby, stačí vyvolat výjimku a zpracování chyby nechat na volající program ► nemusí se měnit syntaxe funkce - výhoda např. u konstruktorů,...

Schéma použití výjimek try { // pokusny blok // pokusny blok } catch(typ[identifikator]) { // telo handleru // telo handleru } ► handler (nebo více handlerů) musí bezprostředně navazovat na pokusný blok ► typ – datový typ proměnné, která nese informaci o výjimce ► identifikátor – proměnná nesoucí informaci o výjimce

Vyvolání výjimky ► klíčové slovo throw ► výjimka smí vzniknout jen v pokusném bloku

Neočekávané a neošetřené výjimky ► systém volá funkci terminate() v případě, že je třeba ukončit program ► terminate() je volána v případě absence vhodného handleru na vyvolanou výjimku, ta standardně volá funkci abort() ► voláním funkce set_terminate() můžeme předepsat funkci, kterou funkce terminate() bude volat místo abort(). Tato funkce by měla ukončit program!

Příklad ošetření dynamické alokace void* AlokujPamet(int size){ void* ptr; void* ptr; ptr = malloc((size_t) size; ptr = malloc((size_t) size; if (ptr==0) throw("nepodarilo se alokovat pamet"); if (ptr==0) throw("nepodarilo se alokovat pamet"); return ptr; return ptr;} int main(){ try{ try{ AlokujPamet(100); AlokujPamet(100); } catch(char* v){ catch(char* v){ printf("%s\n", v); printf("%s\n", v); }}

Příklad ošetření dělení nulou (a) class Zlomek {private: int C,J; public: void nastavCitatel(int c) { C = c;} void nastavJmenovatel(int j) {J = j;} double vydel() throw (Vyjimka) { if (J == 0) if (J == 0) { string s("Nulou delit nelze..."); string s("Nulou delit nelze..."); Vyjimka v(s); Vyjimka v(s); throw v; throw v; } return ((double)C / J); return ((double)C / J); }};

Příklad ošetření dělení nulou (b) class Vyjimka { /* Třída výjimek */ private: string Duvod; public: Vyjimka(string s) Vyjimka(string s) { Duvod = s; Duvod = s; } string hlaska() { return Duvod; } };

Příklad ošetření dělení nulou (c) ostream &operator<< (ostream &os, Vyjimka &v) { return os << v.hlaska() << endl; } int main(int argc, char* argv[]) { Zlomek z; Zlomek z;z.nastavCitatel(5); for(int i = 5; i > -5; i--) {z.nastavJmenovatel(i);try {/* Zkusim: */ cout << "5 / " << i << " = " << z.vydel() << endl; } catch (Vyjimka v) // Zde je odchycení výjimky tøídy Vyjimka { cout << v << endl; cout << v << endl;}} getchar(); getchar(); return 0; return 0;}

Zadání cvičení ► Napište šablonovou třídu: template class LIFO, která bude sloužit jako last-in-first-out zásobník. Třída bude obsahovat funkce Add(T) pro přidání prvku, T Get() pro odebrání prvku. Obě funkce vyvolají výjimku v případě pokusu o odebrání prvku z prázdného zásobníku, popř. pokusu o přidání prvku do plného zásobníku. V hlavním programu vytvořte instanci třídy LIFO a v nekonečném cyklu náhodně přidávejte / odebírejte náhodné prvky. Obslužte výjimky. ► program umístěte do samostatného hlavičkového souboru, nakreslete vývojový diagram ► ► použití nového „cout <<“ místo „printf()“ ► použití new a delete ► bodování: funkce (1 bod), rychlost (1 bod), stabilita a délka prog. (1 bod), implementace v hl. souboru (1 bod)

Výstup programu