Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)"

Transkript

1 Osnova přednášky Programové prostředky řízení Úvod do C# II. Členy (Members) Jmenné prostory (Namespaces) Třídy (Classes) Struktury (Structs) Pavel Balda Západočeská univerzita v Plzni, FAV, KKY 2 Členy (Members) Jmenné prostory a typy mají členy. Členy dané entity (objektu, jmenného prostoru) jsou dostupné pomocí kvalifikovaného jména: entita.jméno-člena Jmenný prostor (namespace): členy jsou jmenné prostory a typy deklarované uvnitř něj Struktura (struct): členy deklarované ve struktuře (např. jednoduché typy) a členy zděděné od třídy object Vyjmenovaný typ (enum): deklarované konstanty a členy zděděné z třídy System.Enum Třída (class): deklarované členy v této třídě a členy zděděné od bázové třídy kromě konstruktorů a destruktorů. Rozhraní (interface): deklarované členy v interfacu, členy všech bázových interfaců a členy zděděné od třídy object Pole (array) : členy zděděné z třídy System.Array Delegát (delegate): členy zděděné z třídy System.Delegate 3 Přístup ke členům Přístup ke členům je určen v deklaraci pomocí modifikátorů: public přístup není omezen protected přístup z typu v němž je deklarace a z odvozených typů internal přístup omezený na daný program protected internal přístup omezený na daný program nebo odvozené typy private přístup omezen na typ, v němž je deklarace uvedena Přístup ke členům (default je podtržen) Namespace vždy public, modifikátory se nesmějí uvádět Typy deklarované ve jmenných prostorech public nebo internal Členy tříd všech 5 druhů, default je private Struktury public, internal nebo private Rozhraní vždy public, modifikátory se nesmějí uvádět Vyjmenované typy vždy public, modifikátory se nesmějí uvádět 4 1

2 Jmenné prostory (namespaces) Kód programů v C# je organizován do jmenných prostorů namespace kvalifik.-identifikátor tělo-jmen.prostoru ; Středník na konci je nepovinný kvalifik.-identifikátor je složen z identifikátorů oddělených tečkami tělo-jmen.prostoru: direktivy-using deklarace-členů-jmen.prostoru Direktivy using i deklarace členů jmenného prostoru jsou nepovinné Deklarace jmenného prostoru se může nacházet v nejvyšší úrovni ve zdrojovém souboru (takový jmenný prostor se stává členem globálního jmenného prostoru) nebo se nachází uvnitř (vnitřní jmenný prostor) jiného jmenného prostoru (vnější jmenný prostor) V obou případech musí být jméno jmenného prostoru jedinečné uvnitř jej obsahujícího jmenného prostoru Všechny direktivy using musí být před deklarací členů jmenného prostoru Direktivy using Direktivy using usnadňují užívání jmenných prostorů a typů v nich definovaných. Existují ve dvou syntaxích: Direktiva pro import typů ze jmenného prostoru using jméno-jmenného-prostoru ; Příklad: using System.Windows.Forms; Direktiva pro náhradní jméno jmenného prostoru nebo typu using identifikátor = jméno-jmenného-prostoru-nebo-typu ; Používá se pro zkrácení odkazu pomocí zvoleného identifikátoru na nějaký jmenný prostor nebo typ: using Mutex = System.Threading.Mutex; 5 6 Jmenné prostory - příklady Členy jmenných prostorů 1. Ekvivalentní deklarace vnořených jmenných prostorů 2. Dvě třídy patřící do stejného plně kvalifikovaného jmenného prostoru 3. Direktiva using neimportuje vnořené jmenné prostory 4. Víceznačné jméno při importu několika jmenných prostorů Příklad 1 namespace N1.N2 class A class B nebo ekvivalentně namespace N1 namespace N2 class A class B Příklad 2 namespace N1.N2 class A namespace N1.N2 class B Příklad 3 namespace N1.N2 class A namespace N3 using N1.N2; class B: A Chyba, při deklaraci N3: namespace N3 using N1; class B: N2.A // N2 neznámý! Příklad 4 namespace N1 class A namespace N2 class A namespace N3 using N1; using N2; class B: A // A víceznačné! Členy jmenných prostorů mohou být vnořené jmenné prostory nebo deklarace typů: Třídy class Struktury struct Rozhraní interface Vyjmenovaného typu enum Delegátu delegate K deklarovaným typům ve jmenných prostorech je přístup public nebo internal, default je internal. Vnořené typy lze deklarovat ve třídách a ve strukturách 7 8 2

3 Třídy (Classes) Třída je datová struktura, která může obsahovat: Datové členy (konstanty a položky) Členské funkce (metody, vlastnosti, události, operátory, konstruktory a destruktory) Vnořené typy Třídy mohou využívat dědičnost (inheritance) Odvozená třída (derived class) může rozšiřovat a specializovat třídu základní (base class) Deklarace tříd atributy modifikátory-třídy class identifikátor bázetřídy deklarace-členů-třídy ; Atributy (příští přednáška), modifikátory třídy, báze třídy a středník jsou nepovinné Modifikátory tříd Deklarace třídy může obsahovat modifikátory public, protected, internal, private určují dostupnost třídy (viz Přístup ke členům) new přípustný u vnořených tříd. Nová třída skrývá stejnojmennou třídu předka abstract označuje neúplnou třídu, která je určena pouze jako bázová třída Nelze ji přímo instancovat, pokud se o to pokusíme, hlásí se chyba překladu Může obsahovat abstraktní členy Nemůže být uzavřená (sealed) sealed označuje třídu, od které nelze odvozovat nové třídy Používá se pro zabránění neúmyslnému odvozování Nemůže být abstraktní třídou Umožňuje optimalizovat kód (převádět virtuální metody na nevirtuální) 9 10 Specifikace báze třídy Deklarace třídy může obsahovat specifikaci přímé báze třídy, definující bázovou třídu a rozhraní implementovaná třídou báze-třídy : typ-třídy : seznam-typů-rozhraní : typ-třídy, seznam-typů-rozhraní Příklady class A class A: B class B: A class B: C class C: A // Chyba! // Cyklická závislost Členy tříd Členy tříd mohou být konstanty, položky (fields), metody, vlastnosti, události, indexery, operátory, konstruktory, destruktory, statické konstruktory, typy Třída dědí (obsahuje) členy své přímé bázové třídy kromě konstruktorů, destuktorů Dědičnost je transitivní: je-li C odvozena od B a B je odvozena od A, pak C dědí všechny členy B a též všechny členy A. Vnořené typy (nested types) jsou typy deklarované uvnitř tříd a struktur class A class B // třída B je vnořený typ v A static void F() Console.WriteLine("A.B.F");

4 Třídy - Konstanty Konstanta je člen reprezentující konstantní hodnotu, která může být vypočtena ve fázi překladu Deklarace konstanty atributy modifikátory-konstant const typ deklararátory-konstant; Atributy a modifikátory konstant jsou nepovinné Modifikátory mohou být new, public, protected, internal, private Deklarátory konstant se oddělují čárkami, každý je ve tvaru: identifikátor = konstantní-výraz Příklad: Ekvivalentní zápis class A class A public const double public const double X = 1.0; X = 1.0, Y = 2.0, Z = 3.0; public const double Y = 2.0; public const double Z = 3.0; Třídy Položky (fields) (1/2) Položka (field) je člen reprezentující proměnnou třídy (objektu) Deklarace položky atributy modifikátory-položek typ deklararátory-proměnných; Atributy a modifikátory položek jsou nepovinné Modifikátory mohou být new, public, protected, internal, private, static, readonly, volatile Deklarátory položek se oddělují čárkami, každý je ve tvaru: identifikátor identifikátor = výraz identifikátor = inicializátor-pole Příklad: Ekvivalentní zápis class A class A public static int public static int X = 1; X = 1, Y, Z = 100; public static Y; public static Z = 100; Třídy Položky (fields) (2/2) Statické položky v deklaraci je uveden modifikátor static Nejsou součástí konkrétní instance, existuje jen jedno umístění v paměti bez ohledu na vytvořený počet instancí objektu Položky instancí v deklaraci není uveden modifikátor static Každá instance má vlastní množinu položek instancí své třídy Položky pouze pro čtení deklarovány s modifikátorem readonly Do položek lze přiřazovat hodnoty v deklaraci, v konstruktoru instance pro položky instancí nebo ve statickém konstruktoru pro statické položky. Pokus o přiřazení v jiném kontextu vede k chybě překladu Nestálé (volatile) položky deklarace obsahuje volatile Zakazuje překladači optimalizační techniky vedoucí k změně pořadí instrukcí, které by mohly vést k nepředvídatelným výsledkům u více threadových programů bez synchronizace (např. příkazem lock) Položky volatile musí mít jeden z typů: Referenční typ byte, sbyte, short, ushort, int, uint, char, float nebo bool Vyjmenovaný typ založený na typech byte, sbyte, short, ushort, int, uint 15 Třídy Inicializace položek Deklarace položek mohou obsahovat inicializaci, která odpovídá přiřazovacím příkazům Pro statické položky se provádí při inicializaci dané třídy Pro položky instancí se vykonává při vytváření instance třídy Položky (statické i instancí) jsou inicializovány vždy. Pokud není inicializace uvedena, inicializují se na default hodnoty (vyplněním nulami). Na rozdíl od C++ nemohou být položky nikdy neinicializovány Příklad: using System; class Test static bool b; int i; static void Main() Test t = new Test(); Console.WriteLine("b = 0, i = 1", b, t.i); Vytváří výstup: b = False, i =

5 Třídy Metody (methods) Metoda je člen implementující výpočet nebo akci s danou třídou (objektem) Deklarace metody hlavička-metody tělo-metody Tělo metody je blok nebo prázdný příkaz Hlavička metody atributy modifikátory-metody návratový-typ jméno-člena ( seznam-formálních-parametrů ) ; Atributy, modifikátory a seznam formálních parametrů jsou nepovinné Modifikátory mohou být new, public, protected, internal, private, static, virtual, sealed, override, abstract, extern Návratový typ je buď název typu nebo void (metoda nic nevrací) Jméno člena identifikátor typ-rozhraní.identifikátor Třídy Parametry metod (1/3) Parametry metod jsou deklarovány v seznamu formálních parametrů pevné-parametry pevné-parametry, pole-parametrů pole-parametrů Pevné parametry tvoří seznam parametrů pevný-parametr oddělených čárkami. Pevný-parametr je definován: atributy modifikátor-parametru typ identifikátor Atributy a modifikátor jsou nepovinné, modifikátor může nabývat jedné ze dvou hodnot: ref nebo out Pole parametrů atributy params typ-pole identifikátor Třídy Parametry metod (2/3) Hodnotové parametry deklarovány bez modifikátorů Skutečný parametr při volání metody musí být implicitně konvertovatelný na hodnotový parametr Referenční parametr deklarován s modifikátorem ref Referenční parametr odpovídá stejnému místu v paměti jako proměnná, která je argumentem v okamžiku volání Výstupní parametr deklarován s modifikátorem out Podobný referenčnímu parametru, proměnná předávaná jako out parametr nemusí být inicializována před voláním, v metodě se považuje za nezinicializovanou (jako lokální proměnná) a před návratem z metody musí být přiřazena Příklad using System; class Test static void Swap(ref int x, ref int y) int temp = x; x = y; y = temp; static void Main() int i = 1, j = 2; Swap(ref i, ref j); //Pozor píše se ref (out)! Console.WriteLine("i = 0, j = 1", i, j); 19 Třídy Parametry metod (3/3) Pole parametrů parametr deklarovaný s modifikátorem params Pokud seznam parametrů obsahuje pole parametrů, musí být posledním parametrem a musí být jednodimenzionálním polem. Při volání mohou být argumenty zapsány dvojím způsobem Jedním výrazem, implicitně konvertovatelným na typ v poli parametrů Nulou nebo několika argumenty, kde každý argument je výraz typu implicitně konvertovatelného na typ prvku v poli parametrů Příklad using System; class Test static void F(params int[] args) Console.Write("Array contains 0 elements:", args.length); foreach (int i in args) Console.Write(" 0", i); Console.WriteLine(); static void Main() int[] arr = 1, 2, 3; F(arr); F(10, 20, 30, 40); F(); Tiskne výstupy: Array contains 3 elements: Array contains 4 elements: Array contains 0 elements: 20 5

6 Třídy Statické a instanční metody Statické metody deklarovány s modifikátorem static Nepracují s určitou instancí Nesmějí používat this, jinak je hlášena chyba překladu Pokud jsou použity ve tvaru E.M, označuje E jméno třídy a M jméno metody Metody instancí deklarovány bez modifikátoru static Pracují s instancí třídy Mohou používat this Pokud jsou použity ve tvaru E.M, označuje E jméno instance a M jméno metody Třídy Virtuální metody Nevirtuální metody neobsahují ve své deklaraci modifikátor virtual Implementace je shodná ve třídě ve které jsou zavedeny i ve třídách odvozených Virtuální metoda je taková metoda, jejíž deklarace obsahuje modifikátor virtual Implementace virtuální metody může být nahrazena odvozenými třídami Při běhu se podle typu instance rozhoduje, která metoda se zavolá Třídy Virtuální metody: Příklad Třídy Override metody Příklad: rozdíl mezi virtuální a nevirtuální metodou using System; class A public void F() Console.WriteLine("A.F"); public virtual void G() Console.WriteLine("A.G"); class B: A new public void F() Console.WriteLine("B.F"); public override void G() Console.WriteLine("B.G"); class Test static void Main() B b = new B(); A a = b; a.f(); b.f(); a.g(); // volá b.g, ne a.g! b.g(); Tiskne výstupy: A.F B.F B.G B.G 23 Override metoda je taková metoda, jejíž deklarace obsahuje modifikátor override Override metoda mění ( přebíjí ) implementaci existující zděděné virtuální metody (viz příklad na předchozí stránce) Naproti tomu virtuální metoda s modifikátorem virtual zavádí novou metodu Příklad pozor na vynechání override! class A public virtual void F() class B: A public virtual void F() // Warning, schování zděděné F() // - dá se odstranit přidáním modifikátoru new 24 6

7 Třídy Sealed a Abstract metody Použití modifikátoru sealed chrání sealed metody před možným přepsáním v odvozených třídách Je-li použit modifikátor sealed, musí být spolu s ním použit i override Abstraktní metoda používá modifikátor abstract Zavádí novou virtuální metodu, avšak bez implementace, proto tělo metody obsahuje jen středník. Implementaci musí dodat odvozené třídy Příklad nelze volat implementaci abstraktní metody z předka abstract class A public abstract void F(); class B: A public override void F() base.f(); // Chyba! base.f je abstraktní Třídy Externí metody Externí metody používají modifikátor extern Typicky jsou externí metody implementovány v jiném jazyku než C# Tělo metody je prázdné, obsahuje jen středník Modifikátor extern se typicky používá ve spolupráci s atributem DllImport Tím je umožněno, aby byly externí metody implementovány v DLL knihovnách [DllImport( kernel32, SetLastError=true)] static extern bool CreateDirectory(string name, SecurityAttribute sa); Třídy Vlastnosti (properties) Vlastnost je člen umožňující přístup k charakteristikám dané třídy (objektu), např. délka řetězce, velikost fontu, apod. Deklarace vlastnosti atributy modifikátory-vlastnosti typ jméno-člena deklarace-akcesorů Atributy a modifikátory jsou nepovinné Modifikátory mohou být new, public, protected, internal, private, static, virtual, sealed, override, abstract, extern Jméno člena identifikátor typ-rozhraní.identifikátor Modifikátory vlastností jsou velmi podobné s modifikátory metod (výše) Týká se modifikátorů static, virtual, sealed, override a abstract 27 Třídy Accessory vlastností Accessor vlastnosti specifikuje příkazy pro čtení a zápis vlastnosti Deklarace accessorů deklarace-accessoru-get deklarace-accessoru-set deklarace-accessoru-set deklarace-accessoru-get Deklarace druhého accessoru je nepovinná Deklaraceaccessoru get Atributy get tělo-accessoru Deklarace accessoru set Atributy set tělo-accessoru V obou deklaracích jsou atributy nepovinné. Tělo accessoru je buď blok nebo ; (středník) Příklad public class Button: Control private string caption; public string Caption get return caption; set if (caption!= value) caption = value; Paint( ); public override void Paint(Graphics g, Rectangle r) // Zde je kód pro vykreslení 28 7

8 Třídy Události (events) Třídy Události: Příklad Událost je člen umožňující třídě (objektu) poskytovat notifikace (oznámení). Klient může připojit svůj kód k události pomocí tzv. handlerů událostí (event handlers) Deklarace události atributy modifikátory-události event typ deklarátory-proměnných ; atributy modifikátory-události event typ jméno-člena deklarace-accessorů-události Atributy a modifikátory jsou nepovinné Modifikátory mohou být new, public, protected, internal, private, static, virtual, sealed, override, abstract, extern Události deklarované pomocí accessorů události (druhý případ) jsou mimo rámec přednášky Typ události musí být typ delegáta odvozený od třídy System.Delegate (příště) Pro přidání a odstranění handleru události se používají operátory += a -= 29 Příklad ukazuje, jak přidat handlery událostí k třídě Button public delegate void EventHandler(object sender, EventArgs e); public class Button: Control public event EventHandler Click; public class LoginDialog: Form Button OkButton; Button CancelButton; public LoginDialog() OkButton = new Button(...); OkButton.Click += new EventHandler(OkButtonClick); CancelButton = new Button(...); CancelButton.Click += new EventHandler (CancelButtonClick); void OkButtonClick(object sender, EventArgs e) // Handle OkButton.Click event void CancelButtonClick(object sender, EventArgs e) // Handle CancelButton.Click event Použití události vypadá jako by událost byla položka třídy Button 30 Třídy Indexery Třídy Indexery: Příklad Indexer je člen umožňující, aby byl objekt indexován stejným způsobem jako pole (array). Deklarace indexeru atributy modifikátory-indexeru deklarátor-indexeru deklarace-accessorů Atributy a modifikátory jsou nepovinné Modifikátory mohou být new, public, protected, internal, private, virtual, sealed, override, abstract, extern Pro modifikátory platí stejná pravidla jako u metod Deklarace accessorů je shodná s deklarací u vlastností (properties) Deklarátor indexeru typ this [ seznam-formálních-parametrů ] typ-rozhraní. this [ seznam-formálních-parametrů ] Typ v deklarátoru specifikuje typ položky pole Seznam formálních parametrů má stejný tvar jako u metod s výjimkou, že indexer musí mít alespoň jeden parametr a nelze užívat modifikátory ref a out 31 using System; class BitArray int[] bits; int length; public BitArray(int length) if (length < 0) throw new ArgumentException(); bits = new int[((length - 1) >> 5) + 1]; this.length = length; public int Length get return length; public bool this[int index] get if (index < 0 index >= length) throw new IndexOutOfRangeException(); return (bits[index >> 5] & 1 << index)!= 0; set if (index < 0 index >= length) throw new IndexOutOfRangeException(); if (value) bits[index >> 5] = 1 << index; else bits[index >> 5] &= ~(1 << index); 32 8

9 Třídy Operátory (1/2) Třídy Operátory (2/2) Operátor je člen definující význam operátoru ve výrazu, kde se vyskytuje daná třída Deklarace operátoru atributy modifikátory-operátoru deklarátor-operátoru tělo-operátoru Atributy jsou nepovinné Modifikátory mohou být public, static, extern Tělo operátoru je blok nebo ; (středník) Deklarátor operátoru typ operator přetížitelný-unární-operátor ( typ identifikátor ) typ operator přetížitelný-binární-operátor ( typ identifikátor, typ identifikátor ) implicit operator typ ( typ identifikátor ) explicit operator typ ( typ identifikátor ) Poslední dva případy jsou tzv. konverzní operátory Přetížitelný unární operátor je jedním z operátorů: + -! ~ true false Přetížitelný binární operátor je jedním z operátorů: + - * / % & ^ << >> ==!= > < >= <= Pro deklarace operátorů platí následující pravidla Deklarace operátorů musí obsahovat současně modifikátory public a static Parametry operátorů musí být hodnotového typu. Při použití ref a/nebo out parametrů je hlášena chyba překladu Nelze deklarovat dva operátory se stejnou signaturou Binární operátory Musí mít dva parametry, alespoň jeden musí mít typ třídy (struktury), ve které je deklarován Následující binární operátory vyžadují deklaraci po dvojicích operator == a operator!= operator > a operator < operator >= a operator <= Třídy Operátory: Příklad public class IntVector public IntVector(int length)... public int Length... // read-only property // read-write indexer public int this[int index]... public static IntVector operator ++(IntVector iv) IntVector temp = new IntVector(iv.Length); for (int i = 0; i < iv.length; i++) temp[i] = iv[i] + 1; return temp; class Test static void Main() IntVector iv1 = new IntVector(4); // vector of 4 x 0 IntVector iv2; iv2 = iv1++; // iv2 contains 4 x 0, iv1 contains 4 x 1 iv2 = ++iv1; // iv2 contains 4 x 2, iv1 contains 4 x 2 Třídy Operátoryis a as Operátor is se používá pro kontrolu, zda typ objektu při běhu (run-time type) po vyhodnocení výrazu e je kompatibilní s daným typem T e is T Je-li e rovno null, vrací false Je-li e typu T (a není null), vrací true Je-li e typu R pak se vrací true pokud existuje implicitní konverze z R na T (R je odvozený od T) int i = 0; char[] s = 'a','h','o','j'; Console.WriteLine("i is object: 0; s is string: 1", i is object, s is string); Vypíše výstup: i is object: True; s is string: False Operátor as se používá pro explicitní konverzi výrazu e na daný referenční typ T e as T Podobný explicitní konverzi výrazu e na typ T, avšak nikdy nezpůsobí výjimku, pokud konverze není možná, vrací null Pokud nelze konverzi nikdy provést, hlásí se chyba překladu V obou operátorech se používají implicitní konverze a zabalování (boxing) Operátory nepodporují uživatelem definované konverze!

10 Třídy Konstruktory instancí Třídy Statické konstruktory Konstruktor instance je člen, implementující akce nezbytné pro inicializaci instance třídy Deklarace konstruktoru atributy modifikátory-konstruktoru deklarátor-konstruktoru tělo-konstruktoru Atributy a modifikátory jsou nepovinné Modifikátory mohou být public, protected, internal, private, extern Tělo konstruktoru je blok nebo ; (středník) Deklarátor konstruktoru identifikátor ( seznam-formálních-parametrů ) inicializátor-konstruktoru Identifikátor musí být jménem třídy, ve které je konstruktor deklarován Pro seznam formálních parametrů platí stejná pravidla jako u metod Inicializátor konstruktoru je nepovinný. Není-li uveden je to jako : base() Inicializátor konstruktoru : base ( seznam-argumentů ) : this ( seznam-argumentů ) Seznam argumentů je nepovinný Specifikují jiné konstruktory, které budou vykonány předtím, než se vstoupí do těla konstruktoru Konstruktory instancí se nedědí! 37 Statický konstruktor je člen, implementující akce nezbytné pro inicializaci třídy Deklarace statického konstruktoru atributy modifikátory-statického-konstruktoru identifikátor ( ) tělo-statického-konstruktoru Atributy a modifikátory jsou nepovinné Modifikátory mohou být extern static nebo static extern. Modifikátor extern je nepovinný Tělo konstruktoru je blok nebo ; (pro modifikátor extern) Statické konstruktory se nedědí a nelze je volat přímo Statický konstruktor třídy se volá nejvýše jednou v dané aplikaci a je volán při první z následujících činností: Při vytváření instance dané třídy Při volání nějaké statické metody dané třídy 38 Třídy Destruktory Destruktor je člen, implementující akce nezbytné pro zrušení (destrukci) instance dané třídy Deklarace destruktoru atributy extern ~ identifikátor ( ) tělo-destruktoru Atributy a modifikátor extern jsou nepovinné Identifikátor musí být jménem třídy, ve které je destruktor deklarován Tělo konstruktoru je blok nebo ; (pro modifikátor extern) Destruktory se nedědí a nelze je volat explicitně Instance se stává způsobilou pro destrukci, pokud ji nemůže používat žádný kód. Instanci uklízí garbage collector Destruktory nemohou být přetížené (nemají parametry), proto třída může mít nejvýše jeden destruktor Destruktory jsou volány v pořadí od nejvýše odvozené třídy k níže odvozeným třídám 39 10

Ú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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Syntaxe vyjímek. #include <iostream> #include <string> 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

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

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

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

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

- 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

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

JAZYK C# ÚVOD. Literatura. Jazyk C# .NET Framework

JAZYK C# ÚVOD. Literatura. Jazyk C# .NET Framework JAZYK C# ÚVOD Literatura 1. VIRIUS, M. Od C++ k C#. České Budějovice: KOPP, 2002. 235 s. Cena 199 Kč. ISBN 80-7232-176-5. 2. NAGEL CH. et al. C# 2005. Programujeme profesionálně. Brno: Computer Press,

Více

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

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

Více

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

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

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

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

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

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4 Uložení dat v počítači Data = užitečné, zpracovávané informace Kódování (formát) dat = způsob uložení v počítači (nutno vše převést na čísla ve dvojkové soustavě) Příklady kódování dat Text každému znaku

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

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

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

Malý úvod do programování

Malý úvod do programování Malý úvod do programování v.net C# JAROSLAV PEŇAŠKA 1 Copyright 2006, Jaroslav Peňaška - všechna práva vyhrazena Všechny názvy společností a značek, obchodní známky a loga jsou majetkem svých příslušných

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

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování. Delphi lekce 6 Minimum z Object Pascalu Vrátíme se ještě k základům Object Pascalu. Struktura programu Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově

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

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

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

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

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

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

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

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

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

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

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

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

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

Více

Tematický celek 03 - Cvičné příklady

Tematický celek 03 - Cvičné příklady Tematický celek 03 - Cvičné příklady Cvičný 1 Dim a As Object Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Proceruda tlačítka "Vlož obsah

Více

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml

Rozhraní SAX, SAX vs. SAX2. Jaroslav Ciml Rozhraní SAX, SAX vs. SAX2 Jaroslav Ciml Použití SAX - připomenutí Vytvoření instance parseru XMLReader xmlreader = XMLReaderFactory.createXMLReader(); Registrace handleru xmlreader.setcontenthandler(

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

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

Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny

Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny Knihovna XmlLib TXV 003 63.01 první vydání prosinec 2010 změny vyhrazeny 1 TXV 003 63.01 Historie změn Datum Vydání Popis změn Prosinec 2010 1 První vydání, popis odpovídá XmlLib_v13 OBSAH 1 Úvod...3 2

Více

Programovací jazyk C# Marek Běhálek

Programovací jazyk C# Marek Běhálek Programovací jazyk C# Marek Běhálek Programovací jazyk C# Marek Běhálek Obsah Úvod. ix 1..NET framework 1 Architektura.NET Framework.. 1 CLR Common Language Runtime 2 CTS.. 2 Typová bezpečnost.. 3 Management

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

Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci

Stream API. Petr Krajča. Základy programovaní 4 (Java) Katedra informatiky Univerzita Palackého v Olomouci Základy programovaní 4 (Java) Stream API Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/ZP4JV 5. listopad, 2014 1 / 10 Stream API Java 8 nový přístup k práci s kolekcemi

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

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

PROGRAMOVÁNÍ PRO MS WINDOWS 1

PROGRAMOVÁNÍ PRO MS WINDOWS 1 Cílem předmětu je seznámit posluchače s moderními prostředky pro tvorbu aplikací pro Windows jmenovitě s programovou platformou.net a programovacím jazykem C#. V průběhu budou vysvětlena následující témata:

Více

Skriptovací jazyky. Obsah

Skriptovací jazyky. Obsah Skriptovací jazyky 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 Co je to skriptovací jazyk? Výhody a nevýhody

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

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

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

Knihovna Visualization

Knihovna Visualization Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky MVE - 2 Knihovna Visualization Miroslav Vavruška, Milan Frank 2. 5. 25 Obsah.Úvod... 2.Datový model pro

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

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

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

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

Ú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

Datové struktury a datové typy.

Datové struktury a datové typy. Datové struktury a datové typy. Základní datové typy. Odvozené datové typy. Základní datové struktury. Odvozené datové struktury. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a

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

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

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

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE Upozornění: Pro práci s RDF Oracle daty je třeba mít nainstalován Oracle Spatial Resource Description Framework (RDF). 1. Vytvoření tabulkového

Více

Rozšíření ksh vůči sh při práci s proměnnými

Rozšíření ksh vůči sh při práci s proměnnými Rozšíření ksh vůči sh při práci s proměnnými (X36UNX, Jan Skalický, 2006) Pole homogenní lineární struktura implicitn ě s číselným rozsahem index ů 0...1023 (někde 4095) implicitn ě řetězcov ě orientovaná

Více

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

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová

Více

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

KAPITOLA 2. Hádání slov ( šibenice ) Jakou hru budete tvořit

KAPITOLA 2. Hádání slov ( šibenice ) Jakou hru budete tvořit KAPITOLA 2 Hádání slov ( šibenice ) Jakou hru budete tvořit Obsahem této kapitoly je vytvoření hry, ve které se hráč snaží uhodnout slovo pomocí hádání jednotlivých písmen během omezeného počtu pokusů.

Více

Plánování a vývoj základního frameworku

Plánování a vývoj základního frameworku Shrnutí KAPITOLA 2 Plánování a vývoj základního frameworku Nyní, když máme jasno v tom, co nás v této knize čeká a proč, můžeme začít s vývojem našeho sociálního webu. Abychom zajistili rychlý postup vývoje,

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

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

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

Více

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

Design time - vytváří se program - metadata - vytváří se např. třída. Run time - běh programu - ukládá se do paměti počítače - vytváří se např.

Design time - vytváří se program - metadata - vytváří se např. třída. Run time - běh programu - ukládá se do paměti počítače - vytváří se např. Design time - vytváří se program - metadata - vytváří se např. třída Run time - běh programu - ukládá se do paměti počítače - vytváří se např. objekt rysy javy - zavedení jasného pořádku a etikety - přísné

Více

Komunikace se serverem IPAS skrze knihovnu clsipas

Komunikace se serverem IPAS skrze knihovnu clsipas Komunikace se serverem IPAS skrze knihovnu clsipas - 1 - Seznámení se systémem Server IPAS Server IPAS je výkonným jádrem pro registraci CZ, generických a ostatních domén. V budoucnu se IPAS stane jádrem

Více

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka Metody tvorby ontologií a sémantický web Martin Malčík, Rostislav Miarka Obsah Reprezentace znalostí Ontologie a sémantický web Tvorba ontologií Hierarchie znalostí (D.R.Tobin) Data jakékoliv znakové řetězce

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

Knihovna WebGraphLib

Knihovna WebGraphLib Knihovna WebGraphLib TXV 003 58.01 první vydání květen 2010 změny vyhrazeny 1 TXV 003 58.01 Historie změn Datum Vydání Popis změn Březen 2010 1 První vydání, popis odpovídá WebGraphLib_v10 OBSAH 1 Úvod...3

Více