Základy C++ I. Jan Hnilica Počítačové modelování 18

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

Download "Základy C++ I. Jan Hnilica Počítačové modelování 18"

Transkript

1 Základy C++ I 1

2 Přechod z C na C++ jazyk C++ je nadmnožinou jazyka C z hlediska syntaxe se jedná o velmi podobné jazyky, spolu s dalšími jazyky "céčkovské" rodiny, jako je např. C# každý platný program v C je zároveň platným programem C++ vše, co jste se dosud naučili z jazyka C, můžete využít v C++ jazyk C++ dědí i celou knihovnu jazyka C oproti C však C++ nabízí významný krok novým směrem, kterým je podpora tzv. objektově orientovaného programování 2

3 Přechod z C na C++ program vypisující řetězec "KUK!!!" na monitor #include <iostream> int main() std::cout << "KUK!!!"; return 0; Rozbor vkládání hlavičkových souborů pomocí příkazu preprocesoru #include, stejně jako v C soubor iostream zajišťuje standardní vstup a výstup (jako stdio.h v C) funkce main má stejný význam jako v C, včetně příkazu return 0; výpis na monitor zajišťován objektem std::cout, následovaným operátorem << (rozbor na další straně) 3

4 Výpis na monitor - objekt cout na rozdíl od funkce pritf se při použití cout neuvádí formát vypisované proměnné std::cout << "retezec"; // výpis řetězcové konstanty std::cout << 5; // výpis konstanty 5 std::cout << n; // výpis proměnné n std::cout << 'c'; // výpis znaku c výpisy je možné zřetězit za sebe int p = delka * sirka; std::cout << "plocha je " << p << " metru ctverecnich"; odřádkování pomocí znaku '\n' (jako v C) std::cout << "prvni radek\n"; std::cout << "druhy radek"; pomocí manipulátoru std::endl std::cout << "prvni radek" << std::endl; std::cout << "druhy radek"; pozn. použití std::endl rovněž vyprázdní výstupní buffer 4

5 Výpis na monitor příznak std:: před cout nebo endl říká, že tyto objekty patří do tzv. standardního oboru názvů (namespace - později) není ale nutné psát std:: před každým použitím cout nebo endl, kód lze zjednodušit pomocí příkazu using varianta 1: uvedeme výčet všech objektů, které hodláme používat int main() using std::cout; using std::endl; // teď můžeme používat cout a endl bez std:: cout << "vypisuju bez std::, pohoda..." << endl; return 0; varianta 2: deklarujeme, že budeme používat celý namespace using namespace std; // teď můžeme používat všechny objekty standardního oboru názvů // bez specifikace std:: 5

6 Čtení z klávesnice pomocí objektu std::cin, který je rovněž deklarován v souboru iostream čtení provádíme s pomocí operátoru >> pro psaní std:: před cin platí to samé jako v případě cout a endl #include <iostream> using namespace std; int main() int a, b; cout << "zadejte dve cela cisla: "; cin >> a; cin >> b; int soucet = a + b; int soucin = a * b; cout << "soucet je " << soucet << ", soucin je " << soucin << endl; return 0; čtení více proměnných můžeme spojit do jednoho příkazu: cin >> a >> b; 6

7 Čtení z klávesnice načtení jednoho znaku lze provádět funkcí get objektu cin // buďto takto // nebo takto char znak = cin.get(); cin.get(znak); načtení řetězce lze provést pomocí operátoru <<, který ale končí načítání při dosažení prvního bílého znaku (nový řádek, mezera, tabulátor) char retezec[50]; cin >> retezec; načítáme-li řetězec "ahoj", bude vše v pořádku načítáme-li "ahoj kámo", načte se jen "ahoj" načtení celého zadaného řetězce včetně mezer provedeme opět funkcí get funkce kromě řetězce přijímá druhý argument, kterým je maximální počet načítaných znaků char retezec[50]; cin.get(retezec, 50); alternativou pro načtení celého řetězce je funkce getline cin.getline(retezec, 50); ROZDÍLmezi get a getline je v tom, že get zanechává na vstupu znak enter (nový řádek), kterým uživatel zakončil svůj vstup, kdežto getline ho zahodí všechny funkce doplní načtený řetězec ukončovací nulou '\0' 7

8 Inline funkce funkce uvozené klíčovým slovem inline inline double Vetsi(double a, double b) if (a > b) return a; else return b; při klasickém volání funkce dochází k přerušení chodu volající funkce, provádění se přesune do volané funkce a když ta skončí svou činnost, následuje opět skok do volající funkce u funkce deklarované jako inline se toto neděje, kompilátor místo toho zkopíruje kód funkce přímo do místa volání, takže nedojde ke skokům do/z funkcí, které mírně zpomalují chod programu jako inline má smysl psát pouze velmi krátké funkce (maximálně několik řádek) kompilátor může vlastní optimalizací rozhodnout, zda funkci deklarovanou jako inline bude skutečně jako inline používat 8

9 Datový typ bool slouží k uchování binární informace pravda / nepravda (v C se k tomuto účelu zpravidla používala proměnná typu int, nabývající hodnot 1/0) bool nabývá dvou možných hodnot: true a false (ty jsou vnitřně opět reprezentovány jako celočíselné proměnné s hodnotami 1 / 0) do proměnné typu bool lze přiřadit výsledky logických výrazů (využívajících relační a logické operátory), lze přiřadit i číselné výrazy, kde 0 znamená false, nenulová hodnota true velikost datového typu bool je obvykle 1 bajt int cislo; bool spravnezadani = false; while (spravnezadani == false) cout << "zadejte hodnotu vetsi nez 10, delitelnou tremi: "; cin >> cislo; spravnezadani = cislo > 10 && cislo % 3 == 0; 9

10 Výčtové typy výčtový typ = datový typ, jež může nabývat jen několika uvedených hodnot vytváříme je klíčovým slovem enum, za kterým následuje název výčtového typu a seznam hodnot ve složených závorkách, vše zakončeno středníkem // definice výčtového typu enum barva cervena, modra, bila, zluta, zelena; // proměnná v programu barva b = modra; smyslem výčtových typů je větší přehlednost programu, je přehlednější používat proměnné s názvem modra nebo bila, než předem dohodnuté kódy barev vnitřně jsou výčtové typy reprezentovány jako celočíselné hodnoty, první z nich má hodnotu 0, každá další pak hodnotu o jedničku vyšší (červená má hodnotu 0, modrá 1,...) vnitřní číslování lze změnit při deklaraci výčtového typu, výčtovým hodnotám lze explicitně přiřadit číselnou hodnotu (opět platí, že následující položka má hodnotu o jedničku vyšší) enum barva cervena, modra = 10, bila, zluta = 20, zelena; cervena má hodnotu 0, modra 10, bila 11, zluta 20, zelena 21 10

11 Správa paměti na haldě Alokace jednoduché proměnné alokaci proměnných na haldě provádíme pomocí klíčového slova new operátor new vrací adresu alokované paměťi, kterou ukládáme do pointeru, práce s pointery je pak naprosto stejná jako v jazyce C int * pint = new int; double * pdouble = new double; pokud operátor new nemůže alokovat paměť, vrací NULL if (pint == NULL) cout << "alokace pameti selhala"; Alokace pole provádíme stejně jako alokaci jednoduché proměnné // pole 10 int na haldě int * pole = new int[10]; // vynulování všech položek for (int i = 0; i < 10; i++) pole[i] = 0; 11

12 Správa paměti na haldě Uvolnění paměti provádíme pomocí operátoru delete // alokace proměnné int na haldě int * pint = new int; // uvolnění paměti delete pint; // je vhodné nastavit pointer na nulu, pokud ho hned nebudeme potřebovat pint = NULL; pokud bylo alokováno pole, uvolnění paměti provedeme pomocí operátoru delete[] (operátor delete následovaný prázdnými hranatými závorkami) // pole 10 int na haldě int * pole = new int[10]; // uvolnění paměti delete[] pole; 12

13 Pointer na pole, pole pointerů čím se liší tato tři pole? int polea[100]; int * poleb = new int[100]; int * polec[100]; for (int i = 0; i < 100; i++) pocec[i] = new int; polea je pole 100 proměnných typu int (polea je tedy pointer na jeho první prvek), pole je alokované na zásobníku, paměť bude uvolněna automaticky pole B je pole 100 proměnných typu int, alokované na haldě, paměť je nutné uvolnit: delete[] pole; polec je pole 100 pointerů (ukazatelů) na typ int, pointery jsou na zásobníku, ale proměnné jsou alokovány na haldě, paměť je nutné uvolnit v cyklu: for (int i = 0; i < 100; i++) delete pocec[i]; 13

14 Předávání parametrů funkcí odkazem jazyk C umožňuje předávat proměnné do funkcí odkazem prostřednictvím pointerů, což lze provádět naprosto stejně i v jazyce C++ void ZamenaPromennych(int * pa, int * pb) int pomocna = *pa; *pa = *pb; *pb = pomocna; práce s pointery je však poněkud nepříjemná, protože dereference mohou být zdrojem chyb, množství dereferencí může vést k nepřehlednému kódu C++ nabízí alternativu - tzv. ODKAZY, které stejně jako pointery umožňují funkcím měnit obsah předávaných proměnných, ale s mnohem jednodušší syntaxí 14

15 Odkazy odkaz (tzv. alias) je jiné jméno pro proměnnou, na kterou ukazuje odkaz definujeme napsáním typu proměnné, operátoru adresy & a jména odkazu zároveň mu ihned při definici musíme dosadit proměnnou (inicializovat ho): int P = 10; // proměnná P int & odkaz = P; // odkaz na proměnnou P význam odkazů je v tom, že kdykoliv se použije odkaz, použije se ve skutečnosti proměnná, na kterou odkazuje odkaz = 15; // totéž jako P = 15 odkaz = jinapromenna; // totéž jako P = jinapromenna, tento řádek tedy // nepřiřadí odkazu novou proměnnou // odkaz nemůže odkazovat na nic jiného než na // proměnnou, kterou byl inicializován // adresa odkazu je stejná jako adresa proměnné, na kterou ukazuje cout << "adresa P: " << &P << endl; cout << "adresa odkazu: " << &odkaz << endl; 15

16 Odkazy jako parametry funkcí odkazy se často používají pro předávání parametrů funkcí umožňují dosáhnout stejného efektu jako pointery (změna proměnné ve funkci se promítne i navenek), ale s jednodušší syntaxí - ve funkci nemusíme provádět dereference void ZamenaPromennych(int & a, int & b) int pomocna = a; a = b; b = pomocna; volání funkce v programu probíhá s použitím proměnných, ne jejich adres ZamenaPromennych(x, y); kompilátor z deklarace funkce ví, že pracuje s odkazy, nepořizuje si tedy lokální kopie parametrů, ale pracuje přímo s předanými proměnnými 16

17 Odkazy jako parametry funkcí odkazy mohou být konstantní (stejně jako pointery), čehož dosáhneme uvedením klíčového slova const void Funkce(const int & x); jakýkoliv pokus o změnu parametru x uvnitř funkce (např. příkaz x++;) povede k chybě v době kompilace pozn. zatímco u pointerů mohlo být slovo const na dvou místech (konstantní pointer nebo konstantní proměnná), v případě odkazů může být jako konstantní deklarována jen proměnná, protože odkaz je konstantní sám o sobě (nemůže odkazovat na nic jiného) odkazy se jako parametry funkcí (stejně jako pointery) používají proto, aby 1. funkce mohla měnit předávané proměnné 2. funkce mohla "vracet" více hodnot najednou (prostřednictvím parametrů, které změní) 3. funkce šetřila čas a paměť tím, že si nebude pořizovat kopie dat (např. velkých struktur) (tady se často používají konstantní odkazy, pokud chceme mít zaručeno, že funkce data nezmění) 17

18 Složené datové typy do jazyka C++ je (stejně jako do C) zabudováno několik standardních typů proměnných (short, int, long, float, double, char...) jazyk C nabízí možnost tvořit nové datové typy - struktury (pomocí klíčového slova struct) typedef struct obdelnik int vyska, sirka; OBDELNIK; Nevýhody struktur struktury a funkce, které s nimi pracují, nejsou spojenými celky struktura obsahuje data, ale sama o sobě "nic neumí" abychom mohli měnit data struktury, musíme zavolat nějakou "cizí" funkci, která má strukturu jako parametr data struktur mohou být funkcemi libovolně měněna, koordinace mnoha funkcí pracujících se strukturou může být složitá, program se obtížně spravuje a rozšiřuje 18

19 Třída třída (class) v sobě sdružuje data popisující nějakou věc, spolu s funkcemi, které tato data spravují a umožňují komunikovat s okolím jasně definovaným a kontrolovaným způsobem data třídy (členská data, členské proměnné) definují, jaké informace jsou ve třídě uloženy bývají (mají být) soukromá (private), tzn. neměla by být přístupná zvenku třídy přístup k datům bývá zajištěn prostřednictvím funkcí třídy funkce třídy (členské funkce, metody) definují, co třída může dělat funkce bývají veřejné (public), tzn. mohou být volány vnějšími částmi programu část funkcí obvykle umožňuje spravovat data třídy, těm se říká přístupové funkce (metody) spojením dat a funkcí do jednoho celku nazýváme ZAPOUZDŘENÍ konkrétní proměnnou nějaké třídy nazýváme OBJEKT 19

20 Deklarace třídy class obdelnik public: // přístupové metody int VratVysku(); void NastavVysku(int v); int VratSirku(); void NastavSirku(int s); Deklarace obsahuje výčet datových položek třídy deklarace funkcí třídy a je zakončena středníkem. // další funkce void Nakresli(); private: int vyska, sirka; ; seznam veřejných položek je uveden klíčovým slovem public, vše dále uvedené (data i funkce) je veřejné, až do klíčového slova private, které deklaruje začátek seznamu soukromých položek pokud typ přístupu není uveden, jsou položky automaticky soukromé funkce mohou být i soukromé, stejně tak data mohou být veřejná, obvykle tomu tak ale není 20

21 Definice funkcí třídy definice píšeme jako kterékoliv jiné definice funkcí, pouze před název funkce píšeme název třídy a dvě dvojtečky // funkce pro zjištění výšky int obdelnik::vratvysku() return vyska; // funkce pro nastavení výšky, obsahuje ochranu proti nastavení záporné hodnoty void obdelnik::nastavvysku(int v) if (v >= 0) vyska = v; // funkce pro kreslení obdléníka void obdelnik::nakresli() for (int i = 0; i < vyska; i++) for (int j = 0; j < sirka; j++) cout << '*'; cout << endl; 21

22 Použití třídy v programu přístup k položkám třídy provádíme pomocí operátoru tečky (jako u struktur) int main() // proměnná typu obdélník s názvem O obdelnik O; // nastavení dat pomocí přístupových metod O.NastavVysku(5); O.NastavSirku(12); // nakreslení vytvořeného obdélníka O.Nakresli(); return 0; soukromá data nelze v programu nastavovat přímo, k tomu jsou určeny přístupové metody, pokud bychom do programu napsali O.sirka = 3;, obdrželi bychom chybu v době kompilace 22

23 Konstantní metody třídy členskou funkci lze deklarovat jako konstantní, což znamená, že funkce nemění členská data provedeme to klíčovým slovem const, které se píše za kulaté závorky seznamu parametrů // funkce pro zjištění hodnoty datové položky sirka // pouze vrací hodnotu členské proměnné, přitom nijak nemění data // měla by tedy být deklarována jako konstantní // deklarace int VratSirku() const; // definice int obdelnik::vratsirku()const return sirka; 23

24 Konstruktor je metoda třídy, která je volaná vždy, když se vytváří objekt třídy pokud vytvoříte objekt příkazem obdelnik O; zavolá se konstruktor třídy obdélník a vyhradí paměť potřebnou pro uložení dat velikost alokace bude rovna součtu velikosti jednotlivých datových položek jednotlivé datové položky budou mít náhodnou hodnotu konstruktor si můžeme napsat vlastní a nastavit tak výchozí hodnoty datových členů konstruktor je metoda třídy, která má stejný název jako třída sama nemá žádnou návratovou hodnotu (ani void) // deklarace konstruktoru (v deklaraci třídy) obdelnik(); // definice konstruktoru obdelnik::obdelnik() vyska = 1; sirka = 1; Nyní budou mít všechny čerstvě vytvořené obdélníky výšku a šířku rovnou 1, dokud jim tato data nezměníme prostřednictvím přístupových metod. 24

25 konstruktor může mít parametry, třída může mít i více konstruktorů (tzv. přetížení - další přednáška) konstruktoru bez parametrů se říká výchozí konstruktor pokud ke své třídě žádný konstruktor nenapíšeme, kompilátor poskytne výchozí konstruktor sám (tento výchozí konstruktor ale datové členy nijak nenastavuje) Destruktor je metoda volaná vždy, když je objekt třídy mazán (opouští svůj obor platnosti, nebo je odstraňován z haldy příkazem delete) destruktor má stejný název jako třída, před názvem se píše vlnovka ~ (tilda), nikdy nemá návratovou hodnotu, ani žádné parametry // deklarace destruktoru Vlastní destruktor má smysl psát u tříd, které ~obdelnik(); pro své datové členy alokují paměť na haldě. // definice destruktoru Úkolem destruktoru je tuto paměť uvolnit obdelnik::~obdelnik() // v tomto destruktoru se nic neděje pokud nenapíšeme vlastní destruktor, kompilátor ho poskytne (tento destruktor ale neuvolní paměť alokovanou na haldě, to musíme udělat ve vlastním destruktoru sami) 25

26 Třída s daty alokovanými na haldě následující příklad ukazuje, jak v konstruktoru alokovat paměť na haldě a v destruktoru tuto paměť zase uvolnit třída čtverec má jediný datový člen délku strany, který je alokován na haldě, třída udržuje pointer na tuto položku // DEKLARACE TŘÍDY class ctverec public: // konstruktor, destruktor ctverec(); ~ctverec(); // další funkce... private: int *strana; ; // DEFINICE KONSTRUKTORU // alokace paměti pro datový člen ctverec::ctverec() strana = new int; // DEFINICE DESTRUKTORU // uvolnění alokované paměti ctverec::ctverec() delete strana 26

27 Inline členské funkce členskou funkci lze deklarovat jako řádkovou, stejně jako jiné funkce // deklarace (uvnitř deklarace třídy) inline int VratVysku() const; // definice inline int obdelnik::vratvysku() const return vyska; funkce bude řádková automaticky, pokud její definici umístíte přímo do deklarace třídy // deklarace funkce spojená s její definicí (uvnitř deklarace třídy) int VratVysku() const return vyska; za definicí funkce není středník příkaz uvnitř složených závorek je ukončen středníkem 27

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

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

Úvod do programování. Lekce 1

Úvod do programování. Lekce 1 Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -

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

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

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

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

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

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

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

Ukazatele, dynamická alokace

Ukazatele, dynamická alokace Ukazatele, dynamická alokace 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, Martin Mazanec Karel Richta,

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

Pointery II. Jan Hnilica Počítačové modelování 17

Pointery II. Jan Hnilica Počítačové modelování 17 Pointery II 1 Pointery a pole Dosavadní způsob práce s poli zahrnoval: definici pole jakožto kolekce proměnných (prvků) jednoho typu, umístěných v paměti za sebou int pole[10]; práci s jednotlivými prvky

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

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

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

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

Vector datový kontejner v C++.

Vector datový kontejner v C++. Vector datový kontejner v C++. Jedná se o datový kontejner z knihovny STL jazyka C++. Vektor je šablona jednorozměrného pole. Na rozdíl od "klasického" pole má vector, mnoho užitečných vlastností a služeb.

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

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

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

Více

Odvozené a strukturované typy dat

Odvozené a strukturované typy dat Odvozené a strukturované typy dat Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 14. listopadu 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Odvozené a strukturované typy dat 14. listopadu

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

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

Ú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

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

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

C++ objektově orientovaná nadstavba programovacího jazyka C

C++ objektově orientovaná nadstavba programovacího jazyka C C++ objektově orientovaná nadstavba programovacího jazyka C (1. část) Josef Dobeš Katedra radioelektroniky (13137), blok B2, místnost 722 dobes@fel.cvut.cz 5. května 2014 České vysoké učení technické v

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

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy

Více

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

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

Více

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

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; } Pole Kdybychom v jazyce C++chtěli načíst větší počet čísel nebo znaků a všechny bylo by nutné všechny tyto hodnoty nadále uchovávat v paměti počítače, tak by bylo potřeba v paměti počítače alokovat stejný

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

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

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

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

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

Programovací jazyk Pascal

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

Více

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

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

Lineární spojový seznam (úvod do dynamických datových struktur)

Lineární spojový seznam (úvod do dynamických datových struktur) Lineární spojový seznam (úvod do dynamických datových struktur) Jan Hnilica Počítačové modelování 11 1 Dynamické datové struktury Definice dynamické struktury jsou vytvářeny za běhu programu z dynamicky

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

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Šesté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 6. týden

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

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

Standardní algoritmy vyhledávací.

Standardní algoritmy vyhledávací. Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární

Více

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

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

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

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

Více

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

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

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

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Páté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 5. týden

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

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

V dalších letech se pak začaly objevovat první normy pro jazyk C++ (ISO/IEC 14882:1998; ISO/IEC 9899:1999; ISO/IEC 14882:2003; ISO/IEC 14882:2011).

V dalších letech se pak začaly objevovat první normy pro jazyk C++ (ISO/IEC 14882:1998; ISO/IEC 9899:1999; ISO/IEC 14882:2003; ISO/IEC 14882:2011). Jazyk C++ 1 Blok 1 Úvod do programovacího jazyka C++ Studijní cíl První blok kurzu je věnován úvodu do problematiky programovacího jazyka C++. V bloku budou rozebrány historické souvislosti programovacích

Více

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce. Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv copyright To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího (aby

Více

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -

Více

6. Příkazy a řídící struktury v Javě

6. Příkazy a řídící struktury v Javě 6. Příkazy a řídící struktury v Javě Příkazy v Javě Příkazy v Javě Řídicí příkazy (větvení, cykly) Přiřazovací příkaz = Řízení toku programu (větvení, cykly) Volání metody Návrat z metody - příkaz return

Více

Proměnná a její uložení v paměti

Proměnná a její uložení v paměti Proměnná a její uložení v paměti Počítačová paměť - řada buněk uložených za sebou, každá buňka má velikost 1 bajt (byte, B) - buňky jsou očíslovány, tato čísla se nazývají adresy Proměnná - data, se kterými

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

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Práce s binárními soubory. Základy programování 2 Tomáš Kühr Práce s binárními soubory Základy programování 2 Tomáš Kühr Binární soubory Mohou mít libovolnou strukturu Data jsou uložena ve stejné podobě jako v paměti za běhu programu Výhody: Pro uložení je potřeba

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

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

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

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

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

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

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

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

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

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

Více

Programování v 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

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

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr Strukturované typy a ukazatele Úvod do programování 1 Tomáš Kühr Motivace Se základními datovými typy si sice vystačíme Někdy to ale může být nepříjemně nepřehledné Příklady: long double soucet(const long

Více

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 1/24 Editační prostření Kód programu lze editovat v jakémkoli textovém editoru. 2/24 Editační prostření Kód

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

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Pole a Funkce. Úvod do programování 1 Tomáš Kühr Pole a Funkce Úvod do programování 1 Tomáš Kühr (Jednorozměrné) pole u Datová struktura u Lineární u Homogenní = prvky stejného datového typu u Statická = předem určený počet prvků u Pole umožňuje pohodlně

Více

Stručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787

Stručný obsah První týden Druhý týden 211 Třetí týden 451 Rejstřík 787 Stručný obsah První týden 25 den 1 Začínáme 27 den 2 Anatomie programu C++ 43 den 3 Proměnné a konstanty 57 den 4 Výrazy a příkazy 79 den 5 Funkce 107 den 6 Objektově orientované programování 141 den 7

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

Třídy a struktury v C++

Třídy a struktury v C++ katedra informatiky FEI VŠB-TU Ostrava 7. prosince 2015 Odvozené a strukturované typy dat v C základní datové typy součást normy jazyka, preprocesor použití netypových maker, raději voĺıme konstanty d

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Deváté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 27.11.2017,

Více

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

PB161 Programování v jazyce C++ Přednáška 8 .. PB161 Programování v jazyce C++ Přednáška 8 Výjimky Správa prostředků (RAII) Nikola Beneš 9. listopadu 2015 PB161 přednáška 8: výjimky, RAII 9. listopadu 2015 1 / 24 . PB161 přednáška 8: výjimky, RAII

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Čtvrté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 4.

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

VISUAL BASIC. Práce se soubory

VISUAL BASIC. Práce se soubory VISUAL BASIC Práce se soubory Práce se soubory 1/2 2 Vstupní data pro programy bývají uloženy do souborů Vstupy pro výpočet, nastavení vzhledu aplikace Výsledky práce programu je potřeba uchovat uložit

Více

Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0

Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0 Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0 int policko[100]; // tj. pole je od 0 do 99!!! policko[5] = 7; // pozor je to 6. prvek s indexem 5

Více

Dynamická alokace paměti

Dynamická alokace paměti Dynamická alokace paměti doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Dynamická alokace

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

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

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

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro

Více

Mnohotvarost (polymorfizmus)

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

Více

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

Data, výrazy, příkazy

Data, výrazy, příkazy Data, výrazy, 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, Martin Hořeňovský, Aleš Hrabalík

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

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