18. února 2015, Brno Připravil: David Procházka. Programovací jazyk C++

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

Download "18. února 2015, Brno Připravil: David Procházka. Programovací jazyk C++"

Transkript

1 18. února 2015, Brno Připravil: David Procházka Základy programování v C++ Programovací jazyk C++

2 Historie C++: od Fortranu po C++11 Strana 2 / 53 Obsah přednášky 1 Historie C++: od Fortranu po C Připomenutí základů OOP v C++ 3 Překlad aplikace 4 Proměnné a práce s nimi 5 Štábní kultura 6 Const 7 Static 8 Override a final 9 Oddechnutí

3 Historie C++: od Fortranu po C++11 Strana 3 / 53 Trocha historie nikoho nezabije... Na počátku bylo slovo, to slovo bylo... Fortran Lze ho považovat za jeden z prvních programovacích jazyků současného typu. Dodnes je jeho nová verze používána pro programování různých matematických úloh. Jazyků postupně přibývalo... Simula, Cobol, LISP, Prolog, Smalltalk, C... Fortran inspiroval Algol, Algol CPL, CPL BPL, BCPL, BCPL B, B C

4 Historie C++: od Fortranu po C++11 Strana 4 / 53 Jazyk C Nízkoúrovňový jazyk. Systémový jazyk. Operační systémy, překladače, drivery. Rozsáhlé možnosti díky knihovnám. Nižší efektivita vývoje vyvážená rychlým a elegantním kódem a velkými možnostmi. Implementace OOP podle Smalltalku Objective C.

5 Historie C++: od Fortranu po C++11 Strana 5 / 53 Jazyk C++ Od základu zaměřen na OOP. Rychlejší vývoj aplikací oproti C. Spousta IDE Code::Blocks, Microsoft Visual Studio, Eclipse, Qt Creator, XCode (MacOS X)... a překladačů GCC, LLVM, IBM, Ms Vzor pro další OO jazyky Java, C#.

6 Historie C++: od Fortranu po C++11 Strana 6 / 53 Historie C/C Ritchie, Thomson (pro OS Unix) 1978 specifikace Ritchie, Kerninghan 1984 první standardizace ANSI C 1990 definitivní standardizace ANSI C 1980 C with Classes (první pokus o budoucí C++) 1983 C , 2003 standardizace ANSI/ISO C standardizace C++11 (dříve C++0x)

7 Historie C++: od Fortranu po C++11 Strana 7 / 53 C++11 Kompatibilita s C++98, tenký základ rozšířený zejména prostřednictvím STL, důraz na výkon a přímou práci s hadwarem, zlepšení vícevláknového a generického programování, doplněny požadované vlastnosti konkurence: rozsahové for cykly, podpora UTF-8/16/32... nové elegantní konstrukce: lambda výrazy, regulární výrazy, silně typové výčty, uživatelem definované literály atp.

8 Historie C++: od Fortranu po C++11 Strana 8 / 53 Je už C++ ideální volbou? NE Ideální univerzální jazyk neexistuje. Ale Je to stabilní, odladěný jazyk obsahující většinu moderních nástrojů. Je podporovaný prakticky na všech platformách. Ačkoliv je relativně vysokoúrovňový, je rychlý. Nehodí se na všechno např. zpracování textů. Není tak pohodlný mj. silně typový.

9 Připomenutí základů OOP v C++ Strana 9 / 53 Obsah přednášky 1 Historie C++: od Fortranu po C Připomenutí základů OOP v C++ 3 Překlad aplikace 4 Proměnné a práce s nimi 5 Štábní kultura 6 Const 7 Static 8 Override a final 9 Oddechnutí

10 Připomenutí základů OOP v C++ Strana 10 / 53 Připomenutí triviální aplikace 1 class Car { 2 private : // soukroma cast 3 string m_ model ; 4 public : // verejne rozhrani 5 Car ( string model ){ // konstruktor 6 m_ model = model ; 7 } 8 9 string getmodel (){ 10 return m_ model ; 11 } void setmodel ( string model ){ 14 m_ model = model ; 15 } 16 };

11 Připomenutí základů OOP v C++ Strana 11 / 53 Připomenutí triviální aplikace 1 int main ( void ) { 2 // vytvoreni promenne s ukazatelem 3 Car * ford ; 4 5 // vytvoreni objektu a prirazeni uk. 6 ford = new Car (" Fiesta "); 7 8 // volani metody 9 cout << " Model : " << ford -> getmodel (); // smazani objektu na ktery ford ukazuje 12 delete ford ; // predani OS informaci o korektnim konci aplikace 15 return 0; 16 }

12 Připomenutí základů OOP v C++ Strana 12 / 53 Statické a dynamické instance tříd Zásobník (Stack) je oblast využívaná pro volání funkcí, ukládání návratových adres, parametrů funkce a lokálních proměnných. Zásobník je koncipován na ukládání lokálních proměnných, není vhodný pro objemná data. Pro ty je halda (heap). V jazyce C slouží k alokování a uvolňování paměti na haldě funkce malloc(), resp. free(). V C++ jsou zde pak operátory new a delete.

13 Připomenutí základů OOP v C++ Strana 13 / 53 Statické a dynamické instance tříd Následující kód ilustruje vytvoření proměnné ukazatel na zásobníku, která ukazuje na objekt alokovaný na haldě. Objekt lze kdykoliv vytvořit a zrušit. 1 Car * ukazatel ; // vytvor promennou s ukaz. 2 ukazatel = new Car ; // vloz adresu objektu 3 ukazatel - > metoda (); // zavolani metody 4 delete ukazatel ; // smaz objekt za ukazatelem 5 ukazatel = new Car ; // a dosadime opet jiny Následující kód ilustruje vytvoření proměnné objekt na zásobníku, která přímo obsahuje hodnotu objektu. Objekt je lokální proměnnou, tedy zanikne automaticky na konci metody, ale není možné jej explicitně zrušit. 1 Car objekt ; // vytvorime promennou s obj. 2 objekt. metoda (); // opet volame metodu 3 Car objekt2 ( parametr ); // zavolani par. konst.

14 Připomenutí základů OOP v C++ Strana 14 / 53 Štábní kultura Odsazujte tak, aby byla patrná struktura kódu (ale nepřepisujte). Délku řádku udžujte na rozumné velikosti (ale nepřepisujte) Pojmenovávejte jednotným způsobem třídy (Trida, JinaTrida), proměnné (mojeinstance), metody (vypisinformace nebo VypisInformace), atributy (m mujatribut), proměnné třídy (s promtridy), globální proměnné (fuj, ale g pocet) atp. Pište krátké a jasné metody princip Keep It Stupid Simple. Každá entita by měla mít pouze jeden účel.

15 Připomenutí základů OOP v C++ Strana 15 / 53 Prostory jmen Třídy, ale i proměnné a případně další nástroje C++ lze třídit do skupin prostorů jmen. Smyslem je logicky rozčlenit aplikaci a vyhnout se potenciálním duplicitám v označení. Nemá smysl využívat u triviálních aplikací. Využíváme při tvorbě knihoven nebo komplexnějších aplikací. Pro identifikaci jmenného prostoru používáme operátor :: nebo deklaraci using namespace. Existuje implicitní prostor jmen, který nemá jméno. Podle ANSI C++ existuje standardní prostor jmen std, tam patří mnoho nástrojů.

16 Připomenutí základů OOP v C++ Strana 16 / 53 Implicitní a standardní prostory jmen 1 using namespace std ; 2 3 class Foo { }; 6 7 int main ( void ) { 8 Foo * ukazatel = new Foo (); 9 ukazatel -> metoda (); 10 delete ukazatel ; 11 return 0; 12 }

17 Připomenutí základů OOP v C++ Strana 17 / 53 Příklad prostoru jmen 1 namespace JmennyProstor { 2 class Foo { }; 5 } 6 7 class Foo { };

18 Připomenutí základů OOP v C++ Strana 18 / 53 Použití prostoru jmen 1 int main ( void ) { 2 JmennyProstor :: Foo * ukazatel1 3 = new JmennyProstor :: Foo (); 4 ukazatel1 -> metoda (); 5 delete ukazatel1 ; 6 7 Foo * ukazatel2 = new Foo (); 8 ukazatel2 -> metoda (); 9 delete ukazatel2 ; return 0; 12 }

19 Připomenutí základů OOP v C++ Strana 19 / 53 Další použití direktivy using 1 int main ( void ) { 2 // import v ramci metody / funkce 3 using namespace std ; } nebo 1 // import jedineho prikazu 2 using std :: cout ; int main ( void ) { 5...

20 Překlad aplikace Strana 20 / 53 Obsah přednášky 1 Historie C++: od Fortranu po C Připomenutí základů OOP v C++ 3 Překlad aplikace 4 Proměnné a práce s nimi 5 Štábní kultura 6 Const 7 Static 8 Override a final 9 Oddechnutí

21 Překlad aplikace Strana 21 / 53 Překlad 1 preprocesor předzpracovává zdrojový soubor.cc (.cpp) (include, defined). 2 kompilátor překladač provádí překlad zdrojového souboru.obj (.o) relativní strojový kód, adresy proměnných a fcí nejsou známy.lis protokol o překladu 3 linker sestavovací program provede přidělení absolutních adres.exe, spustitelný soubor Je doporučováno kompilovat při vysoké citlivosti kompilátoru (c++ -Wall -pedantic -o program program.cc). Pro překlad C++11 musíte také zvolit knihovnu libc++ (-std=c++0x -stdlib=libc++). V XCode je nalezneme pod nastavením C++ Standard Library a C++ Language Dialect.

22 Překlad aplikace Strana 22 / 53 Překlad více souborů U větších projektů je zvykem rozdělovat kód do více souborů. Obvykle pro každou třídu vytvoříme samostatný hlavičkový (.h) a implementační (.cc) soubor. Hlavní soubor programu (main.cc) vkládá pomocí direktiv include pouze hlavičkové soubory modulů (nikdy implementační soubory). Ty jsou překládány samostatně. c++./main.cc./lev.cc./zirafa.cc -o zookoutek

23 Překlad aplikace Strana 23 / 53 Hlavičkové soubory a jejich podmíněné načtení Hlavičkové soubory vždy obsahují veškeré direktivy include nezbytné pro samostatný překlad modulu (třídy). Implementační soubor (.cc) obsahuje pouze implementace nešablonových metod a jedinou direktivu include, která vloží hlavičkový soubor dané třídy. Hlavičkové soubory jsou často includovány vícekrát. je nutné zabránit jejich vícenásobnému načtení. K tomu slouží definice podmíněného bloku: Pokud blok kódu s tímto jménem nebyl definován, nadefinuj ho. 1 # ifndef _ MEDVED_ H 2 # define _ MEDVED_ H 3 // samotny obsah souboru medved. h 4 # endif

24 Proměnné a práce s nimi Strana 24 / 53 Obsah přednášky 1 Historie C++: od Fortranu po C Připomenutí základů OOP v C++ 3 Překlad aplikace 4 Proměnné a práce s nimi 5 Štábní kultura 6 Const 7 Static 8 Override a final 9 Oddechnutí

25 Proměnné a práce s nimi Strana 25 / 53 Datové typy (část) Základní Celočíselné: int, long int, short int, long long Reálné: float, double, long double Znaky a řetězce: char[16 t 32 t], string. Speciální: void, auto Velikosti typu záleží na dané architektuře. Zjistíme pomocí příkazu sizeof(int) nebo konstant INT MAX INT MIN, aj. Speciální Záznam, union, výčtový typ enumerate, výčtová třída, pole (inicializace int pole[3], resp. int pole[3] = {1,2,3} 1, přístup pole[0]) STL: seznam, fronta, zásobník,... U celočíselných typů existují také neznaménkové varianty unsigned. Číselný rozsah posunut pouze do kladných čísel. 1 možnost vložení objektů { { 1,2,3 },... }

26 Proměnné a práce s nimi Strana 26 / 53 Kontrola rozsahu 1 # include < climits > 2 using namespace std ; int main (){ 5 cout << " int is " << sizeof ( int ) << " B" << endl ; 6 cout << " short : " << sizeof ( short ) << " B" << endl ; 7 cout << " long : " << sizeof ( long ) << "B" << endl ; 8 cout << " Maximum values :" << endl ; 9 cout << " int : " << INT_ MAX << endl ; 10 cout << " short : " << SHRT_ MAX << endl ; 11 cout << " long : " << LONG_ MAX << endl ; 12 cout << " Minimum int value = " << INT_ MIN << endl ; 13 return 0; 14 }

27 Proměnné a práce s nimi Strana 27 / 53 Typy s garantovaným rozsahem (C++11) Znaménkový int o přesné bitové velikosti int8 t, int16 t, int32 t, int64 t uint8 t, uint16 t, uint32 t, uint64 t Rychlá (nativní) implementace int fast8 t, int fast16 t, int fast32 t, int fast64 t uint fast8 t, uint fast16 t, uint fast32 t, uint fast64 t Implementace zabírající nejméně paměti int least8 t, int least16 t, int least32 t, int least64 t uint least8 t, uint least16 t, uint least32 t, uint least64 t

28 Proměnné a práce s nimi Strana 28 / 53 Klíčové slovo auto (C++11) Automaticky se dosadí typ na základě inicializace. Nepoužívat pokud není typ zřejmý! 1 int x = 10; 2 auto y = x; // y je int

29 Proměnné a práce s nimi Strana 29 / 53 Deklarace a inicializace proměnných typ jmeno = inicializacni hodnota 1 int i = 1; // globalni promenna 2 int main ( void ) { 3 int j = 10; // lokalni prom. 4 int & ref = j; // reference na j, nutno hned inic. 5 return 0; 6 } Proměnná by měla mít co nejmenší možnou platnost. Při vytvoření prom. je vždy vhodné ji okamžitě inicializovat.

30 Proměnné a práce s nimi Strana 30 / 53 In-class inicializace proměnných (C++11) Dříve: 1 int var = 7; 2 class X { 3 static const int m1 = 7; // ok 4 const int m2 = 7; // error : not static 5 static int m3 = 7; // error : not const 6 static const int m4 = var ; // error : init. not const 7 static const string m5 = " odd "; // error : not integr 8 }; Nyní inicializace v době překladu: 1 class X { 2 int m_a = 7; 3 };

31 Proměnné a práce s nimi Strana 31 / 53 Konstruktory: inicializace v době překladu In-class inicializace je ekvivalent 1 class A { 2 int m_a ; 3 public : 4 A() : m_a (7) {} 5 }; Tento způsob inicializace atributů je nezbytný pokud atributem je objekt, který nemá bezparametrický konstruktor 1 class Vektor { 2 Bod m_x ; 3 Bod m_y ; 4 public : 5 Bod ( Bod x, Bod y): m_x (x), m_y (y ){...} 6 };

32 Proměnné a práce s nimi Strana 32 / 53 Konstruktory: delegování konstruktorů (C++11) Dříve: 1 class Bod { 2 int m_x ; 3 validate ( int x) { if (0 <x && x <= max ) a=x; else...} 4 public : 5 Bod ( int x) { validate (x); } 6 Bod () { validate (42); } 7 Bod ( string s) { int x= lexical_cast <int >(s); 8 validate (x );} 9 }; Nyní: 1 class Bod { Bod ( int x) { validate (x); }

33 Proměnné a práce s nimi Strana 33 / 53 Příklad metody vracející jednu hodnotu 1 class Vypocet { 2 public : 3 int secti ( int cislo1, int cislo2 ){ 4 return cislo1 + cislo2 ; 5 } 6 }; int x = 12; 10 int y = 45; 11 int a = objekt -> secti (a,b); 12 int b = objekt -> secti (10,12);

34 Proměnné a práce s nimi Strana 34 / 53 Vracení více hodnot Situace se lehce komplikuje, pokud potřebujeme vracet z metody více hodnot. Máme 2 možnosti, jak to realizovat: pomocí ukazatelů (*) nebo refencí (&). Subjektivně jednodužší je: 1 class Vymena { 2 public : 3 void vymen ( int &a, int &b){ 4 int pom = a; 5 a = b; b = pom ; 6 } 7 }; objekt -> vymen (a, b);

35 Proměnné a práce s nimi Strana 35 / 53 Vracení více hodnot varianta * 1 class Vymena { 2 public : 3 void vymen ( Student * a, Student * b){ 4 Student pom = a; 5 a = b; 6 b = pom ; 7 } 8 }; 9 10 int main ( void ){ 11 Student * karel = new Student (" Karel ", 11) 12 Student * pepa = new Student (" Pepa ", 11) 13 objekt -> vymen ( karel, pepa ); Často je doporučováno spojit hodnoty do jedné třídy a vrátit je pomocí return. Např. místo x a y vracet instanci Bod2D s vlastnostmi x a y.

36 Štábní kultura Strana 36 / 53 Obsah přednášky 1 Historie C++: od Fortranu po C Připomenutí základů OOP v C++ 3 Překlad aplikace 4 Proměnné a práce s nimi 5 Štábní kultura 6 Const 7 Static 8 Override a final 9 Oddechnutí

37 Štábní kultura Strana 37 / 53 Štábní kultura parametrů Hodnotou předáváme triviální vestavěné typy. Parametry, které slouží pouze pro vstup by měli být označeny const. Pokud se jedná o ukazatele na prom. je velmi doporučené označit je const. Reference (&) se používá nejen pro vracení hodnoty, ale i z důvodu efektivity. Reference na vstupní proměnnou by měla být vždy const. (nebezpečí modifikace původních dat) Např: void zpracuj(const vector<string>& vec), void udelej(const Velka3DMatice& prvek) Parametry by měly být pokud možno jednoduché typy a třídy.

38 Const Strana 38 / 53 Obsah přednášky 1 Historie C++: od Fortranu po C Připomenutí základů OOP v C++ 3 Překlad aplikace 4 Proměnné a práce s nimi 5 Štábní kultura 6 Const 7 Static 8 Override a final 9 Oddechnutí

39 Const Strana 39 / 53 Konstanty Pokud má mít parametr nebo proměnná stále stejnou hodnotu, použijte klíčové slovo const. Pozor na odkazy: const x* zajistí neměnnost ukazatele nikoli hodnoty. 1 const int kheight = 10; // konstantni lokalni prom. Všimněte si názvu. Bývá zvykem používat předponu k.

40 Const Strana 40 / 53 Konstanty Nepoužívat céčkové #define Má neomezenou platnost a nelze specifikovat typ. Konstanta na úrovni jmenného prostoru: const int kpagesize = 365; Konstanta na úrovni třídy: 1 class Window { 2 static const int s_ kwidth = 400; 3 static const int s_ kheigth ; 4 }; 5 6 const int Window :: s_ kheigth = 300;

41 Const Strana 41 / 53 Další aplikace const const u parametru metody označuje, že pouze vstupní. Pokud píšeme const za metodou, říkáme, že metoda nemění stav objektu. int vrathodonotuatributu() const; V C++ lze vytvořit i konstantní instanci, u které nelze nijak měnit vnitřní stav. U takové instance lze volat pouze metody deklarované s klíčovým slovem const.

42 Const Strana 42 / 53 Constexpr (C++11) constexpr umožňuje definovat, že funkce/metoda atp. se vyhodnocuje v době překladu. Může významně pomoci při optimalizaci kódu. Funkci/metodu ale lze volat i za běhu programu. Tj. není nutné oddělovat řešení pro výpočet v době překladu a v době běhu. 1 constexpr int secti ( int x, int y){ 2 return x+y; 3 } 4 5 // prekladac muze vyraz vyhodnotit pri prekladu 6 const int val = secti (10, 10);

43 Static Strana 43 / 53 Obsah přednášky 1 Historie C++: od Fortranu po C Připomenutí základů OOP v C++ 3 Překlad aplikace 4 Proměnné a práce s nimi 5 Štábní kultura 6 Const 7 Static 8 Override a final 9 Oddechnutí

44 Static Strana 44 / 53 Členské proměnné třídy Veškeré atributy, které jsme doposud používali byli atributy objektů byly unikátní pro jednotlivé objekty. V C++ můžeme definovat i atributy, které náleží přímo třídám členské proměnné. Pro deklaraci atributů třídy používáme static. Lze k nim přistupovat pomocí názvu třídy, :: a názvu proměnné (Třída::proměnná). 1 class Trida { 2 private : 3 static int s_ pocetinstanci ; // nelze napsat = 0; 4 int m_ normaniatribut ; 5...

45 Static Strana 45 / 53 Členské metody Členská metoda (označena static) nemá jako svůj první implicitní parametr this. Je to logické, protože není jasné pro který objekt je volána (není parametr this). V těle metody lze pracovat jen se statickými atributy a metodami třídy. Lze ji také zavolat, aniž by existovala nějaká instance dané třídy. 1 static int vratpocetinstanci () { 2 return pocetinstanci ; 3 }

46 Static Strana 46 / 53 Jiné využití static Je-li static globální proměnná (nebo funkce), je viditelná pouze v daném souboru zdrojového textu (modulu). Je-li static lokální proměnná funkce, potom její hodnota je uchovávána mezi jednotlivým voláním (zaniká při ukončení programu)

47 Override a final Strana 47 / 53 Obsah přednášky 1 Historie C++: od Fortranu po C Připomenutí základů OOP v C++ 3 Překlad aplikace 4 Proměnné a práce s nimi 5 Štábní kultura 6 Const 7 Static 8 Override a final 9 Oddechnutí

48 Override a final Strana 48 / 53 Override (C++11) Explicitní stanovení překrytí virtuální metody. 1 class Father { 2 virtual void A( float age ); 3 virtual void B() const ; 4 virtual void C (); 5 void D (); 6 virtual void E (); 7 }; 8 9 class Son : public Father { 10 virtual void A( int age ) override ; // zmena typu 11 virtual void B() override ; // predkovi const 12 virtual void C() override ; // korekni prekryti 13 void D() override ; // neni v predkovi virt. 14 void E() override ; // korektni prekryti 15 };

49 Override a final Strana 49 / 53 Final (C++11) Klíčovým slovem final označujeme metody nebo třídy, které nesmí být použity pro dědění. 1 class Father { 2 virtual void A() final ; // nelze prekryvat 3 }; 4 5 class Son : public Father { 6 virtual void A (); // chyba prekladace 7 }; V případě třídy nelze vytvářet potomka této třídy. 1 class Father final {}; 2 3 class Son : public Father {}; // chyba prekladace

50 Override a final Strana 50 / 53 struct vs. class struct znamená v praxi téměř přesně totéž, co class. U stuct, pokud není řečeno jinak, jsou složky veřejné. Struktura může být předkem třídy a opačně. 1 struct Trida { }; 4 5 class Trida { 6 public : };

51 Override a final Strana 51 / 53 Výčtová třída (enumerate class) Nahrazuje zastaralé výčtové typy, které hodnoty vnitřně reprezentovaly jako inty. To vedlo na možnost porovnání nesouvisejících hodnot. 1 enum class Color { 2 Red, Blue 3 }; 4 5 enum class Fruit { 6 Banana, Apple 7 }; 8 9 Color a = Color :: Red ; // musime pouzit predponu tridy 10 Fruit b = Fruit :: Banana ; 11 if ( a == b) // zde bude chyba, coz je dobre

52 Oddechnutí Strana 52 / 53 Obsah přednášky 1 Historie C++: od Fortranu po C Připomenutí základů OOP v C++ 3 Překlad aplikace 4 Proměnné a práce s nimi 5 Štábní kultura 6 Const 7 Static 8 Override a final 9 Oddechnutí

53 Oddechnutí Strana 53 / 53 Hello World!

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

Programování v C++ 1, 1. cvičení

Programování v C++ 1, 1. cvičení Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených

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

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

PB161 Programování v jazyce C++ Přednáška 10

PB161 Programování v jazyce C++ Přednáška 10 .. PB161 Programování v jazyce C++ Přednáška 10 Šablony Nikola Beneš 23. listopadu 2015 PB161 přednáška 10: šablony 23. listopadu 2015 1 / 29 K zamyšlení Jaký je rozdíl mezi new int[10] a new int[10]()?

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

Ú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

Dědění, polymorfismus

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

Více

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

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

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

PB161 Programování v jazyce C++ Přednáška 4

PB161 Programování v jazyce C++ Přednáška 4 PB161 Programování v jazyce C++ Přednáška 4 Přetěžování funkcí Konstruktory a destruktory Nikola Beneš 9. října 2017 PB161 přednáška 4: přetěžování funkcí, konstruktory, destruktory 9. října 2017 1 / 20

Více

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

Jazyk C++, některá rozšíření oproti C

Jazyk C++, některá rozšíření oproti C Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra

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

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

Programování v C++ 3, 3. cvičení

Programování v C++ 3, 3. cvičení Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového

Více

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016 ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

Více

PB161 Programování v jazyce C++ Přednáška 10

PB161 Programování v jazyce C++ Přednáška 10 PB161 Programování v jazyce C++ Přednáška 10 Šablony Nikola Beneš 27. listopadu 2017 PB161 přednáška 10: šablony 27. listopadu 2017 1 / 33 Šablony PB161 přednáška 10: šablony 27. listopadu 2017 2 / 33

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

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

Programování v C++ 1, 5. cvičení

Programování v C++ 1, 5. cvičení Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Strukturované proměnné Struktura, union Jazyk C České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné Ver.1.10 J. Zděnek 20151 Struktura

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

Abstraktní třídy, polymorfní struktury

Abstraktní třídy, polymorfní struktury Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství

Více

Programovací jazyk C++ Hodina 1

Programovací jazyk C++ Hodina 1 Programovací jazyk C++ Hodina 1 Používané překladače Bloodshed Dev C++ http://www.bloodshed.net/devcpp.html CodeBlocks http://www.codeblocks.org pokud nemáte již nainstalovaný překladač, stáhněte si instalátor

Více

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

IUJCE 07/08 Přednáška č. 1 Úvod do předmětu Literatura Záznamy přednášek a vaše poznámky Harbison, S. P., Steele, G. L.: Referenční příručka jazyka C Herout, P.: Učebnice jazyka C Kernighan, B. W., Ritchie, D. M.: The C Programming

Více

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí Velké projekty v C velký = 100ky a více řádek udržovatelnost, bezpečnost, přehlednost kódu rozdělení programu do více souborů další prvky globální proměnné, řízení viditelnosti proměnných, funkcí Globální

Více

Šablony, kontejnery a iterátory

Šablony, kontejnery a iterátory 7. října 2010, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 21 Šablona funkce/metody Šablona je obecný popis (třídy, funkce) bez toho, že by

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

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

Programování v C++ 1, 6. cvičení

Programování v C++ 1, 6. cvičení Programování v C++ 1, 6. cvičení dědičnost, polymorfismus 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené

Více

Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz

Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a šířena

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

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

Programování v jazyce C a C++

Programování v jazyce C a C++ Programování v jazyce C a C++ Richter 1 Petyovský 2 1. března 2015 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno 2 Ing. Petyovský Petr, UAMT FEKT VUT Brno C++ Stručná charakteristika Nesdíĺı normu

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

PROGRAMOVÁNÍ V C++ CVIČENÍ

PROGRAMOVÁNÍ V C++ CVIČENÍ PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné

Více

Šablony, kontejnery a iterátory

Šablony, kontejnery a iterátory 11. března 2015, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array

Více

24. listopadu 2013, Brno Připravil: David Procházka

24. listopadu 2013, Brno Připravil: David Procházka 24. listopadu 2013, Brno Připravil: David Procházka Dědičnost Základy objektového návrhu Časná a pozdní vazba Strana 2 / 22 Obsah přednášky 1 Časná a pozdní vazba 2 Rozhraní pro dědičnost 3 Konstruktory

Více

ADT/ADS = abstraktní datové typy / struktury

ADT/ADS = abstraktní datové typy / struktury DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní

Více

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr Koncepce (větších) programů Základy programování 2 Tomáš Kühr Parametry a návratová hodnota main Již víme, že main je funkce A také tušíme, že je trochu jiná než ostatní funkce v programu Funkce main je

Více

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Preprocesor Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9b https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod 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 třídám a objektům, instančním

Více

PB161 Programování v jazyce C++ Přednáška 4

PB161 Programování v jazyce C++ Přednáška 4 PB161 Programování v jazyce C++ Přednáška 4 Dynamická alokace Kopírovací konstruktor Přetypování v C++ Nikola Beneš 12. října 2015 PB161 přednáška 4: dynamická alokace, kopírovací konstruktor, casting

Více

Mělká a hluboká kopie

Mělká a hluboká kopie Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

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

Struktura programu v době běhu

Struktura programu v době běhu Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů

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

Programování v C++ 2, 4. cvičení

Programování v C++ 2, 4. cvičení Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva

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

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

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

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N Struktura (union) - struktura a union jsou složené typy, které "v sobě" mohou obsahovat více proměnných - struktura obsahuje v každém okamžiku všechny své proměnné, union obsahuje (=je "aktivní") pouze

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

Konstruktory a destruktory

Konstruktory a destruktory Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,

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

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu. Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky - Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky - Preprocesor je možné ovládat pomocí příkazů - řádky začínající

Více

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd 7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená

Více

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19 C++ přetěžování funkcí a operátorů 1 Přetěžování funkcí jazyk C++ umožňuje napsat více funkcí se stejným názvem, těmto funkcím říkáme přetížené přetížené funkce se musí odlišovat typem nebo počtem parametrů,

Více

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března Polymorfismus Cíle lekce Cílem lekce je vysvětlit význam pojmu polymorfismus jako základní vlastnosti objektově orientovaného programování. Lekce objasňuje vztah časné a pozdní vazby a jejich využití.

Více

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí 02 Jazyk C - je imperativní říkáme, co se má udělat, voláme příkazy - další imperativní jazyky: Pascal, Java, C/C++ apod. - na rozdíl od jazyků deklarativních např. Prolog, Haskell, Scheme, Lisp (funkcionální

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

Více

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

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

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

int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:

int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li: 13.4.2010 Typová konverze - změna jednoho datového typu na jiný - známe dva základní implicitní ("sama od sebe") a explicitní (výslovně vyžádána programátorem) - C je málo přísné na typové kontroly = dokáže

Více

Dynamická identifikace typů v C++.

Dynamická identifikace typů v C++. Dynamická identifikace typů v C++. Pod pojmem "Dynamická identifikace typů" rozumíme zjišťování typů proměnných, nebo objektů v době běhu programu. Identifikaci typů zajišťuje operátor typeid. Než se ale

Více

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

ZPRO v C Ing. Vít Hanousek. verze 0.3 verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout

Více

PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK

PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK ČÍSLO OPERAČNÍHO PROGRAMU: CZ.1.07 NÁZEV OPERAČNÍHO PROGRAMU: VZDĚLÁVÁNÍ PRO KONKURENCESCHOPNOST OPATŘENÍ:

Více

Zpracoval: houzvjir@fel.cvut.cz

Zpracoval: houzvjir@fel.cvut.cz Zpracoval: houzvjir@fel.cvut.cz 10. Objektově orientované programování v C++. Přetěţování operátorů, generické funkce a třídy, výjimky, knihovny. (A7B36PJC) Obsah OOP v C++... 2 Pro připomenutí - Základní

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

Programování v C++ VI

Programování v C++ VI Programování v C++ VI Konstruktory, destruktory a dědičnost Konstruktory a dědičnost I když jsme se bavili o dědičnosti, trochu jsme zapomněli na konstruktory to se ale nevyplácí, vzpomeňte si, jak důležitý

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 - operátor je speciální

Více

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33 Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt

Více

Chování konstruktorů a destruktorů při dědění

Chování konstruktorů a destruktorů při dědění Dědičnost V objektově orientovaném programování je dědičnost způsob, jak vytvořit novou třídu použitím již existujících definic jiných tříd. Takto vytvořené třídy přebírají vlastnosti a metody svého předka

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Úvod do jazyka C++

Pokročilé programování v jazyce C pro chemiky (C3220) Úvod do jazyka C++ Pokročilé programování v jazyce C pro chemiky (C3220) Úvod do jazyka C++ Objektové programování Objektový přístup data a metody pro manipulaci s nimi jsou sdruženy společně v rámci jedné entity Objektové

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Čí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

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

Ú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. Polymorfismus

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

Více

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

typová konverze typová inference

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

Více

16. února 2015, Brno Připravil: David Procházka. Konstruktory a destruktory

16. února 2015, Brno Připravil: David Procházka. Konstruktory a destruktory 16. února 2015, Brno Připravil: David Procházka Konstruktory a destruktory Základy objektového návrhu Jak navrhovat použitelné třídy Strana 2 / 26 Obsah přednášky 1 Jak navrhovat použitelné třídy 2 Jak

Více

Opakování programování

Opakování programování Opakování programování HW návaznost - procesor sběrnice, instrukční sada, optimalizace rychlosti, datové typy, operace (matematické, logické, podmínky, skoky, podprogram ) - paměti a periferie - adresování

Více

Výrazy, operace, příkazy

Výrazy, operace, příkazy Výrazy, operace, příkazy Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad Karel Richta, Martin Hořeňovský,

Více

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++ C++ Akademie SH 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory Za áte níci C++ 20. b ezna 2011 Obsah 1 Prom nné - primitivní typy Celá ísla ƒísla s pohyblivou desetinnou árkou, typ bool 2 Podmínka

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

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,

Více

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

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

Operační systémy. Cvičení 3: Programování v C pod Unixem

Operační systémy. Cvičení 3: Programování v C pod Unixem Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Čí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

Objektově orientované programování. Úvod

Objektově orientované programování. Úvod Objektově orientované programování Úvod Imperativní programovací styl klasický programovací styl používaný v době vzniku prvních vyšších programovacích jazyků těžiště programování je v tvorbě algoritmů

Více