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

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Kód. Proměnné. #include <iostream> using namespace std; int main(void) { cout << "Hello world!" << endl; cin.get(); return 0; }

Kód. Proměnné. #include <iostream> using namespace std; int main(void) { cout << Hello world! << endl; cin.get(); return 0; } Jazyk C++ Jazyk C++ je nástupcem jazyka C. C++ obsahuje skoro celý jazyk C, ale navíc přidává vysokoúrovňové vlastnosti vyšších jazyků. Z toho plyne, že (skoro) každý platný program v C je také platným

Více

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

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

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

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

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

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

Proměnné a datové typy

Proměnné a datové typy Proměnné a datové typy KAPITOLA 2 V této kapitole: Primitivní datové typy Proměnné Opakování Mezi základní dovednosti každého programátora bezesporu patří dobrá znalost datových typů. Ta vám umožní efektivní

Více

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

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

Více

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

map, multimap - Asociativní pole v C++.

map, multimap - Asociativní pole v C++. map, multimap - Asociativní pole v C++. Jedná se o asociativní pole. V asociativním poli jsou uloženy hodnoty ve tvaru (klíč,hodnota), kde klíč je vlastně "index" prvku. Klíčem může být libovolný objekt,

Více

Datové typy strana 29

Datové typy strana 29 Datové typy strana 29 3. Datové typy Jak již bylo uvedeno, Java je přísně typový jazyk, proto je vždy nutno uvést datový typ datového atributu, formálního parametru metody, návratové hodnoty metody nebo

Více

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

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

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

Více

Výč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

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro: 21.4.2009 Makra - dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h - jak na vlastní makro: #define je_velke(c) ((c) >= 'A' && (c)

Více

Profilová část maturitní zkoušky 2013/2014

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

Více

Seznámení s datovými typy a operátory

Seznámení s datovými typy a operátory Knihovny tříd Javy KAPITOLA 2 Seznámení s datovými typy a operátory Klíčové dovednosti a pojmy Seznámení s primitivními typy jazyka Java. Používání literálů. Inicializace proměnných. Seznámení s pravidly

Více

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve

Více

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje Konstanty I možnosti: přednostně v paměti neexistuje žádný ; o preprocesor (deklarace) #define KONSTANTA 10 o konstantní proměnná (definice) const int KONSTANTA = 10; příklad #include v paměti

Více

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

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

Seminář Java II p.1/43

Seminář Java II p.1/43 Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

MS Excel 2010. Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

MS Excel 2010. Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU MS Excel 2010 Základy maker Operační program Vzdělávání pro konkurenceschopnost Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU Registrační číslo: CZ.1.07/2.2.00/15.0224, Oblast podpory:

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

MQL4 COURSE. By Coders guru www.forex-tsd.com. -4 Operace & Výrazy

MQL4 COURSE. By Coders guru www.forex-tsd.com. -4 Operace & Výrazy MQL4 COURSE By Coders guru www.forex-tsd.com -4 Operace & Výrazy Vítejte ve čtvrté lekci mého kurzu MQL4. Předchozí lekce Datové Typy prezentovaly mnoho nových konceptů ; Doufám, že jste všemu porozuměli,

Více

Iterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0;

Iterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0; Iterátory v C++. Iterátor v C++ je vlastně taková obdoba ukazatelů pro kontejnery. Dříve, než se dostaneme k bližšímu vysvětlení pojmu iterátor, ukážeme si jednoduchý příklad, jak pracovat s obyčejným

Více

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

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace

Více

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

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

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

Více

Sekvenční a podmíněné provádění

Sekvenční a podmíněné provádění Programování v Bourne shellu Sekvenční a podmíněné provádění Sekvenční provádění znamená vykonávání jednoho příkazu za druhým bez ohledu na okolnosti. Pro oddělení příkazů při sekvenčním provádění se používá

Více

Excel tabulkový procesor

Excel tabulkový procesor Pozice aktivní buňky Excel tabulkový procesor Označená aktivní buňka Řádek vzorců zobrazuje úplný a skutečný obsah buňky Typ buňky řetězec, číslo, vzorec, datum Oprava obsahu buňky F2 nebo v řádku vzorců,

Více

Excel tabulkový procesor

Excel tabulkový procesor Pozice aktivní buňky Excel tabulkový procesor Označená aktivní buňka Řádek vzorců zobrazuje úplný a skutečný obsah buňky Typ buňky řetězec, číslo, vzorec, datum Oprava obsahu buňky F2 nebo v řádku vzorců,

Více

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

Více

PHP. nejen pro začátečníky. $c; echo { Martin Pokorný. Vzdìlávání, které baví www.c-media.cz. Nakladatelství a vydavatelství.

PHP. nejen pro začátečníky. $c; echo { Martin Pokorný. Vzdìlávání, které baví www.c-media.cz. Nakladatelství a vydavatelství. }else{ { if($b >$ c){ echo $max=$b; // vypí }else{ echo $max=$c; // vypí?> cas se }e B : se{ echo B ; default: ($b>$c){ echo C ; } $max=$b; }else{ $max=$c; PHP nejen pro začátečníky k;?> $c; echo { Martin

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

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

MQL4 COURSE. By Coders guru www.forex-tsd.com. -5 Smyčky & Rozhodnutí Part 1

MQL4 COURSE. By Coders guru www.forex-tsd.com. -5 Smyčky & Rozhodnutí Part 1 MQL4 COURSE By Coders guru www.forex-tsd.com -5 Smyčky & Rozhodnutí Part 1 Vítejte v páté lekci mého kurzu MQL4. Předchozí lekci si můžete stáhnout z tohoto odkazu: http://forex-tsd.com /attachment.php?attachmentid=399

Více

Program a životní cyklus programu

Program a životní cyklus programu Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy

Více

Architektury počítačů a procesorů

Architektury počítačů a procesorů Kapitola 3 Architektury počítačů a procesorů 3.1 Von Neumannova (a harvardská) architektura Von Neumann 1. počítač se skládá z funkčních jednotek - paměť, řadič, aritmetická jednotka, vstupní a výstupní

Více

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý Autor: Mgr. Dana Kaprálová VZORCE A VÝPOČTY Datum (období) tvorby: září, říjen 2013 Ročník: sedmý Vzdělávací oblast: Informatika a výpočetní technika 1 Anotace: Žáci se seznámí se základní obsluhou tabulkového

Více

Vstupní požadavky, doporučení a metodické pokyny

Vstupní požadavky, doporučení a metodické pokyny Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem

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

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

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií VY_32_INOVACE_33_05 Škola Střední průmyslová škola Zlín Název projektu, reg. č. Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávací oblast Vzdělávání v informačních a komunikačních

Více

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

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

Více

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

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM CÍLE KAPITOLY Využívat pokročilé možnosti formátování, jako je podmíněné formátování, používat vlastní formát čísel a umět pracovat s listy. Používat

Více

Vstup a výstup datové proudy v C

Vstup a výstup datové proudy v C Vstup a výstup datové proudy v C Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 24. října 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Vstup a výstup 24. října 2011 1 / 37 Přehled, rozdělení

Více

Maturitní témata Školní rok: 2015/2016

Maturitní témata Školní rok: 2015/2016 Maturitní témata Školní rok: 2015/2016 Ředitel školy: Předmětová komise: Předseda předmětové komise: Předmět: PhDr. Karel Goš Informatika a výpočetní technika Mgr. Ivan Studnička Informatika a výpočetní

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

Programy na PODMÍNĚNÝ příkaz IF a CASE

Programy na PODMÍNĚNÝ příkaz IF a CASE Vstupy a výstupy budou vždy upraveny tak, aby bylo zřejmé, co zadáváme a co se zobrazuje. Není-li určeno, zadáváme přirozená čísla. Je-li to možné, používej generátor náhodných čísel vysvětli, co a jak

Více

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39 Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy

Více

4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady Základy programování (IZAPR, IZKPR) Přednáška 5 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky Příkazy cyklu -

Více

PHP tutoriál (základy PHP snadno a rychle)

PHP tutoriál (základy PHP snadno a rychle) PHP tutoriál (základy PHP snadno a rychle) Druhá, vylepšená offline verze. Připravil Štěpán Mátl, http://khamos.wz.cz Chceš se naučit základy PHP? V tom případě si prostuduj tento rychlý průvodce. Nejdříve

Více

Programování v jazyku LOGO - úvod

Programování v jazyku LOGO - úvod Programování v jazyku LOGO - úvod Programovací jazyk LOGO je určen pro výuku algoritmizace především pro děti školou povinné. Programovací jazyk pracuje v grafickém prostředí, přičemž jednou z jeho podstatných

Více

Vývojové diagramy 1/7

Vývojové diagramy 1/7 Vývojové diagramy 1/7 2 Vývojové diagramy Vývojový diagram je symbolický algoritmický jazyk, který se používá pro názorné zobrazení algoritmu zpracování informací a případnou stručnou publikaci programů.

Více

ŠVP Gymnázium Ostrava-Zábřeh. 4.8.16. Úvod do programování

ŠVP Gymnázium Ostrava-Zábřeh. 4.8.16. Úvod do programování 4.8.16. Úvod do programování Vyučovací předmět Úvod do programování je na naší škole nabízen v rámci volitelných předmětů v sextě, septimě nebo v oktávě jako jednoletý dvouhodinový kurz. V případě hlubšího

Více

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru Čtení dat ze souboru FILE *f = NULL; char str[10] = ""; float a = 0.0, b = 0.0; Soubor otevíráme v režimu pro čtení "r" f = fopen("/home/martinp/testdata/test1.txt",

Více

2 Strukturované datové typy 2 2.1 Pole... 2 2.2 Záznam... 3 2.3 Množina... 4

2 Strukturované datové typy 2 2.1 Pole... 2 2.2 Záznam... 3 2.3 Množina... 4 Obsah Obsah 1 Jednoduché datové typy 1 2 Strukturované datové typy 2 2.1 Pole.................................. 2 2.2 Záznam................................ 3 2.3 Množina................................

Více

17. Projekt Trojúhelníky

17. Projekt Trojúhelníky Projekt Trojúhelníky strana 165 17. Projekt Trojúhelníky 17.1. Základní popis, zadání úkolu Pracujeme na projektu Trojúhelníky, který je ke stažení na java.vse.cz. Aplikace je napsána s textovým uživatelským

Více

Standardní vstup a výstup

Standardní vstup a výstup Standardní vstup a výstup Trochu teorie S pojmy standardní vstup/výstup (I/O, input/output) jste se již pravděpodobně setkali, pokud ale ne, zde je krátké vysvětlení. Standardní vstup a výstup jsou vlastně

Více

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi.

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi. Databáze Základní pojmy Pojem databáze označuje obecně souhrn informací, údajů, dat o nějakých objektech. Úkolem databáze je hlídat dodržení všech omezení a dále poskytovat data při operacích. Objekty

Více

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

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

Více

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Programování v jazyce C Tématický blok č. 2: Proměnná, výraz, příkaz, podmínka, cyklus Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 Proměnné 1.1 Deklarace a inicializace proměnných

Více

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

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

Více

Čísla a číselné soustavy.

Čísla a číselné soustavy. Čísla a číselné soustavy. Polyadické soustavy. Převody mezi soustavami. Reprezentace čísel. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK.

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

Stěžejní funkce MS Excel 2007/2010, jejich ovládání a možnosti využití

Stěžejní funkce MS Excel 2007/2010, jejich ovládání a možnosti využití Stěžejní funkce MS Excel 2007/2010, jejich ovládání a možnosti využití Proč Excel? Práce s Excelem obnáší množství operací s tabulkami a jejich obsahem. Jejich jednotlivé buňky jsou uspořádány do sloupců

Více

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury 1 / 34 Obsah přednášky Základní řídící struktury posloupnost příkazů podmínka cyklus s podmínkou na začátku cyklus s podmínkou na konci cyklus s pevným počtem opakování Jednoduchá

Více

PHP. 1. Úvod do PHP. 2. Základy PHP

PHP. 1. Úvod do PHP. 2. Základy PHP PHP 1. Úvod do PHP Tato přednáška obsahuje úvod do skritpového jazyka PHP. Ten je podobný ostatním jazykům vyšší úrovně, jako je například jazyk C, Pascal, Fortran nebo Java, takže programátoři se zkušeností

Více

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Využití OOP v praxi -- Knihovna PHP -- Interval.cz Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování

Více

DATABÁZE A SYSTÉMY PRO UCHOVÁNÍ DAT 61 DATABÁZE - ACCESS. (příprava k vykonání testu ECDL Modul 5 Databáze a systémy pro zpracování dat)

DATABÁZE A SYSTÉMY PRO UCHOVÁNÍ DAT 61 DATABÁZE - ACCESS. (příprava k vykonání testu ECDL Modul 5 Databáze a systémy pro zpracování dat) DATABÁZE A SYSTÉMY PRO UCHOVÁNÍ DAT 61 DATABÁZE - ACCESS (příprava k vykonání testu ECDL Modul 5 Databáze a systémy pro zpracování dat) DATABÁZE A SYSTÉMY PRO UCHOVÁNÍ DAT 62 Databáze a systémy pro uchování

Více

Základní orientace v MS Excel

Základní orientace v MS Excel Základní orientace v MS Excel Umíte-li ovládat textový editor MS Word, nebude Vám činit žádné potíže ovládání programu MS Excel. Panel nabídek, panel nástrojů, posuvníky, to všechno již znáte. Jen pracovní

Více

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování Vzdělávací oblast Informatika a informační a komunikační technologie pro vzdělávací obor Programování

Více

CZ.1.07/1.5.00/34.0632

CZ.1.07/1.5.00/34.0632 Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Inovace a zkvalitnění výuky prostřednictvím ICT Název: Téma: Autor: Číslo: Anotace: Excel Formát buňky Ing. Silvana Žárská

Více

RELAČNÍ DATABÁZE ACCESS

RELAČNÍ DATABÁZE ACCESS RELAČNÍ DATABÁZE ACCESS 1. Úvod... 2 2. Základní pojmy... 3 3. Vytvoření databáze... 5 4. Základní objekty databáze... 6 5. Návrhové zobrazení tabulky... 7 6. Vytváření tabulek... 7 6.1. Vytvoření tabulky

Více

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus Pracovní listy - programování (algoritmy v jazyce Visual Basic) Předmět: Seminář z informatiky a výpočetní techniky Třída: 3. a 4. ročník vyššího stupně gymnázia Algoritmus Zadání v jazyce českém: 1. Je

Více

Výpisy Výsledek zpracování

Výpisy Výsledek zpracování Výpisy Výsledek zpracování Tlačítka (formát(rrrrmm)) a pro zadaný stát. Zobrazí výsledky měsíčního zpracování zadaného období Vytiskne výsledky. Prodejci - provize Třídění se provádí klepnutím na záhlaví

Více

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě PHP PHP původně znamenalo Personal Home Page a vzniklo v roce 1996, od té doby prošlo velkými změnami a nyní tato zkratka znamená Hypertext Preprocessor. PHP je skriptovací programovací jazyk, určený především

Více

2 Ukládání dat do paměti počítače

2 Ukládání dat do paměti počítače Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK Registrační číslo: CZ..7/../8.8 Cíl Studenti budou umět zapisovat čísla ve dvojkové, osmičkové, desítkové a v šestnáctkové soustavě

Více

BI-JPO (Jednotky počítače) Cvičení

BI-JPO (Jednotky počítače) Cvičení BI-JPO (Jednotky počítače) Cvičení Ing. Pavel Kubalík, Ph.D., 2010 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Evropský sociální fond Praha & EU: Investujeme

Více

2. popis prostředí, nastavení pracovní plochy

2. popis prostředí, nastavení pracovní plochy (c) mise 2013 1 2 1. úvod Tabulkový procesor program pro organizaci a správu dat pomocí tabulek určen pro zpracování dat převážně číselného charakteru Využití tabulkových procesorů přehledná prezentace

Více

Úvod do programování. Lekce 5

Úvod do programování. Lekce 5 I N V E S T I C E D O R O Z V O J E V Z D Ě L Á V Á N Í Inovace a zvýšení atraktivity studia optiky reg. č.: CZ.1.07/2.2.00/07.0289 Úvod do programování Lekce 5 Tento projekt je spolufinancován Evropským

Více

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <->

Znaky. IAJCE Přednáška č. 10. každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak <-> Znaky každému znaku je nutné přiřadit nějaké číslo (nezáporné přímé mapování znak číslo) kódování jiný příklad kódování existuje mnoho kódů pojmy: morseova abeceda problémy o znaková sada které znaky

Více

DATABÁZE MS ACCESS 2010

DATABÁZE MS ACCESS 2010 DATABÁZE MS ACCESS 2010 KAPITOLA 5 PRAKTICKÁ ČÁST TABULKY POPIS PROSTŘEDÍ Spuštění MS Access nadefinovat název databáze a cestu k uložení databáze POPIS PROSTŘEDÍ Nahoře záložky: Soubor (k uložení souboru,

Více

MQL4 COURSE. V tomto dodatku je obsažen popis 25 obchodních funkcí jazyka MQL4. Rozhodl jsem se napsat

MQL4 COURSE. V tomto dodatku je obsažen popis 25 obchodních funkcí jazyka MQL4. Rozhodl jsem se napsat MQL4 COURSE By Coders guru www.forex-tsd.com (Appendix 2) Trading Functions -------------------- V tomto dodatku je obsažen popis 25 obchodních funkcí jazyka MQL4. Rozhodl jsem se napsat tento dodatek

Více

1. Téma 03 - Rozhodování

1. Téma 03 - Rozhodování 1. Téma 03 - Rozhodování Cíl látky Seznámit se a prakticky si vyzkoušet zápis rozhodování v jazyce Java 1.1. Úvod Jednou z nejčastěji používanou konstrukcí při programování je rozhodování. Právě této problematice

Více

Datové typy a struktury

Datové typy a struktury atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro

Více

CODEWEEK 2014 Rozvoj algoritmického myšlení nejen pomocí programu MS Excel. Michaela Ševečková

CODEWEEK 2014 Rozvoj algoritmického myšlení nejen pomocí programu MS Excel. Michaela Ševečková CODEWEEK 2014 Rozvoj algoritmického myšlení nejen pomocí programu MS Excel Michaela Ševečková Rozvoj technického myšlení nejmenších dětí práce s předměty charakteristika, diferenciace (hledání rozdílů),

Více

ZŠ ÚnO, Bratří Čapků 1332

ZŠ ÚnO, Bratří Čapků 1332 Úvodní obrazovka Menu (vlevo nahoře) Návrat na hlavní stránku Obsah Výsledky Poznámky Záložky edunet Konec Matematika 1 (pro 12-16 let) LangMaster Obsah (střední část) výběr tématu - dvojklikem v seznamu

Více

Základní datové struktury

Základní datové struktury Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013

Více

Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/02.0030. MS Excel

Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/02.0030. MS Excel Masarykovo gymnázium Příbor, příspěvková organizace Jičínská 528, Příbor Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/02.0030 MS Excel Metodický materiál pro základní

Více

Středisko MLM Znovu. Uživatelská příručka

Středisko MLM Znovu. Uživatelská příručka Středisko MLM Znovu Uživatelská příručka Znovu s.r.o. 2008 1 Vstup do programu Ke vstupu do programu Středisko je třeba zadat uživatelské jméno a heslo. Před zobrazením pracovní plochy programu se mohou

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

Jak do počítače. aneb. Co je vlastně uvnitř

Jak do počítače. aneb. Co je vlastně uvnitř Jak do počítače aneb Co je vlastně uvnitř Po odkrytí svrchních desek uvidíme... Von Neumannovo schéma Řadič ALU Vstupně/výstupní zař. Operační paměť Počítač je zařízení, které vstupní údaje transformuje

Více

Programování II. Mgr. Monika Pinkasová. Zlepšování podmínek pro využívání ICT ve výuce a rozvoj výuky angličtiny na SPŠei Ostrava

Programování II. Mgr. Monika Pinkasová. Zlepšování podmínek pro využívání ICT ve výuce a rozvoj výuky angličtiny na SPŠei Ostrava Programování II. Mgr. Monika Pinkasová Zlepšování podmínek pro využívání ICT ve výuce a rozvoj výuky angličtiny na SPŠei Ostrava č. projektu CZ.1.07/1.1.07/03.0089 Ostrava 2011 Obor: Informační technologie

Více

46 Objekty a atributy

46 Objekty a atributy 46 Objekty a atributy Modul Objekty a atributy je určen pro pokročilé uživatele zodpovědné za mapování přístupnosti architektonických bariér. Modul umožňuje stanovit jaké objekty budou mapovány, jaké skutečnosti

Více