Výjimky (exceptions), generické metody a třídy v C#

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

Download "Výjimky (exceptions), generické metody a třídy v C#"

Transkript

1 Výjimky (exceptions), generické metody a třídy v C# Obsah VÝJIMKY (EXCEPTIONS)... 1 Chyby v programu... 2 Testování návratových hodnot funkcí... 2 Pojem výjimka... 3 Neobsloužená výjimka (unhandled exception)... 3 Vznik výjimky... 3 Ošetřování výjimek... 4 Handler... 4 Použití bloků a catch:... 5 Třídy výjimek... 6 Použití více bloků catch Blok finally Příkaz throw GENERICKÉ TŘÍDY A METODY...18 Obecnost Deklarace generické metody má tvar: Příklady generických metod: Příklad generické třídy Seznam obrázků Seznam programů Cílem kapitoly je ukázat možnosti použití výjimek a generických metod v C#. Klíčové pojmy: Výjimky obsloužené a neobsloužené, ošetření výjimek, handler, bloky, catch, throw, finály, třídy výjimek, generické metody. Výjimky (exceptions) Výjimka souvisí s výjimečným stavem, který může v programu nastat a který může vést k havárii programu (nebyl nalezen soubor, s nímž má program pracovat, dělení nulou, nedostatek paměti, ). Bude rozebrán mechanizmus výjimek vyvolání ošetření kapitola 13 1/22

2 Chyby v programu Chyby - čím později se zjistí, tím je nákladnější je opravit - jsou různé chyby: některé odhalí kompilátor (nejlevnější) některé se zjistí při 1. spuštění některé vedou k havárii programu jen občas (nejnákladnější) Málo robustní chování programy zhroutí se za určitých okolností - výjimky (výjimečné situace): místo čísla zadáme písmeno dojde paměť není k dispozici disk, s nímž program pracuje dojde k přerušení spojení se sítí Programátoři s nestabilitou bojují tak, že se snaží vytvořit robustní prog., který si umí poradit s každou situací. Možné reakce programu na výjimečnou situaci: zhroutí se informuje uživatele a ukončí se informuje uživatele a nabídne mu obnovení běhu provede automatickou úpravu a pokračuje, aniž by uživatele rušil Testování návratových hodnot funkcí Chyby můžeme ošetřovat testováním návratových hodnot funkcí: Test existence souboru: if Console.WriteLine("Soubor existuje"); Jiný způsob testování existence souboru: Definujeme instanci třídy FileInfo: FileInfo file = new if(file.exists)console.writeline("soubor existuje"); Návratové hodnoty funkcí vyjadřují úspěšnost operace (-1 se obvykle vrací v případě chyby) kapitola 13 2/22

3 Zpracování výjimek v C# poskytuje mechanismus pro ošetření předvídatelných, ale neobvyklých okolností, které mohou nastat za běhu programu. Pojem výjimka Slovo výjimka může znamenat buď chybu vzniklou v programu, nebo objekt, který o ní nese informace. Neobsloužená výjimka (unhandled exception) Neobsloužená výjimka končí běhovou chybou programu s výpisem odpovídajícího hlášení, které informuje uživatele k jaké chybě došlo. Program 1 Program s neobslouženou výjimkou dělení nulou public class VstupInt static void Main() int a = Convert.ToInt32(Console.ReadLine()); int b = Convert.ToInt32 (Console.ReadLine()); double x = a/b; Console.ReadLine(); Po zadání hodnot: 10 0 Vypíše se zpráva o neobsloužené výjimce: Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero. Výjimka představuje problém, vzniklý za běhu programu, který je nutno odstranit, aby mohl program pokračovat v běhu. V kódu aplikace lze výjimku obsloužit. Obsloužená výjimka nemusí ukončit program. Vznik výjimky Některé výjimky může vyvolat samo prostředí.net Framework, jiné výjimky vyvoláváme příkazem throw, za nímž uvedeme odkaz na objekt, který ponese informace o chybě kapitola 13 3/22

4 Vyvolání výjimky: throw výraz; Výraz musí představovat odkaz na instanci třídy odvozené od System.Exception. Můžeme použít odkaz na existující objekt nebo můžeme vytvořit nový objekt pomocí new. Po vzniku výjimky se přeruší přirozené pořadí provádění příkazů a program začne hledat handler, část kódu, která vzniklou situaci ošetří. Tento výraz lze za jistých okolností vynechat. Ošetřování výjimek Práce s výjimkami je v C# založena na tzv. hlídaném bloku kódu. Operace, jež se nemusí podařit, tj. při nichž může vzniknout výjimka, uzavřeme do bloku, před nějž zapíšeme klíčové slovo. Za něj pak připojíme jeden nebo několik handlerů nebo koncovku (případně obojí). Ukažme si syntaktický popis hlídaného bloku: hlídaný blok: příkazy handlery nep koncovka nep Hlídaný blok musí obsahovat alespoň jeden handler nebo koncovku (nebo obojí). Handlerů může být více, koncovka může být nejvýše jedna. Handler Handler je část programu, která může ošetřit výjimku. Jeho syntax je handler: catch( typ identifikátor ) tělo handleru catch tělo handleru První možnost začíná klíčovým slovem catch, za kterým následuje v závorkách typ výjimky, kterou může tento handler ošetřit ("typ handleru"). Musí jít o třídu odvozenou od E x c e p t i o n. Identifikátor, který následuje, bude v těle handleru představovat odkaz na objekt, který nese informace o výjimce. Budeme mu také říkat "parametr handleru". Tělo handleru je tvořeno příkazy, které se zachycenou výjimkou "něco udělají", tedy které řeší vzniklou situaci. Příklad kódu pro ošetření chyby s využitím mechanismu výjimek: kapitola 13 4/22

5 // Nějaké nebezpečné funkce catch(nedostatekpameti) //Provedení nějakých akcí, které ošetřují nedostatek paměti catch(soubornenalezen) //Provedení jiné akce, která ošetřuje, že soubor nebyl nalezen Použití bloků a catch: Není jednoduché přijít na to, kam bloky umístit- nemusí být vždy zřejmé, které akce mohou vyvolat výjimky. Umístění : na místa alokace paměti využití zdrojů chyby, související s hraničními hodnotami neoprávněné vstupy. Význam klíčových slov: (zkusit) catch (zachytit) throw (zamítnout) finally (ukončení) Jinou možnost nám nabízí mechanizmus výjimek Hlídanou posloupnost příkazů označíme do zvláštního bloku ()- v tomto bloku může vzniknout výjimka. Za tímto blokem postupně uvedeme, jaké výjimky mohly v hlídaném bloku nastat, a jak je ošetřit. Co v C# může být výjimkou: proměnná jakéhokoliv primitivního datového typu 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. Syntaxe výjimek v C#: Výjimka se vyvolá (vyvrhne) pomocí klíčového slova throw. Hlídaný blok se značí klíčovým slovem. K odchycení vyvolaných výjimek slouží klíčové slovo catch kapitola 13 5/22

6 Třídy výjimek V C# je výjimka objektem vytvořeným (nebo) vyvolaným) v okamžiku vzniku výjimečného stavu. Zmiňovaný objekt obsahuje veškeré informace, nezbytné k nalezení problému. Třídy výjimek můžeme vytvářet sami. Můžete však čerpat z ohromného rezervoáru předdefinovaných tříd výjimek integrovaných do základní knihovny tříd ( BCL, Base Class Library) platformy.net Framework. Bázové třídy výjimek Hierarchie tříd odvozených od třídy System.Exception object Exception SystemException IndexOutOfRangeException ArithmeticException InvalidCastException DivideByZeroExceptio OverflowExceptio Obrázek 1 Hierarchie tříd výjimek kapitola 13 6/22

7 Třídy pro přenos informací o výjimkách Třídy pro přenos informací o výjimkách jsou ve jmenném prostoru System. Napíšete-li ve vývojovém prostředí Microsoft Visual Studio System., objeví se všechny členy jmenného prostoru System mezi jiným i třídy výjimek. Ty jsou ukončeny slovem Exception. Jestliže v editoru vývojového prostředí Microsoft Visual Studio nastavíte kurzor nad metodu ReadLine() u příkazu: int a = Convert.ToInt32(Console.ReadLine()); objeví se bublinková nápověda, která zobrazuje třídy výjimek, které mohou být aktivované v této metodě: System.IO.IOException System.FormatException System.OverflowException Zadáme-li na vstupu nečíselný znak, vznikne formátovací chyba: System.FormatException Zadáme-li příliš velké číslo (například ), může vzniknout System.OverflowException Ošetření uvedeného kódu ukazuje následující program: Program 2 Ošetření výjimek pro načení celého čísla a dělení nulou public class Program static void Main() int a = Convert.ToInt32(Console.ReadLine()); int b = Convert.ToInt32(Console.ReadLine()); double x = a / b; catch (FormatException) Console.WriteLine("Není zadané celé číslo"); catch (DivideByZeroException) Console.WriteLine("Dělení nulou"); catch (OverflowException) Console.WriteLine("Příliš velké číslo"); kapitola 13 7/22

8 Console.ReadLine(); Následující program zajišťuje správné zadání celého čísla: musí obsahovat pouze číslice a nesmí překročit hodnotu int.maxvalue. Program 3 Ošetření čtení celého čísla pomocí mechanismu výjimek public class VstupInt static int cislo; public static bool TestInt() cislo = Convert.ToInt32(Console.ReadLine()); return true; catch (FormatException) Console.WriteLine("Chybně zadané čislo"); return false; catch (OverflowException) Console.WriteLine("Příliš velké číslo"); return false; public static int CtiInt() bool f; do Console.WriteLine("Zadej celé čislo: "); f = TestInt(); while (!f); return cislo; public static void Main() int i = CtiInt(); Console.WriteLine(i); Podobně lze ošetřit zadávání hodnoty do znakové proměnné, nebo do proměnné typu double kapitola 13 8/22

9 Program 4 Ošetření čtení racionálního čísla pomocí mechanismu výjimek public class Vstup static double dcislo; public static bool TestDouble() dcislo = Convert.ToDouble(Console.ReadLine()); return true; catch (FormatException) Console.WriteLine("Chybně zadané číslo"); return false; public static double CtiDouble() bool f; do Console.WriteLine("Zadej racionální číslo: "); f = TestDouble(); while (!f); return dcislo; public static void Main() double d = CtiDouble(); Console.WriteLine(d); V další části programu je ukázáno, jak lze ošetřit, aby uživatel mohl zadávat v racionálním čísle jak desetinnou čárku, tak desetinnou tečku: Program 5 Ošetření čtení racionálního čísla - umožňuje zadat. i, public class Vstup static double dcislo; public static bool TestDouble() dcislo = Convert.ToDouble(Console.ReadLine().Replace('.', ',')); return true; catch (FormatException) Console.WriteLine("Chybně zadané číslo"); return false; kapitola 13 9/22

10 public static double CtiDouble() bool f; do Console.WriteLine("Zadej racionální číslo: "); f = TestDouble(); while (!f); return dcislo; public static void Main() double d = CtiDouble(); Console.WriteLine(d); Po načtení řetězce se pomocí metody Replace('.', ',') nahradí výskyt '.' (pokud existuje) ','. Program 6 Ošetření čtení racionálního znaku pomocí mechanismu výjimek public class VstupInt static char znak; public static bool TestChar() znak = Convert.ToChar(Console.ReadLine()); return true; catch (FormatException) Console.WriteLine("Chybně zadaný znak"); return false; public static char CtiZnak() bool f; do Console.WriteLine("Zadej znak: "); f = TestChar(); while (!f); return znak; public static void Main() char c = CtiZnak(); Console.WriteLine(c); kapitola 13 10/22

11 Následující program obsahuje všechny uvedené kontroly: Program 7 Kontrola vstupu znaku, celého a racionálního čísla public class Vstupy static char znak; public static bool TestChar() znak = Convert.ToChar(Console.ReadLine()); return true; catch (FormatException) Console.WriteLine("Chybně zadaný znak"); return false; static double dcislo; static bool f; public static bool TestDouble() dcislo = Convert.ToDouble(Console.ReadLine().Replace('.', ',')); return true; catch (FormatException) Console.WriteLine("Chybně zadané číslo"); return false; static int cislo; public static bool TestInt() cislo = Convert.ToInt32(Console.ReadLine()); return true; catch (FormatException) Console.WriteLine("Chybně zadané číslo"); return false; public static char CtiZnak() do kapitola 13 11/22

12 Console.WriteLine("Zadej znak: "); f = TestChar(); while (!f); return znak; public static double CtiDouble() do Console.WriteLine("Zadej racionální číslo: "); f = TestDouble(); while (!f); return dcislo; public static int CtiInt() do Console.WriteLine("Zadej celé číslo: "); f = TestInt(); while (!f); return cislo; public static void Main() int i = CtiInt(); Console.WriteLine(i); double d = CtiDouble(); Console.WriteLine(d); char c = CtiZnak(); Console.WriteLine(c); Program 8 Indikace přetečení indexu class PreteceniIndexu static void Main() int[] cisla = new int[5]; // deklarace pole typu int o délce 5 // blok kódu hlídající chyby Console.WriteLine("Před generováním chyby"); cisla[10] = 12; // přetečení indexu pole Console.WriteLine("Sem se nedostanu"); catch (IndexOutOfRangeException) // zachycení výjimky Console.WriteLine("Přetečení indexu"); Console.WriteLine("Po chybě"); kapitola 13 12/22

13 Použití více bloků catch Různé chyby generují různé druhy výjimek. Proto je třeba napsat více bloků catch za sebou. Dobrá vlastnost tohoto uspořádání je, že CLR (common language runtime) nasměruje program na správný blok catch, který je určen pro danou výjimku na základě jejího typu. Spojení výjimky s blokem catch se provede automaticky. Blok finally Výjimky způsobí skok v programu a nelze zaručit, že se nějaký příkaz spustí po ukončení předchozího, protože může dojít k vygenerování výjimky. Řešením je napsat příkaz, který má být vykonán za všech okolností v bloku finally. Blok finally můžete psát pouze bezprostředně po bloku nebo bezprostředně za poslední blok catch. Pokud program vstoupí do bloku, který je asociován s blokem finally, bude blok finally vždy spuštěn. Program 9 Indikace dvou chyb: dělení nulou a přetečení indexu class Osetreni2Vyjimek public static void Main() int[] cisla = new int[5]; int a = 5; int b = 0; // blok kódu hlídající chyby Console.WriteLine("Před generováním chyby"); a = a / b; // dělení nulou cisla[7] = 11; // přetečení indexu pole Console.WriteLine("Sem se nedostanu"); catch(dividebyzeroexception) // zachycení výjimky Console.WriteLine("Děleni nulou"); a = 0; catch(indexoutofrangeexception) // zachycení výjimky Console.WriteLine("Přetečení indexu"); finally Console.WriteLine("Toto se vypíše úplně vždy"); Program 10 Ošetření výjimky FileNotFoundException using System.IO; kapitola 13 13/22

14 class Pokus public static StreamReader sr; public static int OtevreniSouboru() // Čtení souboru sr = new StreamReader("..\\..\\Program1.cs"); return 0; catch (FileNotFoundException) Console.WriteLine("Soubor neexistuje"); return -1; static void Main() if (OtevreniSouboru()!= -1) string mystring = sr.readtoend(); sr.close(); // Zobrazení obsahu souboru. Console.WriteLine(myString); // Čekání na stisk klávesy. Console.ReadLine(); Program 11 Opakované dělení dvou čísel, dokud nezadáme nulu class Pokus public static double deleni(int a, int b) int c=a / b; return (double)a / (double)b; catch (DivideByZeroException) Console.WriteLine("Nulou dělit nelze"); return 0; static void Main(string[] args) int a, b; do Console.WriteLine("Zadej dělěnce (0 končí cyklus):"); a = Convert.ToInt32(Console.ReadLine()); if(a==0)break; Console.WriteLine("Zadej dělitele:"); kapitola 13 14/22

15 b = Convert.ToInt32(Console.ReadLine()); double x = deleni(a, b); if(x!=0)console.writeline("podíl je: 0:F2",x); while(a!=0); Příkaz throw Výjimku můžeme vyhodit manuálně pomocí příkazu throw: throw objektvyjimky; Příkaz throw vyhazuje object. Program 12 Výpočet průměru pěti známek V dalším příkladu si program vyžádá zadání známky. Pokud uživatel zadá číslo mimo interval 1 až 5, generuje se výjimka Pokud uživatel zadá správnou známku, výjimka se nevygeneruje a zadaná známka se přičte do vytvářeného součtu. Po zadání pěti správných známek se vypíše jejich průměr. class NeniZnamka:Exception public void vypis() class Program Console.WriteLine("Špatně zadaná známka"); static NeniZnamka n = new NeniZnamka(); static void Main() int z=0,i=0,s=0; do Console.WriteLine("Zadej hodnotu známky: "); z = Convert.ToInt32(Console.ReadLine()); if (z > 5 z < 1) throw n; s += z; i++; catch(neniznamka n) kapitola 13 15/22

16 n.vypis(); while(i<5); Console.WriteLine("Průměr známek je: 0", (double)s/5.0); Console.ReadLine(); Program 13 Výpočet průměru známek - zadávání je ukončeno nulovou hodnotou public class VstupInt public static int CtiInt() int i=0; bool b = false; do Console.WriteLine("Zadej známku: "); i = Convert.ToInt32(Console.ReadLine()); if (i < 0 i > 5) throw new ArithmeticException(); b = true; catch (FormatException) Console.WriteLine("Chybně zadané číslo!"); b = false; catch (ArithmeticException) Console.WriteLine("Známka je mimo rozsah"); b = false; while (!b); return i; static void Main() int a, S = 0, p = 0; do a = CtiInt(); S += a; p++; while (a!= 0); Console.WriteLine("Průměr správně zadaných známek je: 0:F2", (double)s/(double)(--p)); Console.ReadLine(); kapitola 13 16/22

17 Program 14 Určení názvu dne v týdnu Následující program implementuje metodu DT, která má jeden celočíselný argument den, reprezentující číslo dne v týdnu. Metoda vrací řetězec, který je název příslušného dne v týdnu. Řešení je provedeno příkazem switch, kde v případě nesprávně zadaného čísla se vytvoří objekt třídy ArgumentOutOfRangeException a v odpovídajícím bloku catch je vypsáno příslušné hlášeni: "Číslo je mimo rozsah". public class Den_v_Tydnu public static string DT(int den) switch(den) case 1: return "Pondělí"; case 2: return "Úterý"; case 3: return "Středa"; case 4: return "Čtvrtek"; case 5: return "Pátek"; case 6: return "Sobota"; case 7: return "Neděle"; default: throw new ArgumentOutOfRangeException(); public static string CtiInt() int den = 0; string s=""; Console.WriteLine("Zadej číslo dne v týdnu: "); den = Convert.ToInt32(Console.ReadLine()); s = DT(den); catch (FormatException) Console.WriteLine("Chybně zadané číslo!"); catch (ArgumentOutOfRangeException) Console.WriteLine("Číslo je mimo rozsah"); return s; static void Main() Console.WriteLine(CtiInt()); Console.ReadLine(); kapitola 13 17/22

18 Generické třídy a metody Dva nejdůležitější rysy jazyků vyšší úrovně jsou obsluha výjimek. generika (šablony) a Generické typy jsou definovány ve standardu C# a podporovány moderními překladači. Umožňují vytvářet znovupoužitelný a přizpůsobitelný kód. Generika (šablony typů) jsou konstrukce, v nichž typ dat je určen jako parametr - umožní použít jednu funkci nebo třídu pro několik různých typů dat. Podle šablon může překladač vytvářet celé skupiny podobných tříd nebo funkcí, které se navzájem liší jen v některých datových typech nebo v hodnotách některých konstant. Takto vytvořené funkce nebo třídy označujeme jako instance šablony. Generické metody a třídy umožňují obecnou definici algoritmu, kde konkrétní typ datových položek je uvedený až při vytvoření příslušných objektů a spuštění metod. Obecnost Obecnost je taková konstrukce třídy, která umožňuje dodání jedné nebo více jejích interně používaných částí až za běhu aplikace. Příklad Chceme použít nějaký algoritmus (např. třídění) na různé druhy dat (čísla, znaky, řetězce). V C# se parametrizovaná třída nazývá šablona typů. Obecná definice šablonové metody: < Typ> návratový_typ jméno(seznam parametrů) // tělo metody Obecná definice šablonové t:řídy, obsahující šablonové metody class NázevTřídy<Typ>; Deklarace generické metody má tvar: public static Ttyp identifikator<ttyp>(parame)příkazy Ttyp je typ dat, použitý metodou. V závorkách < > je parametr šablony. v závorkách ( ) jsou parame metody Definice ze standardní knihovny C++ (STL) jsou většinou založeny na šablonách. Překladač kontroluje syntaktickou správnost šablony v okamžiku, kdy narazí na její definici. Šablona funkce umožňuje vytvořit funkci na základě parametrů - parametrické programování kapitola 13 18/22

19 Příklady generických metod: Program 15 Generická metoda vrat1 vrací hodnotu prvního parametru V uvedeném programu generická metoda vrat1 vrátí hodnotu prvního argumentu pro různé typy dat. using System.Collections.Generic; class Generika public static T vrat1<t>(t a, T b) return a; public static void Main() int i = 1, j = 2; double a = 1.5, b = 1.2; char string s1 = "Petr", s2 = "Pavel"; Console.WriteLine("0", vrat1(i, j)); Console.WriteLine("0", vrat1(a, b)); Console.WriteLine("0", vrat1(c, d)); Console.WriteLine("0", vrat1(s1, s2)); Console.ReadLine(); Program vypíše: 1 1,5 # Petr Program 16 Generická metoda prohod prohodí hodnoty svých dvou parametrů Další program prohodí obsah prvního a druhého argumentu generické metody prohod using System.Collections.Generic; class Generika public static void prohod<t>(ref T a, ref T b) T pom; pom = a; a = b; b = pom; ; public static void Main() kapitola 13 19/22

20 int i = 1, j = 2; double a = 1.5, b = 1.2; char c = '#', d = string s1 = "Petr", s2 = "Pavel"; prohod<int>(ref i, ref j); prohod<double>(ref a, ref b); prohod<char>(ref c, ref d); prohod<string>(ref s1, ref s2); Console.WriteLine("0 1", i, j); Console.WriteLine("0 1", a, b); Console.WriteLine("0 1", c, d); Console.WriteLine("0 1", s1, s2); Console.ReadLine(); Obecný datový typ T je uvedený za názvem generické metody v lomených závorkách je to programátorem zvolený identifikátor (zde T jako template = šablona). Tento datový typ je dále použitý pro definování formálních parametrů metody namísto konkrétního datového typu. V Mainu jsou definované proměnné i,j typu int a a,b, typu double. Při volání generické metody prohod je třeba za jejím názvem uvést konkrétní datový typ argumentů v prvním případě int, v druhém double v lomených závorkách. Program 17 Generická metoda Spojeni spoji hodnoty svých parametrů, převedené na řetězce using System.Collections.Generic; class Generika public static string Spojeni<T>(ref T a, ref T b) return a.tostring()+" "+b.tostring(); public static void Main() int i = 1, j = 2; double a = 1.5, b = 1.2; char c = '#', d = string s1 = "Petr", s2 = "Pavel"; Console.WriteLine("0", Spojeni<int>(ref i, ref j)); Console.WriteLine("0", Spojeni<double>(ref a, ref b)); Console.WriteLine("0", Spojeni<char>(ref c, ref d)); Console.WriteLine("0", Spojeni<string>(ref s1, ref s2)); Console.ReadLine(); kapitola 13 20/22

21 Příklad generické třídy Program 18 Příklad generické třídy Následující program ukazuje definici a použití generické třídy Spojeni, která obsahuje přetíženou generickou metodu Spoj bez parametrů a se dvěma parame a konstruktor, který nastaví hodnoty privátních proměnných x,y na hodnoty svých parametrů. Vstupní bod programu (Main) je ve třídě Program a jsou zde vytvořeny čtyři objekty různých datových typů a konstruktorem třídy Spojeni proměnných jsou nastaveny hodnoty privátních pro konkrétní datové typy. Potom je pomocí těchto vytvořených objektů zavolaná neparametrická a následně parametrická metoda Spoj pro vypsání návratové hodnoty, která spojí hodnoty dvou proměnných obecného typu, převedené na řetězce. using System.Collections.Generic; class Spojeni<T> T x, y; public Spojeni(T x,t y) this.x=x; this.y=y; public string Spoj() return x.tostring() + " " +y.tostring(); public string Spoj(T x,t y) return x.tostring() + " " + y.tostring(); class Program public static void Main() Spojeni<int> s1 = new Spojeni<int>(10, 20); Spojeni<double> s2 = new Spojeni<double>(10.123, ); Spojeni<char> s3 = new Spojeni<string> s4 = new Spojeni<string>("Otec", "Matka"); Console.WriteLine("Volání neparametrické metody Spoj:"); Console.WriteLine(s1.Spoj()); Console.WriteLine(s2.Spoj()); Console.WriteLine(s3.Spoj()); Console.WriteLine(s4.Spoj()); Console.WriteLine("\nVolání parametrické metody Spoj:"); Console.WriteLine(s1.Spoj(20,10)); Console.WriteLine(s2.Spoj(20.321,10.123)); Console.WriteLine(s4.Spoj("Matka","Otec")); Console.ReadLine(); kapitola 13 21/22

22 Seznam obrázků Obrázek 1 Hierarchie tříd výjimek... 6 Seznam programů Program 1 Program s neobslouženou výjimkou dělení nulou... 3 Program 2 Ošetření výjimek pro načení celého čísla a dělení nulou... 7 Program 3 Ošetření čtení celého čísla pomocí mechanismu výjimek... 8 Program 4 Ošetření čtení racionálního čísla pomocí mechanismu výjimek... 9 Program 5 Ošetření čtení racionálního čísla - umožňuje zadat. i,... 9 Program 6 Ošetření čtení racionálního znaku pomocí mechanismu výjimek Program 7 Kontrola vstupu znaku, celého a racionálního čísla Program 8 Indikace přetečení indexu Program 9 Indikace dvou chyb: dělení nulou a přetečení indexu Program 10 Ošetření výjimky FileNotFoundException Program 11 Opakované dělení dvou čísel, dokud nezadáme nulu Program 12 Výpočet průměru pěti známek Program 13 Výpočet průměru známek - zadávání je ukončeno nulovou hodnotou Program 14 Určení názvu dne v týdnu Program 15 Generická metoda vrat1 vrací hodnotu prvního parametru Program 16 Generická metoda prohod prohodí hodnoty svých dvou parametrů Program 17 Generická metoda Spojeni spoji hodnoty svých parametrů, převedené na řetězce Program 18 Příklad generické třídy kapitola 13 22/22

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

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

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární

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

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

Dědičnost (inheritance)

Dědičnost (inheritance) Dědičnost (inheritance) Úvod Umožňuje objektům převzít (zdědit) členy jiných objektů a pouze je rozšířit o Auto: lze odvodit Vztah je osobní auto, cisterna jsou auta Základní pojmy Bázová třída (rodič)

Více

Java - výjimky. private void vstup() throws IOException {... }

Java - výjimky. private void vstup() throws IOException {... } Java - výjimky Tato kapitola ukazuje na několika příkladech práci s výjimkami v Javě. Klíčové pojmy: Výjimka, hierarchie výjimek, zachytávání výjimek, blok try-catch, tvorba vlastních výjimek, propagace

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

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

C# konzole Podíl dvou čísel, podmínka IF

C# konzole Podíl dvou čísel, podmínka IF C# konzole Podíl dvou čísel, podmínka IF Tematická oblast Datum vytvoření 2013 Ročník 3 Stručný obsah Způsob využití Autor Kód Internetové technologie, programování Výpočet podílu v konzolové aplikaci

Více

29. Výjimky, jejich vznik, vyhození, odchyt a zpracování. (A7B36PVJ)

29. Výjimky, jejich vznik, vyhození, odchyt a zpracování. (A7B36PVJ) 29. Výjimky, jejich vznik, vyhození, odchyt a zpracování. (A7B36PVJ) 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

Více

Generické programování

Generické programování Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =

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

10. března 2015, Brno Připravil: David Procházka. Programovací jazyk C++

10. března 2015, Brno Připravil: David Procházka. Programovací jazyk C++ 10. března 2015, Brno Připravil: David Procházka Práce s výjimkami Programovací jazyk C++ K čemu slouží výjimky Strana 2 / 25 Obsah přednášky 1 K čemu slouží výjimky 2 Vytváření výjimek 3 Speciální případy

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

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

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém

Více

Připravil: David Procházka. Programovací jazyk C++

Připravil: David Procházka. Programovací jazyk C++ 17. října 2011, Brno Připravil: David Procházka Práce s výjimkami Programovací jazyk C++ Obecně Strana 2 / 21 Jak se může program zachovat při chybě Dříve byl obvyklý způsob zavolat metodu abort. Metoda

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

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25 Seminář Java Výjimky Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Výjimky 1/ 25 Výjimky Co a k čemu jsou výjimky výjimka je mechanizmus umožňující psát robustní, spolehlivé

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

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

IRAE 07/08 Přednáška č. 7. Začátek (head)

IRAE 07/08 Přednáška č. 7. Začátek (head) Fronta (Queue) FIFO First In First Out (první dovnitř první ven) Vložení položky (Enqueue) Vyjmutí položky (Dequeue) Přidávání prvků Konec (Tail) Začátek (head) na jedné straně (konec) Odebírání prvků

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

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií 1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední

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

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

IW5 - Programování v.net a C# 4 Pokročilé konstrukce C#

IW5 - Programování v.net a C# 4 Pokročilé konstrukce C# 4 - Pokročilé konstrukce C# IW5 - Programování v.net a C# Strana 1 Obsah přednášky Výjimky Delegáti Události Lambda výrazy Strana 2 Výjimky a jejich zpracování Slouží k ošetření výjimečných (chybových)

Více

Jazyk C++ II. Výjimky

Jazyk C++ II. Výjimky Jazyk C++ II Výjimky AR 2013/2014 Jazyk C++ II Funkce abort Dříve byl obvyklý způsob zavolat metodu abort(). Metoda provádí okamžitě: Vyprázdnění vyrovnávací paměti, Ukončení celého programu, Vrátí číslo

Více

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Základy programování Úloha: Eratosthenovo síto Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Obsah 1 Zadání úkolu: 3 1.1 Zadání:............................... 3 1.2 Neformální zápis:.........................

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

Mnohotvarost (polymorfizmus)

Mnohotvarost (polymorfizmus) Mnohotvarost (polymorfizmus) TYPY MNOHOTVAROSTI... 2 PŘETĚŽOVÁNÍ METOD, PŘETĚŽOVÁNÍ OPERACÍ... 3 PŘETÍŽENÍ OPERÁTORŮ... 4 ČASTO PŘETĚŽOVANÉ OPERÁTORY... 4 PŘEPISOVÁNÍ... 7 VIRTUÁLNÍ METODY... 10 SEZNAM

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

Výjimky. v C# a Javě

Výjimky. v C# a Javě Výjimky v C# a Javě Výjimky v C# Výjimky poskytují v C# způsob, jak reagovat na nečekané události. Uživatel např. zadá místo čísla text nebo soubor, který chceme otevřít, je využíván jiným procesem. To

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

Sada 1 - PHP. 03. Proměnné, konstanty

Sada 1 - PHP. 03. Proměnné, konstanty S třední škola stavební Jihlava Sada 1 - PHP 03. Proměnné, konstanty Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284 Šablona: III/2 - inovace a

Více

Jazyk C# a platforma.net

Jazyk C# a platforma.net Jazyk C# a platforma.net Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe jazyka C# - 1. část BI-DNP Evropský sociální fond

Více

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

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

IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku

IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku Podprogramy zásady: jednu věc programovat pouze jednou podprogram logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku // nacteni strany 1 double

Více

IAJCE Přednáška č. 7. řízení semaforu na křižovatce = přepínání červená/oranžová/zelená

IAJCE Přednáška č. 7. řízení semaforu na křižovatce = přepínání červená/oranžová/zelená Výčtový typ Motivační příklad řízení semaforu na křižovatce = přepínání červená/oranžová/zelená const int CERVENA = 0; const int ORANZOVA = 1; const int ZELENA = 2; int prististav = CERVENA; while (true)

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

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

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Třídy v C++ Třídy jsou uživatelsky definované typy podobné strukturám v C, kromě datových položek (proměnných) však mohou obsahovat i funkce

Více

Textové soubory. alg9 1

Textové soubory. alg9 1 Textové soubory Textový soubor je posloupnost znaků členěná na řádky každý znak je reprezentován jedním bytem, jehož obsah je dán nějakým kódováním znaků členění na řádky je závislé na platformě a obvykle

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti 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

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

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní Základy jazyka C# 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 Obsah přednášky Architektura.NET Historie Vlastnosti

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

DUM 06 téma: Tvorba makra pomocí VBA

DUM 06 téma: Tvorba makra pomocí VBA DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie

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

Ú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

Jazyk C++ I. Šablony

Jazyk C++ I. Šablony Jazyk C++ I Šablony AR 2013/2014 Jazyk C++ I Úvod Zatím známe programovací styly: Strukturované programování, Objektově orientované programovaní. AR 2013/2014 Jazyk C++ I 2 Příklady void Print(const int&

Více

NPRG031 Programování II 1 / :47:55

NPRG031 Programování II 1 / :47:55 NPRG031 Programování II 1 / 43 23. 2. 2016 11:47:55 Objekty Svět se skládá z objektů! Objekt = data + funkce (metody) konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

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

Jazyk C# (seminář 5)

Jazyk C# (seminář 5) Jazyk C# (seminář 5) Pavel Procházka KMI 23. října 2014 Přetěžování metod motivace Představme si, že máme metodu, která uvnitř dělá prakticky to samé, ale liší se pouze parametry V C# můžeme více metod

Více

Algoritmizace a programování. Terminálový vstup a výstup

Algoritmizace a programování. Terminálový vstup a výstup Algoritmizace a programování Terminálový vstup a výstup Verze pro akademický rok 2012/2013 1 Výpis hodnot Terminálový vstup a výstup budeme používat jako základní způsob interakce programu s uživatelem

Více

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem Jazyk C++ 1 Blok 3 Objektové typy jazyka C++ Studijní cíl Ve třetím bloku bude představen a rozebrán nejdůležitější objektový typ jazyka C++ a to sice třída. Po absolvování bloku bude student schopen navrhovat

Více

5 Přehled operátorů, příkazy, přetypování

5 Přehled operátorů, příkazy, přetypování 5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování

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

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;

Více

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

Syntaxe vyjímek. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka { private: 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

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

Řídicí příkazy KAPITOLA 3. Vstup znaků z klávesnice

Řídicí příkazy KAPITOLA 3. Vstup znaků z klávesnice Řídicí příkazy V této kapitole se seznámíte s příkazy, které řídí postup provádění programu Příkazy řízení programu se řadí do třech kategorií: příkazy výběru, kam patří příkazy if a switch, příkazy iterace,

Více

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu } 5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu

Více

NPRG031 Programování II --- 2/2 Z, Zk

NPRG031 Programování II --- 2/2 Z, Zk NPRG031 Programování II --- 2/2 Z, Zk paralelka Y St 14:00-15:30 v S3 Pavel Töpfer Kabinet software a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer

Více

Klíčové pojmy: Cyklus, řídící proměnná, inicializace, test podmínky, přerušení cyklu, vnořování cyklů.

Klíčové pojmy: Cyklus, řídící proměnná, inicializace, test podmínky, přerušení cyklu, vnořování cyklů. Příkazy cyklu v C# Kapitola vysvětluje použití tří typů cyklů for, while a -while a plňuje jejich použití řau příkladů programů v jazyku C#. V jazyku C by šlo pouze k záměně funkcí pro vstup a výstup.

Více

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová Programové konvence, dokumentace a ladění 2. přednáška Alena Buchalcevová Proč dodržovat programové konvence? velkou část životního cyklu softwaru tvoří údržba údržbu provádí většinou někdo jiný než autor

Více

Jazyk C# (seminář 6)

Jazyk C# (seminář 6) Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++

Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++ Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++ Prostory jmen U programů mohou někdy nastat kolize mezi jmény (tříd, funkcí, globálních proměnných atd.) pokud v různých

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

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje f1(&pole[4]); funkci f1 předáváme hodnotu 4. prvku adresu 4. prvku adresu 5. prvku hodnotu 5. prvku symbolická konstanta pro konec souboru je eof EOF FEOF feof Správné vytvoření a otevření textového souboru

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury, standardní metody Problematika načítání pomocí Scanner Některé poznámky k příkazům Psaní kódu programu Metody třídy Math Obalové třídy primitivních datových

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

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

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

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

NMIN201 Objektově orientované programování 2016/17 1 / :03:29

NMIN201 Objektově orientované programování 2016/17 1 / :03:29 NMIN201 Objektově orientované programování 2016/17 1 / 42 21. 11. 2016 11:03:29 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty

Více

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Jazyk C++ I. Šablony 2

Jazyk C++ I. Šablony 2 Jazyk C++ I Šablony 2 AR 2013/2014 Jazyk C++ I Třídy template class TVektor { T *a; int n; static int PocInstanci; public: TVektor(int _n = 0) : n(_n) { a = new T[n]; PocInstanci++; } ~TVektor()

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

IRAE 07/08 Přednáška č. 1

IRAE 07/08 Přednáška č. 1 Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní

Více

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Pole Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 14 Číslo: V/5 Programování v jazyce

Více

Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015. poslední přednáška a materiál k samostudiu

Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015. poslední přednáška a materiál k samostudiu Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015 poslední přednáška a materiál k samostudiu @h0nza Raději už na začátku položte o otázku víc Vás to nic nestojí a ušetříte si spoustu

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

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

Výjimky. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Výjimky. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Výjimky A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Obsah Výjimky Pojem výjimky Princip mechanismu zpracování výjimek, try + catch Kompletní zpracování výjimek Vyhození

Více

Objektové programování

Objektové programování Objektové programování - přináší nové možnosti a styl programování - vytváří nový datový typ, který umí vše co standardní datové typy + to co ho naučíme - překladač se k tomuto typu chová stejně jako k

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

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

Výjimky a ošetřování chyb v PHP. Who is General Failure and why is he reading my disk?!

Výjimky a ošetřování chyb v PHP. Who is General Failure and why is he reading my disk?! Výjimky a ošetřování chyb v PHP Who is General Failure and why is he reading my disk?! Koncept výjimek Výjimky fungují jako v jiných jazycích. Výjimka je objekt třídy Exception (nebo třídy odvozené). Výjimky

Více

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20 Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................

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

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

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

Více

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 KAPITOLA 1 Na úvod o Javě 15 Počítačový program 15 Vysokoúrovňový programovací

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