Základy programování v jazyce C++ Doprovodný text 1. část

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

Download "Základy programování v jazyce C++ Doprovodný text 1. část"

Transkript

1 Základy programování v jazyce C++ Zpracoval Mgr. Michal Tarabec (SŠ-COPTH) pro kroužek programování Doprovodný text 1. část 1. díl díl díl díl díl díl díl díl díl díl díl Základy programování v jazyce C++ doprovodný text str. 1/52

2 1. díl Úvod do C++ C C++ C# Vývoj: od strojového jazyka, přes assembler (příkazy ADD, MOV), dále vyšší programovací jazyka jako Basic nebo Cobol (anglická slova). Interpret přeloží program při čtení a mění instrukce programového kódu přímo v konkrétní akce Kompilátor přeloží kód do podoby tzv. objektového souboru, který ještě není spustitelný (proces kompilace). Dále kompilátor spustí sestavovací program (linker), který objektové soubory sestaví do spustitelného programu. Interpretové jazyky ke spuštění programu vyžadují interpreter. U kompilované jazyky (C++) spustitelný program nevyžaduje kompilátor. Existují i interpretery C++ Program = 1. zdrojový kód (označení instrukcí vytvořených programátorem) 2. spustitelný software PROGRAMOVÁNÍ: 1. Procedurální (Sada přesně stanovených instrukcí, které se provádějí jedna po druhé) 2. Strukturované (Dělení větších úkolů na menší části; od složitějšího k jednoduššímu) 3. Objektově orientované programování (OOP) - Vymodelování objektů (reálných věcí) spíše než dat. Objekty, které modelujete, mohou být drobné prvky na obrazovce počítače jako tlačítka či okna se seznamem nabízených hodnot, nebo jimi mohou být reálné předměty jako kola, letadla, kočky či voda. - Objekty mají charakteristiky (rychlá, prostorná ) a schopnosti (zrychlit, letět ). Úkolem OOP je tyto objekty vytvořit v programovacím jazyce. C++ plně podporuje objektové programování včetně jeho tří pilířů: zapouzdření, dědičnost a mnohotvárnost (polymorfismus) Microsoft pro svoji platformu.net vyvinul jazyk C# (=90% jazyka C++) Bjarne Stroustrup = autor C++ dánský programátor a informatik, profesor na Texas A&M University Základy programování v jazyce C++ doprovodný text str. 2/52

3 POSTUP PROGRAMOVÁNÍ 1. Analýza problému a jeho úplné pochopení 2. Tvorba návrhu = nalezení řešení 3. Volba vývojového prostředí 4. Zápis příkazů do zdrojového souboru.cpp 5. Vytvoření objektového souboru kompilátorem (překladačem), přípona.obj.o 6. Vytvoření spustitelného programu linkerem.exe V C++ se programy vytváří propojením jednoho nebo více objektových souborů.obj s jednou nebo více knihovnami. Knihovna je sbírka propojitelných souborů, které jsou buď součástí kompilátoru nebo je lze zakoupit, nebo je sami vytvoříme. Důležité znaky a klávesy Ctrl + Alt + < Ctrl + Alt + > Zkompilovat Ctrl + F9 Zkompilovat a spustit F9 Ladit F8 MŮJ PRVNÍ PROGRAM #include <iostream> std::cout << "Nazdar lidi!\n"; ODSTRANĚNÍ CHYB - Správná interpunkce - Podívat se do dokumentace Pokud výstupní okno spuštění.exe souboru ihned zmizí, dopište před příkaz return 2 řádky: char reakce; std::cin>> reakce; program čeká na zápis nějakého znaku Základy programování v jazyce C++ doprovodný text str. 3/52

4 Pro starší kompilátory za iostream doplňte.h (iostream.h) a vynechte předponu std:: VYTVOŘENÍ PROJEKTU 1. Zvolte: Soubor Nový Projekt 2. Zvolte: Console Application 3. Zadejte název projektu 4. Vyberte umístění projektu na disku a potvrďte 5. Do otevřeného souboru vložte zdrojový kód nebo ho zkopírujte z jiného souboru 6. Zvolte: Spustit Zkompilovat a spustit 7. Zadejte název spustitelného programu, který bude vytvořen. program bude přeložen a spuštěn Poznámky: Základy programování v jazyce C++ doprovodný text str. 4/52

5 2. díl Složení programu C++ Program v C++ je složen z objektů, funkcí, proměnných a dalších komponent. #include <iostream> direktivu # tzv. preprocesor najde příkazový řádek s křížkem ještě před spuštěním kompilátoru každý program v C++ má funkci main, funkcí rozumíme úsek kódu, který provádí jednu nebo více akcí, funkce main je volána po spuštění programu jako první. Funkce main v tomto případě bude vracet hodnotu typu int (číslo s celočíselnou hodnotou) všechny funkce začínají a končí závorkou a std::cout << "Nazdar lidi!\n"; tisk na obrazovku, objekt cout funkce vrací po svém skončení operačnímu systému celočíselnou hodnotu 0 std specifikátor oboru názvů říká, že objekt cout je součástí standardní knihovny << přesměrování výstupu \n zalomení řádku Vyzkoušejte používání objektu cout v následujícím programu: #include <iostream> std::cout << "Dobry den.\n"; std::cout << "Zde je cislo 5: " << 5 << "\n"; std::cout << "Manipulacni objekt std::endl "; std::cout << "zpusobi zalomeni radku na obrazovce."; std::cout << std::endl; std::cout << "Zde je velke cislo:\t\t" << 70000; std::cout << std::endl; std::cout << "Tady je soucet 8 a 5:\t\t"; std::cout << 8+5 << std::endl; std::cout << "A tady mame zlomek:\t\t"; std::cout << (float) 5/8 << std::endl; std::cout << "Zde je velmi velke cislo:\t"; std::cout << (double) 7000 * 7000 << std::endl; std::cout << "Nezapomente zmenit Jesse Liberty "; std::cout << "na vase vlastni jmeno...\n"; std::cout << "Jesse Liberty je programator C++!\n"; Základy programování v jazyce C++ doprovodný text str. 5/52

6 Příkazu cout musí předcházet příkaz #include <iostream> Manipulátor endl ukončí řádek (end line) \t znak tabulátoru, zarovnání Typy dat: Float desetinné číslo Double číslo s plovoucí desetinnou čárkou Místo toho, abychom před každým cout psali std:: použijeme dva příkazy: using std::cout; using std::endl; Tím řekneme kompilátoru, že budeme používat objekty cout a endl ze standardní knihovny. Pak stačí už napsat jen: cout << "Dobry den.\n"; Druhý způsob: using namespace std; Tím specifikuji celý standardní obor názvů KOMENTÁŘE Používejte komentáře, za nějaký čas nebudete už vědět, proč zdrojový kód obsahuje ten či onen příkazový řádek!!! Komentář je text, který kompilátor ignoruje. - Jednořádkové // - Víceřádkové /* */ Základy programování v jazyce C++ doprovodný text str. 6/52

7 #include <iostream> using std::cout; /* toto je komentář a sahá až po ukončující značku hvězdičky a lomítka */ cout << "Nazdar lidi!\n"; // tento komentář končí s koncem řádku cout << "Komentar skoncil!\n"; // komentáře s dvojitým lomítkem mohou být na samostatném řádku /* stejně jako komentáře s lomítkem a hvězdičkou */ Komentáře by neměly říkat co se děje, ale proč se to děje, protože kód se mění a programátor může zapomenout komentář aktualizovat F U N K C E Funkce (matematika) Funkce je v matematice název pro zobrazení z nějaké množiny M do množiny čísel (většinou reálných nebo komplexních), nebo do vektorů (pak se mluví o vektorové funkci). Je to tedy předpis, který každému prvku z M jednoznačně přiřadit nějaké číslo nebo vektor (hodnotu funkce). Někdy se však slovo funkce používá pro libovolné zobrazení. Funkci v programu musí být možné během programu zavolat. Výjimkou je funkce main(), která volá operační systém. Když funkce vykoná svoji práci, vrátí se program za místo, odkud byla funkce volána. Téměř každý program v C++ obsahuje funkce. Základy programování v jazyce C++ doprovodný text str. 7/52

8 Příklad funkce: #include <iostream> // funkce IlustracniFunkce // vytiskne velmi užitečnou zprávu void IlustracniFunkce() hlavička funkce (návratový typ+název funkce+parametry) std::cout << "Uvnitr Ilustracni funkce\n"; tělo funkce // funkce main - vytiskne zprávu, pak zavolá // ilustrační funkci a nakonec vytiskne // druhou zprávu std::cout << "Ve funkci main\n"; IlustracniFunkce(); std::cout << "Zpet ve funkci main\n"; Funkce vrací buď skutečnou hodnotu, nebo prázdnou hodnotu typu void. Vyzkoušej: Opiš programový kód: 1. Voláme funkci, která není definována. 2. Vynech klíčové slovo void v hlavičce funkce #include <iostream> int Soucet(int x, int y) std::cout << "Ve funkci Soucet(), prijato " << x << " a " << y << "\n"; return (x+y); using std::cout; using std::cin; cout << "Ve funkci main()!\n"; int a, b, c; cout << "Vlozte dve cisla: "; cin >> a; cin >> b; cout << "\nvolani funkce Soucet()\n"; c=soucet(a,b); cout << "\nzpet ve funkci main().\n"; cout << "c bylo nastaveno na " << c; cout << "\nkonec...\n\n"; Základy programování v jazyce C++ doprovodný text str. 8/52

9 Porovnej: cin>> vstup cout << výstup Pokud program obsahuje celé bloky stejných řádků, je velmi efektivní a přehledné tyto bloky zapsat do funkce, která nebude mít žádnou vrácenou hodnotu, tedy void. Úkol: Naprogramuj další 3 funkce, které dvě čísla na vstupu odečtou, vynásobí a vydělí. Ascii tabulka znaků Například: Alt+92 \ Místo desetinné čárky budeme používat desetinnou tečku!!! Ano Ne 12,50 Základy programování v jazyce C++ doprovodný text str. 9/52

10 Českou diakritiku (znaky s háčky a čárkami) nebudeme používat u: názvů funkcí a proměnných v textových výstupech (výstupy jsou směrovány do okna konzoly neboli systému DOS). Českou diakritiku budeme používat u: komentářů Poznámky: Greerův 3. zákon: Počítačový program dělá jen to, co mu řeknete, nikdy však nedělá to, co byste chtěli, aby udělal. Základy programování v jazyce C++ doprovodný text str. 10/52

11 3. díl VYTVOŘENÍ ŠABLONY: // Název a autor programu #include <iostream> using namespace std; // cin >> " "; //cout << " \n"; char reakce; cin>>reakce; PROMĚNNÁ Proměnná úschovna pro data, které program potřebuje, místo pro dočasné uchování informace Proměnná se ukládá do místa v paměti, které má svoji adresu Proměnná má svoje jméno, program volá toto jméno, místo aby volal adresu v paměti. Proměnná může podle velikosti zabrat v paměti i více adres Každá přihrádka v paměti má velikost 1 B. Musíme kompilátoru říct, o jaký typ proměnné se jedná, aby podle toho připravil přihrádku v paměti. Jestliže typ proměnné má velikost 4 B, kompilátor připraví 4 přihrádky. Velikost objektu: sizeof příklad: sizeof(int) Velikost typu int: 4 bajty 2 DRUHY CELÝCH ČÍSEL: - se znaménkem signed (nastaveno implicitně) - bez znaménka unsigned (číslo bez znaménka je vždy kladné) Typ Velikost v Bytech Hodnoty Bool 1 True nebo false unsigned short int 2 0 až short int až unsigned long int 4 0 až long int až int (16 bitů) až int (32 bitů) až Základy programování v jazyce C++ doprovodný text str. 11/52

12 647 unsignet int (16 bitů) 2 0 až unsigned int (32 bitů) 4 0 až Char znakových hodnot Float 4 1,2e-38 až 3,4e38 Double 8 2,2e-308 až 1,8e308 Čím větší číslo, tím více paměti. DEFINICE = DEKLARACE PROMĚNNÉ int mojemesto; typ název středník Jazyk C++ rozlišuje mezi velkými a malými písmeny! Dohodnutá konvence: moje_mesto nebo mojemesto V názvu proměnné nesmí být tzv. klíčová slova jako jsou: if, while, for, main VYTVOŘENÍ VÍCE PROMĚNNÝCH NAJEDNOU: - oddělujeme je čárkou unsigned int delka, sirka, obsah; Přiřazení (uložení) hodnoty do proměnné: unsigned short delka; delka = 10; Lze udělat najednou: unsigned short delka = 10; long delka = 10, sirka = 20; Vytvoř program, který vypočítá obsah a plochu obdélníka! PŘÍKAZ TYPEDEF = DEFINICE TYPU typedef unsigned short int USHORT; USHORT delka=10; //na místo: unsigned short delka; Základy programování v jazyce C++ doprovodný text str. 12/52

13 Vytvoř program, který vypočítá obvod a obsah kruhu. ZNAKY Počítač pracuje pouze s čísly, například písmeno a odpovídá číslu 97 (hodnota sady ASCII) Vyzkoušej: #include <iostream> for (unsigned char i = 32; i<128; i++) std::cout << i; KONSTANTY Konstanta na rozdíl od proměnné nemění svoji hodnotu během programu. 1. Literální (zadává se přímo v programu): int mojevyska=180; 2. Symbolická (je reprezentovaná názvem): Místo: celkem = cena * 20; Napíšu: celkem = cena * pocetkusu; //pocetkusu je symbolická konstanta DEFINICE SYMBOLICKÉ KONSTANTY DVĚMA ZPŮSOBY: 2a) pomocí #define - starý způsob #define pocetkusu 20 Preprocesor vloží do textu za slov pocetkusu hodnotu 20. Je to pouhé nahrazení textu! 2 b) pomocí const - zadám typ, zlepšená prevence chyb const unsigned short int pocetkusu = 20; VÝUČTOVÉ KONSTANTY Základy programování v jazyce C++ doprovodný text str. 13/52

14 - deklarace výčtem, např. typ barvargb bude nabývat hodnot cervena, zelena, modra (barvy monitoru) enum barvargb cervena, zelena, modra; Co se stalo? Založen nový typ + vytvoření symbolické konstanty cervena s hodnotou 0, zelena s hodnotou 1 a modra s hodnotou 2) Mohu nastavit: enum barvargb cervena=10, zelena=50, modra=70; Pokud zadáš enum barvargb cervena=10, zelena=50, modra; symbolická konstanta modra bude mít hodnotu 51 Úkol: Jak bys nastavil výučtovou konstantu reprezentující tiskové barvy CMYK? Vyzkoušej: #include <iostream> enum Dny Pondeli, Utery, Streda, Ctvrtek, Patek, Sobota, Nedele ; Dny dnes; dnes = Pondeli; if ( dnes == Sobota dnes == Nedele ) std::cout << "\nmiluji vikend \n"; else std::cout << "\nskola vola!.\n"; Vysvětlivky: if else podmínka nebo == porovnávací operátor Základy programování v jazyce C++ doprovodný text str. 14/52

15 Úkol: Vytvoř program, který odpoví na otázku, co děláš konkrétní den v týdnu (na vstupu bude den v týdnu, na výstupu konkrétní činnost). Zapiš ho na tento papír! Poznámky: Základy programování v jazyce C++ doprovodný text str. 15/52

16 4.díl PŘÍKAZY Jednoduchý - všechny končí středníkem Přiřazení: x = a + b; čteme: přiřaď a+b do x Složený = blok příkazů - začíná a končí složenými závorkami Příklad: Blok příkazů, který provede záměn hodnot dvou proměnných s pomocí třetí pomocné proměnné: pom = a; a = b; b = pom; // pom a // a b // b pom VÝRAZY = OPERAND - výraz vrací hodnotu x = a + b; vrací se hodnota x, která vznikla přiřazením výsledku součtu proměnných a, b Program: #include <iostream> using std::cout; using std::endl; int a=0, b=0, x=0, y=35; cout << "a:" << a << " b: " << b; cout << " x: " << x << " y: " << y << endl; a = 9; Poznámka b = 7; y = x = a+b; cout << "a:" << a << " b: " << b; cout << " x: " << x << " y: " << y << endl; // inicializace a deklarace proměnných // přiřazení hodnoty 9 proměnné a // přiřazení hodnoty 7 proměnné b Při tisku souboru s programem zaškrtni volbu Čísla řádků: Základy programování v jazyce C++ doprovodný text str. 16/52

17 OPERÁTOR = symbol určité akce nad operandem (nad výrazem) OPERÁTOR PŘIŘAZENÍ x = a + b; operand operátor přiřazení operand MATEMATICKÉ OPERÁTORY - sčítání (+), odečítání (-), násobení (*), dělení (/), dělení se zbytkem (%) Zbytek po celočíselném dělení 21 % 4 = 1 OPERÁTOR PLUS-ROVNÁ-SE cislo = cislo +2; cislo += 2; zvýší hodnotu proměnné cislo o 2 Inkrementace (++) = zvýšení hodnoty o 1 Dekrementace (--) = snížení hodnoty o 1 c = c + 1; nebo c+=1; nebo c++; Tzv. PREFIXOVÝ zápis: ++c Tzv. POSTFIXOVÝ zápis: c++ Úkol 4.1 Vytvoř jednoduchý program, který převede číslo 12 do dvojkové soustavy. Základy programování v jazyce C++ doprovodný text str. 17/52

18 Otestuj následující program: #include <iostream> using std::cout; int mujvek = 39; // inicializace dvou celočíselných proměnných int tvujvek = 39; cout << "Mam" << mujvek << " let.\n"; cout << "Mas" << tvujvek << " let.\n"; mujvek++; // postfixová inkrementace ++tvujvek; // prefixová inkrementace cout << "Uplynul jeden rok...\n"; cout << "Mam" << mujvek << " let.\n"; cout << "Mas" << tvujvek << " let.\n"; cout << "Uplynul dalsi rok...\n"; cout << "Mam" << mujvek++ << " let.\n"; cout << "Mas" << ++tvujvek << " let.\n"; cout << "Vytiskneme to znovu.\n"; cout << "Mam" << mujvek << " let.\n"; cout << "Mas" << tvujvek << " let.\n"; PRIORITA OPERÁTORŮ vnořené závorky vnější závorky mocnina, odmocnina násobení, dělení sčítání, odečítání TYP BOOL = pravdivost či nepravdivost výrazu (true či false) RELAČNÍ OPERÁTORY - porovnávání dvou hodnot (výrazů), vrací hodnotu True nebo False Název Operátor Příklad Výsledek Rovná se == 1 == 0; 1 == 1; F T Nerovná se!= 1!= 0; 0!=0 T F Větší než > 1 > 0; 1 > 1; T F Větší nebo rovno >= 1 >= 0; 1 >= 1; T T Menší než < 1 < 0; 1 < 1; F F Menší nebo rovno <= 1 <= 0; 1 <= 1; F T Základy programování v jazyce C++ doprovodný text str. 18/52

19 operátor přiřazení = relační operátor == PŘÍKAZ IF (podmínka; KDYŽ) podmínka - rozhodovací blok vývojového diagramu + podmínka není splněna podmínka je splněna PRO JEDEN PŘÍKAZ: if (výraz) příkaz; if (a > b) cout << cislo << a << je vetsi nez cislo << b; Pro lepší přehlednost budeme i jeden příkaz u podmínky if psát do složených závorek: if (a > b) cout << cislo << a << je vetsi nez cislo << b; Základy programování v jazyce C++ doprovodný text str. 19/52

20 PRO VÍCE PŘÍKAZŮ: if (výraz) příkaz1; příkaz2; příkaz3; bool vymena=true; if(vymena) pom = a; a = b; b = pom; Úkol: Zapiš následující program a vysvětli jeho chování : //demonstrace příkazu if #include <iostream> using std::cout; using std::cin; int skoresparta, skoreslavia; cout << "Vlozte skore Sparty: "; cin >> skoresparta; cout << "\nvlozte skore Slavie: "; cin >> skoreslavia; cout << "\n"; if (skoresparta > skoreslavia) cout << "Sparta do toho!\n"; if (skoresparta < skoreslavia) cout << "Slavia do toho!\n"; if (skoresparta == skoreslavia) cout << "Vyrovnane skore? To neni mozne!\n"; Základy programování v jazyce C++ doprovodný text str. 20/52

21 cout << "Zadejte skutecne skore Slavie: "; cin >> skoreslavia; if (skoresparta > skoreslavia) cout << "Vedel jsem to! Sparta do toho!"; if (skoreslavia > skoresparta) cout << "Vedel jsem to! Slavia do toho!"; if (skoresparta == skoreslavia) cout << "Aha, je to skutecne vyrovnane!"; cout << "\ndiky za informace.\n"; char cekej; cin >> cekej; PŘEHLED: if (výraz) příkaz; pokud je podmínka splněna, vykoná se příkaz na dalším řádku, pokud není splněna program jde na další řádek další příkaz+ Větvení ve dvou směrech if (výraz) pokud je podmínka splněna, vykoná se příkaz 1, pokud není splněna příkaz 1; vykoná se příkaz 2 else musí nastat jedna z možností další příkaz; příkaz 2; PŘÍKAZY IF MŮŽEME DO SEBE VNOŘOVAT A VYTVÁŘET TAK SLOŽITĚJŠÍ PROGRAMOVÉ KONSTRUKCE. Úkol 4.2 Vytvoř program pro slovní hodnocení, který vyhodnotí číslo na vstupu a pokud je vložena na vstup jednička, na výstupu napíše výborný, pokud je vložena dvojka, na výstupu napíše chvalitebný atd. Pokud je vloženo číslo jiné než 1 až 5, napíše chybovou zprávu. Nakresli rozhodovací bloky vývojového diagramu. Základy programování v jazyce C++ doprovodný text str. 21/52

22 LOGICKÉ OPERÁTORY AND (zároveň) && výraz1 && výraz2 OR (nebo) výraz1 výraz2 NOT (negace;opak)!!výraz if (( x == 5) && (y == 5)) if (( x == 5) (y == 5)) if (!( x == 5)) //AND; pokud není splněna 1. podmínka, kompilátor jde dál //OR //NOT Úkol 4.3 Vytvoř program, který bude řešit pravdivostní hodnotu operace konjunkce (výroková logika). Připomínám, že konjunkce je pravdivá, jsou-li oba výroky pravdivé. Pokud se ti to podaří, neboj se a pusť se do naprogramování všech pěti základních logických operací. Tou pátou je negace. Good luck Poznámky: Základy programování v jazyce C++ doprovodný text str. 22/52

23 5. díl Funkce = podprogram, který umí zpracovat data a vrátit hodnotu. - vestavěné - uživatelsky definované int mojefunkce(); vrací celočíselnou hodnotu char mojefunkce(); vrací znak int mojefunkce (int celociselnahodnota, float zlomek) Deklarace funkce: - prototyp funkce se napíše do souboru a pak se tento soubor s pomocí direktivy #include zahrne do programu - prototyp funkce se zapíše do souboru, ve kterém se funkce používá - funkce se definuje pře tím, než ji jiná funkce bude volat. long Plocha(int delka, int sirka); Obor platnosti proměnných - Lokální proměnné mají platnost jen uvnitř bloku ohraničeného složenými závorkami, uvnitř funkce. Když funkce vrátí řízení, přestanou být lokální proměnné dostupné. Lokálními proměnnými jsou i parametry předávané funkcí. - Globální proměnné platí v celém programu Prostuduj pečlivě následující program #include <iostream> float Prevod(float); using namespace std; float TeplotaFer; float TeplotaCel; cout << "Vlozte prosim teplotu v jednotkach Fahrenheita: "; cin >> TeplotaFer; TeplotaCel = Prevod(TeplotaFer); cout << "\na zde je teplota v jednotkach Celsia: "; cout << TeplotaCel << endl; Základy programování v jazyce C++ doprovodný text str. 23/52

24 float Prevod(float TeplotaFer) float TeplotaCel; TeplotaCel = ((TeplotaFer - 32) * 5) / 9; return TeplotaCel; Následující program demonstruje platnost lokálních proměnných v bloku #include <iostream> void mojefunkce(); int x = 5; std::cout << "\nv main je hodnota x: " << x; mojefunkce(); std::cout << "\nzpatky v main, hodnota x je: " << x; void mojefunkce() int x = 8; std::cout << "\nuvnitr mojefunkce, lokalni promenna x: " << x << std::endl; std::cout << "\nv bloku funkce mojefunkce, hodnota x je: " << x; int x = 9; std::cout << "\nzcela lokalni promenna x: " << x; std::cout << "\nmimo blok, uvnitr mojefunkce, x: " << x << std::endl; Parametry jako lokální proměnné demonstruje následující program: #include <iostream> void zamena(int x, int y); int x = 5, y = 10; std::cout << "Funkce main. Pred zamenou, x: " << x << " y: " << y << "\n"; zamena(x,y); Základy programování v jazyce C++ doprovodný text str. 24/52

25 std::cout << "Funkce main. Po zamene, x: " << x << " y: " << y << "\n"; void zamena (int x, int y) int pom; std::cout << "Funkce zamena. Pred zamenou, x: " << x << " y: " << y << "\n"; pom = x; x = y; y = pom; std::cout << "Funkce zamena. Po zamene, x: " << x << " y: " << y << "\n"; Globální proměnné: #include <iostream> void mojefunkce(); // prototyp int x = 5, y = 7; // globální proměnné using std::cout; cout << "x ve funkci main: " << x << "\n"; cout << "y ve funkci main: " << y << "\n\n"; mojefunkce(); cout << "Navrat z mojefunkce!\n\n"; cout << "x ve funkci main: " << x << "\n"; cout << "y ve funkci main: " << y << "\n"; void mojefunkce() using std::cout; int y = 10; cout << "x ve funkci mojefunkce: " << x << "\n"; cout << "y ve funkci mojefunkce: " << y << "\n\n"; Poznámka: V případě více funkcí v programu může být deklarování globálních proměnných nevhodné. Základy programování v jazyce C++ doprovodný text str. 25/52

26 Příklad k opakování (funkce bez návratové hodnoty): Vytvoř program s několika příkazy cout, mezi tyto řádky vložte funkci, která vynechá 5 řádků. Ladění programu K ladění programu si vybereme předchozí program, budeme sledovat hodnoty proměnných x a y. Postup: 1. Zkompiluji zdrojový kód Ctrl+F9 2. Umístím breakpointy na řádky ve zdrojovém kódu pomocí Ctrl+F5 3. Spustím ladění F8 (Debug Ladit) 4. Debug - Sledovat proměnné Ctrl+W v levém okně sleduji hodnoty proměnných 5. Debug - Ukončit provádění Ctrl+Alt+F2 Poznámky: Základy programování v jazyce C++ doprovodný text str. 26/52

27 6. díl Smyčka while - opakované provádění příkazů v bloku dokud je počáteční podmínka pravdivá (je splněna) while (podmínka) while (podmínka) příkaz; příkazy; // Smyčka s while #include <iostream> int citac = 0; // inicializace podmínky while(citac < 5) // test, zda je podmínka stále pravdivá citac++; // tělo smyčky std::cout << "citac:" << citac << "\n"; std::cout << "Hotovo, citac: " << citac << ".\n"; char reakce; cin>>reakce; podmínka + příkaz - Příkaz continue; skok zpět na začátek smyčky Příkaz break; předčasné vyskočení ze smyčky a pokračování za while (podmínka) if (podmínka 2) break; //příkazy; Základy programování v jazyce C++ doprovodný text str. 27/52

28 Smyčka while (true) while (true) if (podmínka 2) break; //příkazy; // Demonstruje nekonečnou smyčku "while true" #include <iostream> int citac = 0; while (true) citac ++; if (citac > 10) break; std::cout << "Citac: " << citac << "\n"; char reakce; cin>>reakce; Smyčka do while Tělo smyčky se provede předtím, než se otestuje její podmínka. Tím je zajištěno, že se tělo smyčky provede alespoň jedenkrát. příkaz podmínka + - do příkaz; while (podmínka); Základy programování v jazyce C++ doprovodný text str. 28/52

29 //Program demonstruje smyčku do while #include <iostream> using namespace std; int citac; cout << "Kolik pozdravu? "; cin >> citac; do cout << "Ahoj\n"; citac--; while (citac > 0); cout << "Hodnota citace: " << citac << endl; char reakce; cin>>reakce; Smyčka for for ( inicializace; test+ akce ) příkaz; // Smyčka for #include <iostream> int citac; for (citac = 0; citac < 5; citac++) std::cout << "Smycka! "; std::cout << "\ncitac: " << citac << ".\n"; char reakce; cin>>reakce; Základy programování v jazyce C++ doprovodný text str. 29/52

30 Vytvoř program na výpočet faktoriálu. n! = n (n-1)(n-2) Například: 5! = = 120 Příkaz switch switch (výraz) case prvnihodnota: case druhahodnota: case ntahodnota: default: prikaz; prikaz; prikaz; prikaz; Základy programování v jazyce C++ doprovodný text str. 30/52

31 // Ukázka příkazu switch #include <iostream> using namespace std; unsigned short int cislo; cout << "Vlozte cislo mezi 1 a 5: "; cin >> cislo; switch (cislo) case 0: cout << "Vlozil jsi cislo mensi nez 1!"; break; case 5: cout << "nedostatecny\n"; break; case 4: cout << "dostatecny\n"; break; case 3: cout << "dobry\n"; break; case 2: cout << "chvalitebny\n"; break; case 1: cout << "vyborny\n"; default: break; cout << "Vlozil jsi cislo vetsi nez 5!\n"; break; cout << "\n\n"; char reakce; cin>>reakce; Poznámky: Základy programování v jazyce C++ doprovodný text str. 31/52

32 7. díl Základy programování v jazyce C++ doprovodný text str. 32/52

33 Na diagramu je vidět struktura zdrojového kódu v jazyku C++. Jak už si několikrát řekli a v programech odladili, nejdříve na prvním řádku programu napiš název, programu, svoje jméno, datum vytvoření a verzi. Potom zadej příkazy na vložení externích souborů, například knihovny matematických funkcí. Dále definuj externí proměnné, které nezmění svoje hodnoty během celého programu. Potom následuje definice uživatelských funkcí, které definuju ještě před hlavní částí programu. Dále vždy následuje hlavní část programu a uvnitř zadávej jednoduché příkazy, volání uživatelsky definovaných funkcí atd. Blok příkazů musí být vždy vymezen složenými závorkami. Na následující stránce rozebereme program na výpočet elektrotechnických veličin podle Ohmova zákona. Obsahuje větvený příkaz Switch a jednotlivé vzorce pro výpočet jsou volány jako uživatelsky definované funkce. Základy programování v jazyce C++ doprovodný text str. 33/52

34 // Ohmův zákon, miskota, , v.3 - s užitím funkcí a příkazu SWITCH #include <iostream> //umožní používat vstupní a výstupní příkazy cin a cout //tady definuj uživatelské funkce: double napeti (double x, double y) return(x* y); double odpor (double x, double y) return(x/ y); double proud (double x, double y) return(x/ y); definice funkce obsah funkce using namespace std; // nemusím psát před příkazy cin a cout příkaz std:: //sem napiš hlavní část programu: cout << "Program OHMUV ZAKON\n"; cout << "U = R. I\n"; cout << "R = U / I\n"; cout << "I = U / R\n"; double u, r, i; int volba; //nabídkové menu cout << "\ntvoje volba: 1-vypocita napeti, 2-vypocita odpor, 3-vypocita proud\n"; cin >> volba; switch (volba) proměnné hlavní část programu výpis na obrazovku definice proměnných na vstupu proměnná volba větvení programu podle hodnoty case 1: proměnná má hodnotu 1 cout << "Zadej odpor a proud\n"; cin >> r >> i; u = napeti (r, i); cout << "Napeti na obvodu je " << u << " voltu\n"; break; case 2: proměnná má hodnotu 2 cout << "Zadej napeti a proud\n"; cin >> u >> i; r = odpor (u, i); cout << "Odpor v obvodu ma " << r << " ohmu\n"; break; case 3: proměnná má hodnotu 3 Základy programování v jazyce C++ doprovodný text str. 34/52

35 cout << "Zadej napeti a odpor\n"; cin >> u >> r; i = proud (u, r); cout << "Proud v obvodu je " << i << " amper\n"; break; default: cout << "Vlozil jsi spatne cislo!\n"; break; cout << "\n\n"; char reakce; cin >> reakce; 7.1 Vytvoř program na aplikaci vzorců v = s / t, s = v. t, t = s / v a dále program na procenta, který vypočítá základ, procentuelní část nebo počet procent (z, č, p). Základy programování v jazyce C++ doprovodný text str. 35/52

36 Připomenutí: Následující schémata ukazují rozdíl v použití příkazů if a switch. Pokud program má na základě testu nějaké proměnné pokračovat dvěma cestami, použij příkaz if. Pokud má dále pokračovat více jak dvěma cestami, použij příkaz switch. Tady použij příkaz if ( podmínka) Blok příkazů Tady použij příkaz switch( proměnná) Case 1: příkazy break; Case 2: příkazy break; Poznámky: Základy programování v jazyce C++ doprovodný text str. 36/52

37 8. díl Pole a řetězce Pole je určitá kolekce míst v úložišti dat, z nichž každé obsahuje stejný typ dat. Pole se deklaruje zadáním typu, za nímž následuje název pole a index (subskript). Index je počet prvků pole uzavřený v hranatých závorkách. int PoleCisel[10]; typ - název - počet prvků Prvky pole se počítají od nuly: první prvek PoleCisel [0]; druhý prvek PoleCisel [1];... desátý prvek PoleCisel [9]; Příklad na vložení a posléze zobrazení deseti prvků pole s názvem mojepole: //Výpis Pole #include <iostream> int mojepole[10]; int i; for ( i=0; i<10; i++) // 0-9 std::cout << "Hodnota mojepole[" << i << "]:"; std::cin >> mojepole[i]; for (i = 0; i<10; i++) std::cout << i << ":" << mojepole[i] << "\n"; Inicializace polí //na vstupu 10 prvků pole //výstup na obrazovku int PoleCelych cisel[5] = 10, 20, 30, 40, 50; nelze deklarovat víc prvků než je velikost pole (méně lze) int PoleCelych cisel[ ] = 10, 20, 30, 40, 50; velikost pole lze vynechat Nelze používat stejný název pro pole a pro proměnnou! Základy programování v jazyce C++ doprovodný text str. 37/52

38 Vícerozměrná pole Dvojrozměrné pole má dva indexy, trojrozměrné pole má tři indexy atd. Příkladem dvojrozměrného pole šachovnice nebo adresy buněk v Excelu. U šachovnice první rozměr představuje osm řádků a druhý rozměr představuje osm sloupců. int Sachovnice [8][8]; je mnohem reálnější než jednorozměrné pole int Sachovnice [64]; Bílý kůň se nachází v 5. řádku a ve 4. sloupci. Tato pozice odpovídá prvku pole: Sachovnice [4][3]; Příklad: Načti do proměnné typu pole 3 teploty měřených během dne. Zjisti maximální teplotu a kolikátá byla v pořadí. Hlavní část programu: int poleteplot[3]; for (int i=0; i<3; i++) cin >> poleteplot[i]; for (int i=0; i<3; i++) cout << poleteplot[i]; //maximum int poradi = 0; int max = poleteplot[0]; Základy programování v jazyce C++ doprovodný text str. 38/52

39 for (int i=1; i<3; i++) if (poleteplot[i]>max) max = poleteplot[i]; poradi = i; cout << "Maximum je " << max; cout << "byl to prvek pole číslo " << poradi + 1; char reakce; cin >> reakce; Úkol: Sestav program, který zjistí nejmenší a průměrnou teplotu ze zadaných hodnot. Pole znaků zakončené hodnotou null. Toto pole je považováno za řetězec stylu jazyka C. cout << Ahoj, světe. ; deklarovat a inicializovat řetězec C můžeme stejným způsobem jako kterékoli jiné pole. char Pozdrav[ ] = A, h, o, j,,,, s, v, ě, t, e,., \0 ; Proměnná Pozdrav je deklarována jako pole znaků, kterými je také inicializována. Poslední znak \0 je znak null ukončovací řetězec. Lze psát: char Pozdrav [ ] = Ahoj, světe. ; Příklad: Neinicializované znakové pole: char buffer[80]; //deklarovaný buffer pro 80 znaků (79 znaků + null) std::cout << "Zadejte retezec: "; std::cin >> buffer; std::cout << "Zde mame buffer: " << buffer << std::endl; Základy programování v jazyce C++ doprovodný text str. 39/52

40 Použití speciální metody nazvané get() pro objekt cin Metoda cin.get() přebírá tři parametry: 1. Naplňovaný buffer 2. Maximální počet přebíraných znaků 3. Oddělovač ukončovací daný řetězec char buffer[80]; cout << "Zadejte retezec: "; cin.get(buffer, 79); // převzít až 79 znaků nebo po nový řádek cout << "Zde mame buffer: " << buffer << endl; Program pro kopírování řetězců, metoda strcpy() #include <iostream> //umožní používat vstupní a výstupní příkazy cin a cout #include <string.h> //obsahuje prototyp funkce strcpy() using namespace std; // nemusím psát před příkazy cin a cout příkaz std:: //sem napiš hlavní část programu: char retezec1[10]; char retezec2[10]; cin.get(retezec1,10); strcpy(retezec2,retezec1); //zkopíruje retezec1 do retezce2 cout << retezec1 << "\n"; cout << retezec2 << "\n"; char reakce; cin >> reakce; Poznámky: Základy programování v jazyce C++ doprovodný text str. 40/52

41 9. díl Algoritmus & Vývojový diagram Algoritmus je přesný postup, který vede k vyřešení určitého výsledku. Vysvětlili jsme si pojem algoritmus a přidáme ještě jeden pojem a to deterministický. Znamená to, že pokud programu dáme určitá data, tak nám vrátí výsledek, a pokud mu tatáž data zadáme znovu, výsledek bude totožný s předchozím. Algoritmus je přesný návod či postup, kterým lze vyřešit daný typ úlohy. Pojem algoritmu se nejčastěji objevuje při programování, kdy se jím myslí teoretický princip řešení problému (oproti přesnému zápisu v konkrétním programovacím jazyce). Obecně se ale algoritmus může objevit v jakémkoli jiném vědeckém odvětví. Jako jistý druh algoritmu se může chápat i např. kuchyňský recept. V užším smyslu se slovem algoritmus rozumí pouze takové postupy, které splňují některé silnější požadavky: Vlastnosti algoritmů Konečnost (finitnost) Každý algoritmus musí skončit v konečném počtu kroků. Tento počet kroků může být libovolně velký (podle rozsahu a hodnot vstupních údajů), ale pro každý jednotlivý vstup musí být konečný. Postupy, které tuto podmínku nesplňují, se mohou nazývat výpočetní metody. Speciálním příkladem nekonečné výpočetní metody je reaktivní proces, který průběžně reaguje s okolním prostředím. Někteří autoři však mezi algoritmy zahrnují i takovéto postupy. Obecnost (hromadnost, masovost, univerzálnost) Algoritmus neřeší jeden konkrétní problém (např. jak spočítat 3 7 ), ale obecnou třídu obdobných problémů (např. jak spočítat součin dvou celých čísel ), má širokou množinu možných vstupů. Determinovanost Každý krok algoritmu musí být jednoznačně a přesně definován; v každé situaci musí být naprosto zřejmé, co a jak se má provést, jak má provádění algoritmu pokračovat, takže pro stejné vstupy dostaneme pokaždé stejné výsledky. Protože běžný jazyk obvykle neposkytuje naprostou přesnost a jednoznačnost vyjadřování, byly pro zápis algoritmů navrženy programovací jazyky, ve kterých má každý příkaz jasně definovaný význam. Vyjádření výpočetní metody v programovacím jazyce se nazývá program. Některé algoritmy ale determinované nejsou, pravděpodobnostní algoritmy v sobě mají zahrnutu náhodu. Výstup (resultativnost) Algoritmus má alespoň jeden výstup, veličinu, která je v požadovaném vztahu k zadaným vstupům, a tím tvoří odpověď na problém, který algoritmus řeší (algoritmus vede od zpracování hodnot k výstupu) Elementárnost Algoritmus se skládá z konečného počtu jednoduchých (elementárních) kroků. V praxi jsou proto předmětem zájmu hlavně takové algoritmy, které jsou v nějakém smyslu kvalitní. Takové algoritmy splňují různá kritéria, měřená např. počtem kroků potřebných pro běh algoritmu, jednoduchost, efektivitu či eleganci. Problematikou efektivity algoritmů, tzn. metodami, jak z několika známých algoritmů řešících konkrétní problém vybrat ten nejlepší, se zabývají odvětví informatiky nazývané algoritmická analýza a teorie složitosti. Základy programování v jazyce C++ doprovodný text str. 41/52

42 Vývojový diagram je tedy grafické znázornění algoritmu. Vývojové diagramy se skládají z grafických značek. Značky jsou různé a různě se kombinují, tím se simulují různé situace a různé příkazy, do těchto značek se pak vypisují upřesňující údaje. Nyní se podíváme na to, jak vypadají jednotlivé části vývojového diagramu. Konec a začátek algoritmu Běžný příkaz c = a + b; Podmíněný výraz if (podmínka) blok příkazů Cyklus s určeným počtem opakování for (inicializace, podmínka, přírůstek) blok příkazů; Cyklus s podmínkou na konci do blok příkazů; while (podmínka); Cyklus s podmínkou na začátku while (podmínka) blok příkazů; Ruční vstup cin >> proměnná; Zobrazení výstupu cout << text << proměnná; Základy programování v jazyce C++ doprovodný text str. 42/52

43 Zpracování souboru Uložení dat do souboru Podprogram Spojovací značka Spojovací čára Odkazy: Základy programování v jazyce C++ doprovodný text str. 43/52

44 Tip DiaCze 1.0 Pomocí této aplikace můžete velice jednoduše kreslit diagramy a modelovat chování složitých systémů a to od komplexního vnějšího pohledu až po detailní popis konkrétních součástí obecně libovolného systému. Aplikace DiaCze Vám umožní kreslit UML, EML diagramy ER, ERD, stavové digramy, topologie sítí, Cisco páteřní sítě, Mapy oblastí, vývojové diagramy - minispecifikace a pochopitelně business modelování stavů, chování a rolí ve velkých firmách a nadnárodních korporacích. Ačkoliv DiaCze v mnoha ohledech předčí schopnosti konkurenčního produktu Microsoft Visio, je dodávána zcela zdarma jakožto freeware pod záštitou GNU GPL licence. Licence: Vim's license Download: Vývojový diagram pro výpočet napětí v elektrickém obvodu podle Ohmova zákona vytvořený v aplikaci DiaCze 1.0 Základy programování v jazyce C++ doprovodný text str. 44/52

45 Nyní zapíšeme vývojový diagram pro zjištění nejvyšší teploty z úlohy předchozího 8. dílu: Hlavní část programu: int poleteplot[3]; for (int i=0; i<3; i++) cin >> poleteplot[i]; for (int i=0; i<3; i++) cout << poleteplot[i]; //maximum int poradi = 0; int max = poleteplot[0]; for (int i=1; i<3; i++) if (poleteplot[i]>max) max = poleteplot[i]; poradi = i; cout << "Maximum je " << max; cout << "byl to prvek pole číslo " << poradi + 1; Úkol 9.1: S pomocí aplikace DiaCze 1.0 sestav vývojový diagram na kompletní řešení Ohmova zákona ze 7. dílu Poznámky: Základy programování v jazyce C++ doprovodný text str. 45/52

46 10. díl Ukazatele Schopnost používat ukazatele a manipulovat s pamětí na velmi nízké úrovni činí z jazyka C++ nejlepší programovací jazyk pro vestavěné aplikace a aplikace pracující v reálném čase. Ukazatel je proměnná, která uchovává paměťovou adresu. Paměť počítače je rozdělena do sekvenčně číslovaných paměťových buněk. Každá proměnná je umístěna na jedinečném místě v paměti, která se označuje její adresou. Operátor adresy & vrací adresu objektu v paměti: using namespace std; unsigned short promennashort=5; unsigned long promennalong=65535; long zpromenna = ; cout << "promenna typu Short:\t" << promennashort; cout << "\tadresa promenne typu Short:\t"; cout << &promennashort << "\n"; cout << "promenna typu Long:\t" << promennalong; cout << "\tadresa promenne typu Long:\t"; cout << &promennalong << "\n"; cout << "promenna se znamenkem:\t" << zpromenna; cout << "\tadresa promenne se znamenkem:\t"; cout << &zpromenna << "\n"; Popis programu: Postupně se inicializují proměnné: proměnná typu unsigned short, dále proměnná typu unsigned long a nakonec proměnná typu long. &promennashort &promennalong &zpromenna Základy programování v jazyce C++ doprovodný text str. 46/52

47 Potom se vytisknou jejich hodnoty a díky operátoru & i jejich adresy v paměti počítače. Adresy jsou specifické a liší se podle počítače, i při každém spuštění programu. deklarace typu nese informaci, kolik paměti má kompilátor proměnné vymezit. Například proměnná typu má obvykle 4 bajty long int, což znamená, že proměnná má adresu souvislého úseku 4 bajtů paměti. Každá proměnná má svoji adresu. Adresu proměnné nemusíme znát, ale můžeme ji uložit do ukazatele. Proměnná > Adresa(proměnné) > Ukazatel (proměnná) Deklarace proměnné ukrok do které se uloží její adresa: int *ukrok = 0; int * pyear = 0; uk ukazatel p pointer Vznikne proměnná ukrok jako ukazatel na typ int. Proměnná ukrok bude uchovávat adresu celého čísla. Dbáme na to, aby ukazatel měl vždy inicializovanou nějakou hodnotu, pokud ji neznáme, přiřadíme hodnotu nula (nulový ukazatel). Aby ukazatel obsahoval adresu, musíme mu nějakou přiřadit: unsigned short int jakstary = 16; unsigned short int * ukvek = 0; ukvek = &jakstary; // vytvoření proměnné // vytvoření ukazatele // vložení adresy proměnné jakstary do proměnné ukvek Stručněji můžeme napsat: unsigned short int jakstary = 16; // vytvoření proměnné unsigned short int * ukvek = &jakstary; // vytvoření ukazatele na proměnnou jakstary Prostřednictvím ukazatele ukvek lze nepřímo získat hodnotu proměnné jakstary. Běžná proměnná v. proměnná Ukazatel Běžná proměnná pro kompilátor znamená, kolik paměti je potřeba k uchování hodnoty. Typ pro kompilátor znamená, kolik paměti spotřebuje objekt na adrese, která je v ukazateli uložena. Operátor nepřímého přístupu * operátor zrušení odkazu; získání odkazu ukazatele; získání hodnoty uložené na adrese, jejíž hodnota je v ukazateli. Základy programování v jazyce C++ doprovodný text str. 47/52

48 Ukazatel poskytuje nepřímý přístup k hodnotě proměnné, jejíž adresu uchovává. Chceme-li prostřednictvím ukazatele ukvek přiřadit hodnotu proměnné jakstary, napíšeme: unsigned short int tvujvek; tvujvek = *ukvek; //čteme: hodnota uložená na adrese Vezmi hodnotu uloženou na adrese dané hodnotou ukazatele ukvek a přiřaď ji do tvujvek. Ukazatel má stejnou velikost, obvykle 5 bajty na počítači s 32 bitovým procesorem a 8 bajtů na počítači s 64 bitovým procesorem Poznámky: Základy programování v jazyce C++ doprovodný text str. 48/52

49 11. díl Ukazatele, adresy a proměnné Jakmile je ukazateli přiřazena adresa proměnné, je možné jej použít k získání přístupu k datům v této proměnné. // Používání ukazatelů #include <iostream> typedef unsigned short int USHORT; using std::cout; using std::cin; USHORT mujvek; // proměnná USHORT *ukvek; // ukazatel mujvek = 5; cout << "mujvek: " << mujvek << "\n"; ukvek = &mujvek; // přiřazení adresy proměnné mujvek do ukvek cout << "*ukvek: " << *ukvek << "\n\n"; //zrušení odkazu ukazatele ukvek a jeho tisk cout << "Nastaveni*ukVek na 7...\n"; *ukvek = 7; // nastavení mujvek na 7 //proměnné na adrese uložené v ukazateli ukvek se //přiřadí hodnota 7 cout << "*ukvek: " << *ukvek << "\n"; cout << "mujvek: " << mujvek << "\n\n"; cout << "Nastaveni mujvek na 9...\n"; mujvek = 9; cout << "mujvek: " << mujvek << "\n"; cout << "*ukvek: " << *ukvek << "\n"; char vstup; cin >> vstup; Popis programu: Deklarace dvou proměnných: mujvek typu unsigned short a ukazatel ukvek na proměnnou typu unsigned short. Ukazatele umožňují manipulaci s adresami, aniž bychom znali jejich skutečné hodnoty. Základy programování v jazyce C++ doprovodný text str. 49/52

50 Když přiřadíme ukazateli adresu proměnné, bude mít ukazatel skutečně adresu této proměnné jako svou hodnotu. Tento fakt demonstruje další příklad: // Hodnoty ukazatelů #include <iostream> using std::cout; unsigned short int mujvek = 5, tvujvek = 10; // ukazatel unsigned short int * ukvek = &mujvek; cout << "mujvek:\t\t" << mujvek << "\t\ttvujvek:\t" << tvujvek << "\n"; cout << "&mujvek:\t" << &mujvek << "\t&tvujvek:\t" << &tvujvek << "\n"; cout << "ukvek:\t\t" << ukvek << "\n"; cout << "*ukvek:\t\t" << *ukvek << "\n"; cout << "\nprenastaveni ukvek = &tvujvek...\n\n"; ukvek = &tvujvek; // přenastavení ukazatele cout << "mujvek:\t\t" << mujvek << "\t\ttvujvek:\t" << tvujvek << "\n"; cout << "&mujvek:\t" << &mujvek << "\t&tvujvek:\t" << &tvujvek << "\n"; cout << "ukvek:\t\t" << ukvek << "\n"; cout << "*ukvek:\t\t" << *ukvek << "\n"; cout << "\n&ukvek:\t\t" << &ukvek << "\n"; char vstup; cin >> vstup; Rozdělení paměti Základy programování v jazyce C++ doprovodný text str. 50/52

51 Lokální proměnné jsou spolu s parametry funkcí v zásobníku. Kód je v prostoru kódu, globální proměnné jsou v globálním oboru názvů. Interní funkce správy běhu programu, sledování vrcholu zásobníku a ukazatele na aktuální instrukci jsou v registrech. Veškerá volná zbývající paměť je označována jako halda nebo volné úložiště. Halda ani zásobník se nedají nijak označit, proto musíme požádat o adresu přihrádky, která se vyhradí, a pak tuto adresu uložíme do ukazatele. Ukazatel můžeme vtipně přirovnat k tlačítku na telefonu, do kterého uložíme konkrétní telefonní číslo. Číslo vytočím stisknutím tlačítka a přitom si ho nemusím pamatovat. Na rozdíl od místních proměnných uložených v zásobníku, které jsou odstraněny při návratu z funkce, se volné úložiště neuvolní, dokud program neskončí. Pokud nepotřebujeme vyhrazenou paměť, uvolníme ji. Ve srovnání s globálními proměnnými je přístup k haldě lepší, protože přístup k datům mají pouze funkce, které mají přístup k ukazateli. Tím vzniká striktně kontrolované rozhraní pro přístup k datům. Klíčové slovo new vyhrazení paměti ve volné oblasti new unsigned short int ve volné oblasti se vymezí dva bajty new long čtyři bajty návratovou hodnotou operátoru new je paměťová adresa, kterou je nutné přiřadit ukazateli. Vytvoření objektu typu unsigned short: unsigned short int * ukukazatel; ukukazatel = new unsigned short int; Základy programování v jazyce C++ doprovodný text str. 51/52

52 nebo najednou: unsigned short int * ukukazatel = new unsigned short int; Do oblasti paměti ukazatele můžeme přiřadit hodnotu: *ukukazatel = 72; Lze říci: Přiřaď hodnotu 72 do části ve volném úložišti, na kterou ukazuje ukukazatel. Po skončení práce s jistou částí paměti zavoláme na ukazatel operátor delete. delete ukukazatel; Lze říci: Vrať do volného úložiště tu část paměti, na kterou ukazuje tento ukazatel. Pokud bych opakovaně použil delete na stejný ukazatel, zhroutí se program! Proto je dobré po příkazu delete ukazatel vynulovat: Zvire *unes = new Zvire; delete ukpes; //uvolní paměť ukpes = 0; //nastaví ukazatel na nulu delete ukpes; //neškodné Příklad: Přidělení místa ve volné paměti proměnné, použité této proměnné a uvolnění jí používané paměti. // Alokace a smazání ukazatele #include <iostream> using std::cout; using std::cin; int lokalnipromenna = 5; int * uklokalni = &lokalnipromenna; int * ukhromada = new int; *ukhromada = 7; cout << "lokalnipromenna: " << lokalnipromenna << "\n"; cout << "*uklokalni: " << *uklokalni << "\n"; cout << "*ukhromada: " << *ukhromada << "\n"; delete ukhromada; ukhromada = new int; *ukhromada = 9; cout << "*ukhromada: " << *ukhromada << "\n"; delete ukhromada; char vstup; cin >> vstup; Základy programování v jazyce C++ doprovodný text str. 52/52

Ú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

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

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

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

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

Základy C++ I. Jan Hnilica Počítačové modelování 18 Základy C++ I 1 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í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

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

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

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

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

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

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

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

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

Více

Č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

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

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

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

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

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

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

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

Více

Paměť počítače. alg2 1

Paměť počítače. alg2 1 Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových

Více

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

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

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

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

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

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné

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

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

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

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI EVROPSKÝ SOCIÁLNÍ FOND Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Úvod do PHP PHP Personal Home Page Hypertext Preprocessor jazyk na tvorbu dokumentů přípona: *.php skript je součást HTML stránky!

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

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

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

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

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

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty. Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné

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

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 21. září 2009 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Organizace předmětu Přednášky 1. 5. Základní

Více

Řídicí struktury. alg3 1

Řídicí struktury. alg3 1 Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení

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

Základy algoritmizace

Základy algoritmizace Algoritmus Toto je sice na první pohled pravdivá, ale při bližším prozkoumání nepřesná definice. Například některé matematické postupy by této definici vyhovovaly, ale nejsou algoritmy. Přesné znění definice

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

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

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory Jazyk C Program v jazyku C má následující strukturu: Direktivy procesoru Globální definice (platné a známé v celém programu) Funkce Hlavička funkce Tělo funkce je uzavřeno mezi složené závorky { Lokální

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

Lekce 01 Úvod do algoritmizace

Lekce 01 Úvod do algoritmizace Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů Lekce 01 Úvod do algoritmizace Tento projekt CZ.1.07/1.3.12/04.0006 je spolufinancován Evropským sociálním

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

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

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

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

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

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

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

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

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

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

Více

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

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

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 19. září 2011 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Doporučená literatura web: http://marian.fsik.cvut.cz/zapg

Více

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)

Více

Algoritmizace. 1. Úvod. Algoritmus

Algoritmizace. 1. Úvod. Algoritmus 1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazý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

6 Příkazy řízení toku

6 Příkazy řízení toku 6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní

Více

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek 6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek 1/73 https://en.cppreference.com internetová stránka s referencemi https://gedit.en.softonic.com/download

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

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

Operační systémy. Cvičení 4: Programování v C pod Unixem Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné

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

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

ZÁKLADY PROGRAMOVÁNÍ & ALGORITMIZACE VE VBA

ZÁKLADY PROGRAMOVÁNÍ & ALGORITMIZACE VE VBA ZÁKLADY PROGRAMOVÁNÍ & ALGORITMIZACE VE VBA Anna Mecová, Zuzana Sedlaříková, Barbora Vrbasová, Alexandra Sečányová, Nikol Istenčinová, Dagmar Strouhalová ALGORITMUS Algoritmus je přesný návod či postup,

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

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

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

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

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

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

Princip funkce počítače

Princip funkce počítače Princip funkce počítače Princip funkce počítače prvotní úlohou počítačů bylo zrychlit provádění matematických výpočtů první počítače kopírovaly obvyklý postup manuálního provádění výpočtů pokyny pro zpracování

Více

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5 Obsah Obsah 1 Řídicí struktury 1 2 Podmínka 1 2.1 Podmínka typu case......................... 2 3 Příkaz skoku 3 4 Cykly 4 4.1 Cyklus s podmínkou na začátku................... 4 4.2 Cyklus s podmínkou

Více

Funkce, intuitivní chápání složitosti

Funkce, intuitivní chápání složitosti Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Funkce, intuitivní

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

Stručný návod k programu Octave

Stručný návod k programu Octave Stručný návod k programu Octave Octave je interaktivní program vhodný pro technické výpočty. Je nápadně podobný programu MATLAB, na rozdíl od něho je zcela zadarmo. Jeho domovská vebová stránka je http://www.octave.org/,

Více

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT; Programovací jazyk C(++) static struct vm_area_struct * unmap_fixup(struct mm_struct *mm, struct vm_area_struct *area, unsigned long addr, size_t len, struct vm_area_struct 1. *extra) Základy { struct

Více

Jazyk C# a platforma.net

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

Více

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 1.díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 06 Ver.1.10 J. Zděnek,

Více

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti 3. přednáška nalezení největšího prvku, druhého nejvyššího prvku, algoritmus shozeného praporku. Algoritmizace

Více

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG 2008-9)

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG 2008-9) Programování v C++ Úplnej úvod Co se naučíte? tak samozřejmě C++, s důrazem na: dynamické datové struktury Objektově Orientované Programování STL (standardní knihovna šablon) vytváření vlastních šablon

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

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

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

Inovace bakalářského studijního oboru Aplikovaná chemie http://aplchem.upol.cz

Inovace bakalářského studijního oboru Aplikovaná chemie http://aplchem.upol.cz Inovace bakalářského studijního oboru Aplikovaná chemie http://aplchem.upol.cz CZ.1.07/2.2.00/15.0247 Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. Tvorba

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

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost Programování Algoritmus návod na vykonání činnosti, který nás od (měnitelných) vstupních dat přivede v konečném čase k výsledku přesně definovaná konečná posloupnost činností vedoucích k výsledku (postup,

Více

Profilová část maturitní zkoušky 2017/2018

Profilová část maturitní zkoušky 2017/2018 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2017/2018 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7 Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí

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

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

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

Více

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19 Algoritmy I Cvičení č. 2, 3 1 ALG I, informace Cvičící RNDr. Eliška Ochodková, Ph.D., kancelář EA439 eliska.ochodkova@vsb.cz www.cs.vsb.cz/ochodkova Přednášející doc. Mgr. Jiří Dvorský, Ph.D., kancelář

Více