Programování C++ Lukáš Tomášek. verze

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Programování C++ Lukáš Tomášek. lukast@centrum.cz. verze 1.2 01.03.2013"

Transkript

1 Programování C++ Lukáš Tomášek verze

2 Obsah: 1. Úvod, historie C a C Základy C Struktura programu Proměnné a základní datové typy Pole Sekvence znaků Textové řetězce typu string Struktury Operátory Řídící struktury Podmínky (if-else, switch) Cykly (while, do-while, for) Práce s ukazateli (pointery), dynamické přidělování paměti Funkce a procedury Práce se soubory čtení, zápis Objektově orientované programování - třídy Použitá literatura, odkazy

3 1. Úvod, historie C a C++ Programovací jazyky se vyvíjely spolu s vývojem počítačů. V první generaci jazyků programátor pracoval výhradně se strojovým kódem počítačů. Dále vedl vývoj přes jazyky symbolických adres (assemblery) přesně kopírující instrukční soubory procesorů k vyšším jazyky, které jsou tvořeny sadou příkazů (C, C++, Pascal, Java) C Programovací jazyk C byl navržen Dennisem Ritchiem začátkem 70. let při vývoji operačního systému Unix. Jedná se o strukturovaný jazyk, který se velmi často používá při návrhu operačních systémů a aplikací, je populární i na akademické půdě C++ Když vzrostla obliba objektově-orientovaného programování (OOP), byla definice "céčka" rozšířena Bjarne Stroustrupem. C++, jak se rozšířená definice jazyka C nazývá, je pravděpodobně nejpoužívanější programovací jazyk pro tvorbu rozsáhlých programů C# Anders Hejlsberg, Microsoft, základní jazyk architektury.net. 3

4 2. Základy C Struktura programu První ukázkový program Hello World, který vypisuje na obrazovku zprávu Hello World! V bílém poli je zdrojový kód programu a v šedém pak jeho výpis na obrazovku, když program zkompilujeme a spustíme: // Program vypisující Hello World na obrazovku (komentář na jeden řádek) /* Program vypisující Hello World na obrazovku (komentář na více řádků) */ #include <iostream> // vkládá knihovnu, kde je definována funkce cout using namespace std; // standardní jmenný prostor int main() { cout << "Hello World!" << endl; // vypíše na obrazovku Hello World! return 0; Hello World! Probereme si postupně předchozí kód řádek po řádku: // Program vypisující Hello World na obrazovku (komentář na jeden řádek) /* Program vypisující Hello World na obrazovku (komentář na více řádků) */ Toto jsou komentáře (jednořádkový začínající // a víceřádkový začínající /* a končící */ ). Komentáře jsou oblast kódu, která není překládána a nemá tedy vliv na chování programu. Jsou to textové poznámky, které programátoři do kódu vkládají, aby s jejich pomocí podrobněji objasnili jeho funkčnost. #include <iostream> Řádky začínající # jsou příkazy (direktivy) pro preprocesor. Direktiva #include vkládá tzv. hlavičkové soubory použité při překladu programu. Hlavičkové soubory obsahují funkce a konstanty, které můžeme v kódu dále použít. Konkrétně #include <iostream> vkládá soubor iostream ze standardní knihovny, jež definuje funkce související se standardním vstupem a výstupem. 4

5 using namespace std; Tento příkaz určuje takzvaný jmenný prostor, v němž jsou deklarovány všechny elementy standardní C++ knihovny. V tomto případě se jedná o jmenný prostor standardní knihovny (std::). int main() Tento řádek určuje začátek definice hlavní funkce main(). Funkce je skupina více souvisejících příkazů, které slouží v provedení nějakého úkolu. Každá funkce má jméno, kterým se volá, v tomto případě se volá funkce main. Kulaté závorky za názvem funkce () mohou obsahovat vstupní parametry dané funkce. Všechny příkazy určité funkce jsou uvedené v takzvaném těle funkce, které začíná levou závorkou { a končí pravou závorkou. Každý příkaz končí středníkem, příkazy se provádí popořadě odshora dolů. Programy mívají funkcí víc, ale každý program v C++ má právě jednu hlavní funkci main, která je vstupním bodem daného programu. cout << "Hello, world!" << endl; Zde cout je výstupní datový proud na standardní výstupní zařízení, nejčastěji na obrazovku. Operátor << určuje směr přesměrování toku dat za své pravé strany, endl ukončuje řádek. V tomto případě se tedy přesměruje textový řetězec "Hello World!" na obrazovku a kurzor se přesune na nový řádek. return 0; Tento příkaz způsobí ukončení hlavní funkce main. Příkaz return může být následován návratovou hodnotou (v našem případě 0, což u většiny programů znamená, že skončil bez chyby) Proměnné a základní datové typy K uložení určitých dat definujeme tzv. proměnou, což je část paměti počítače určená k uložení hodnoty určitého typu. Každá proměnná je definována unikátním jménem, neboli identifikátorem, které ji odlišuje od ostatních proměnných v programu. Identifikátory Platný identifikátor (název proměnné) je posloupnost jednoho či více písmen, číslic a podtržítek (_). Nesmí obsahovat jiné znaky jako mezery, vykřičníky, tečky atp. a dále standardní rezervovaná slova v C++. Pozor: Jazyk C++ rozlišuje velká a malá písmena, to znamená, že identifikátor napsaný velkými písmeny není totožný se stejným názvem napsaný malými písmeny!! Tedy např. proměnná cislo není totožná s proměnnou Cislo, CISLO, CiSlo (všechny uvedené identifikátory jsou rozdílné). 5

6 Základní datové typy Při programování ukládáme proměnné do paměti počítače, tudíž počítač musí vědět, jaký typ dat do určité proměnné chceme ukládat. Neboť třeba jednouché písmeno zabere méně paměti než velké číslo a navíc každý datový typ je jinak interpretován (např. číslo jinak než text). Paměť v počítači je organizována v tzv. bytech (bajtech), což je nejmenší část paměti, se kterou může C++ pracovat. Byte zkratka B, sestávající z 8 bitů, obsahuje relativně malý objem dat: jeden textový znak nebo celé kladné číslo v rozsahu 0 a 255. Kromě toho tedy počítač manipuluje s více komplexními datovými typy jako se seskupeními několika bytů, např. velká celá čísla nebo reálná čísla s desetinnou čárkou. Zde je výčet základních datových typů v C++ spolu s rozsahem hodnot, kterých mohou nabývat: Název datového typu Popis Velikost* Rozsah* # char znak nebo malé celé číslo 1 B signed: -128 až 127 unsigned: 0 až 255 short int krátké celé číslo signed: až B (short) short integer unsigned: 0 až signed: až int celé číslo integer 4 B unsigned: 0 až long int (long) dlouhé celé číslo - long integer 4 B. signed: až unsigned: 0 až bool logická hodnota Boolean. true, false (pravda, 1 B true, false nepravda) float desetinné číslo s pohyblivou čárkou - Floating point 4 B +/- 3.4e +/- 38 (~7 číslic) double desetinné číslo s pohyblivou čárkou se zvýšenou přesností - Double precision floating 8B +/- 1.7e +/- 308 (~15 číslic) point long double Long double precision floating point 8B +/- 1.7e +/- 308 (~15 číslic) wchar_t rozšířený znak - Wide charakter 2 nebo 4 B 1 rozšířený znak * Hodnoty velikostí a rozsahy záleží na typu systému, na kterém je program kompilován. V tabulce jsou uvedeny typické hodnoty pro většinu 32 bitových systémů. # signed číslo se znaménkem (kladné i záporné hodnoty), unsigned bez znaménka (pouze kladné hodnoty) 6

7 Deklarace proměnných Deklarace proměnné, syntaxe: datový_typ identifikátor_proměnné; Příklad: int a; float moje_cislo; Jakmile je proměnná deklarována, může být použita ve svém rozsahu platnosti v programu. Více proměnných stejného typu může být deklarováno najednou, když oddělíte jejich identifikátory čárkou, např.: int a, b, c; je totéž jako: int a; int b; int c; Celočíselné datové typy char, short, long a int mohou být buď signed (pozitivní i negativní hodnoty) nebo unsigned (pouze pozitivní hodnoty a nula). Pokud není uveden typ či znamékový rozsah, defaultní hodnota je int a signed, tj. unsigned short int pocet; signed int zisk; signed int rozdil; int rozdil; // totéž jako signed int rozdil unsigned int zisk; unsigned zisk; // totéž jako unsigned int zisk Příklad na deklarace a použití proměnných: // Příklad - Deklarace a použití proměnných #include <iostream> 7

8 using namespace std; int main () { // deklarace proměnných: int a, b; int vysledek; // přířazení a výpočet hodnot: a = 3; b = 5; a = a + 2; vysledek = (a b)*2; // vypsání vysledku: cout << "Vysledek = " << vysledek; // konec programu: return 0; Vysledek = 6 Rozsah platnosti proměnných Všechny proměnné musí být deklarovány před tím, než jsou v programu použity. Proměnná může mít buď globální, nebo lokální rozsah platnosti uvnitř programu. Globální proměnná je deklarována v hlavním těle zdrojového kódu mimo všechny funkce, zatímco lokální proměnná je deklarována uvnitř těla funkce nebo bloku. // Příklad - Globální a lokální proměnné #include <iostream> using namespace std; // deklarace globálních proměnných int x, y; int main () { // deklarace lokálních proměnných: int rozdil; x = 2; y = 5; rozdil = x - y; cout << "Rozdil =" << vysledek; Rozsah platnosti lokálních proměnných Rozsah platnosti globálních proměnných return 0; Rozdil = -3 8

9 Na globální proměnné se můžeme odkazovat kdekoli v kódu za jejich deklarací, dokonce i uvnitř funkcí. Rozsah platnosti lokálních proměnných je limitován na blok uzavřený v závorkách {, kde jsou deklarovány. Pokud jsou tedy deklarovány například uvnitř nějaké funkce, jsou přístupné pouze uvnitř této funkce a ne mimo ni. Inicializace proměnných Když deklarujeme proměnnou jako v předchozích příkladech, její hodnota není definována. Pokud chcete definovat počáteční hodnotu nějaké proměnné už v momentu její deklarace, je možno použít inicializaci proměnné už při deklaraci. V C++ je to možné udělat dvěma způsoby: postaru jako v C: Například: nově v C++: Například: typ identifikátor = počáteční_hodnota; int a=0; typ identifikátor(počáteční_hodnota); int a(0); Oba způsoby jsou v C++ ekvivalentní. // Příklad - Inicializace proměnných #include <iostream> using namespace std; int main () { int a=3; // počáteční hodnota = 3 int b(4); // počáteční hodnota = 4 int vysledek; // počáteční hodnota není determinována a = a + 3; vysledek = a - b; cout << "Vysledek = " << vysledek; return 0; Vysledek = 2 9

10 Konstanty Konstanty jsou výrazy s konstantní hodnotou. Jejich hodnotu nelze měnit. Musíme ji tedy přiřadit do proměnných již při inicializaci pomocí operátoru přiřazení: const int a = 5; Celá čísla // integer // decimálně 014 // oktalově, začíná 0 0xc // hexadecimálně, začíná 0x 13 // int 13u // unsigned int 13l // long 13ul // unsigned long Desetinná čísla 5.26 // 5.26 standardně typ double 4.12e15 // 4.12 x 10^ e-7 // 2.16 x 10^-7 // Standardní typ pro desetinná čísla je typ double, jinak: 8.123L // long double 2.64e9f // float Znaky a znakové řetězce Znak: 'a' Znakový řetězec: "Hello World" Formátovací znaky: '\n' nový řádek (Line Feed) '\r' na začátek řádku (Carriage Return) '\t' tabulator '\b' backspace '\a' pípnutí '\'' jednoduché úvozovky (') '\"' dvojité úvozovky (") '\?' otazník (?) '\\' zpětné lomítko (\) '\x40' jakýkoli znak pomocí ASCII hodnoty, (v tomto případě 0x40, tj. 60, což 10

11 Příklad: cout<<"prvni radek\ndruhy radek\n"; totéž jako: cout<<"prvni radek"<<endl<<"druhy radek"<<endl; Boolean Jsou pouze dvě hodnoty typu Bool: true (pravda) a false (nepravda). bool pravda=true; bool nepravda=false; Definované konstanty (#define) Můžete definovat vlastní konstanty pro preprocesor pomocí direktivy #define identifikátor hodnota Pozor - nejde o C++ příkaz, ale pouze direktivu pro preprocesor, proto nekončí středníkem (;)! Příklad užití: // Příklad na definované konstanty: výpočet obvodu kruhu #include <iostream> using namespace std; #define PI #define NOVY_RADEK '\n' int main () { double polomer=2.5; // poloměr double obvod; obvod = 2 * PI * polomer; cout << "Obvod kruhu o polomeru "<<polomer<<" je: "<< obvod << NOVY_RADEK; return 0; Obvod kruhu o polomeru 2.5 je:

12 Deklarované konstanty (const) Pomocí předpony const je možno deklarovat v paměti konstanty podobným způsobem jako proměnné: const typ identifikátor=hodnota; const typ identifikátor(hodnota); const double pi=3.1416; // pí const bool pravda=true; const bool nepravda=false; Tyto konstanty se používají podobně jako proměnné, ale jejich hodnota nemůže být po jejich definici změněna (proto také musí být vložena už při definici) Pole Pole je posloupnost prvků stejného typu umístěných souvisle v paměti. Jednotlivé prvky pole mohou být individuálně přístupné pomocí indexu uvedeného v hranatých závorkách za unikátním identifikátorem. Typická deklarace pro pole v C++ je: datový_typ název [počet_prvků]; kde počet prvků, které pole obsahuje, musí být konstantní hodnota, protože pole jsou nedynamický datový typ, jehož velikost musí být určena před spuštěním programu. Pokud je třeba vytvořit proměnnou délku pole, je třeba použít dynamicky alokovanou paměť, viz dále. int pole [5]; int pole [5] = {16, 2, 77, 40, 12071; // inicializace pole int pole [] = {16, 2, 77, 40, 12071; for(int i=0; i<10; i++){ pole[i]=i; for(int i=0; i<10; i++){ cout<<pole[i]<<, ; 12

13 2.4. Sekvence znaků Standardní knihovna C++ implementuje třídu string, která nabízí užitečné funkce s řetězci znaků (viz další kapitola). Nicméně protože jde o sekvenci znaků, můžeme je reprezentovat také jako pole elementů typu char. Např.: char slovo[20]; je pole, které do nějž můžeme uložit až dvacet znaků. Pokud bude sekvence znaků kratší než délka pole, k ukončení znakového řetězce je použit speciání znak null charakter ('\0'). Příklad identické inicializace: char myword[] = { 'H', 'e', 'l', 'l', 'o', '\0' ; char myword [] = "Hello"; Příklad: #include <iostream> using namespace std; int main () { char otazka[] = "Prosim, napiste sve jmeno: "; char pozdrav[] = "Dobry den, "; char vasejmeno[80]; cout << otazka; cin >> vasejmeno; cout << pozdrav << vasejmeno << "!"; return 0; Prosim, napiste sve jmeno: Lukas Dobry den, Lukas! Převod mezi poli typu char a řetězci typu string: string mujstring; char mujtext[]="nejaky text"; mujstring = mujtext; 13

14 2.5. Textové řetězce typu string Proměnným, do nichž se ukládají textové hodnoty delší než jeden znak, se říká textové řetězce. Standardní knihovna C++ poskytuje podporu pro práci s textovými řetězci v knihovně string. // Příklad na string #include <iostream> #include <string> using namespace std; int main () { string retezec = "Pocatecni hodnota stringu."; // totéž jako string retezec("počáteční hodnota stringu.") cout << retezec << endl; retezec = "Dalsi hodnota stringu."; cout << retezec << endl; return 0; 2.6. Struktury #include <iostream> #include <string> using namespace std; #define POCET_LIDI 2 struct TClovek{ string jmeno; string prijmeni; int roknarozeni; ; //Alternativni definice typu struct typedef struct{ string jmeno; string prijmeni; int roknarozeni; TClovek2; int main(){ TClovek clovek[pocet_lidi]; TClovek2 *uk_clovek=new TClovek2; 14

15 clovek[0].jmeno="pavel"; clovek[0].prijmeni="novak"; clovek[0].roknarozeni=1988; clovek[1].jmeno="marcela"; clovek[1].prijmeni="leva"; clovek[1].roknarozeni=1956; for(int i=0; i<pocet_lidi; i++) cout<<clovek[i].jmeno<<" "<<clovek[i].prijmeni<<" "<<clovek[i].roknarozeni<<endl; uk_clovek->jmeno="josef"; // totez jako (*uk_clovek).jmeno="josef"; uk_clovek->prijmeni="rambousek"; uk_clovek->roknarozeni=1901; cout<<uk_clovek->jmeno<<" "<<uk_clovek->prijmeni<<" "<<uk_clovek->roknarozeni<<endl; delete uk_clovek; return 0; Pavel Novak 1988 Marcela Leva 1956 Josef Rambousek Operátory Přiřazení (=) Operátor přiřazení přiřazuje hodnotu nějaké proměnné, např. int a, b; a = 5; // přiřazení hodnoty 5 do proměnné a b = a; // přiřazení hodnoty proměnné a do proměnné b Aritmetické operátory ( +, -, *, /, % ) + Součet - Rozdíl * Násobení / Dělení % modulo (zbytek po dělení) Příklad na celočíselné dělení: int deleni = 17 / 3; // deleni=3, neboť 17=3*5+2 15

16 int zbytek = 17 % 3; // zbytek=2, neboť 17=3*5+2 Sloučené přiřazení (+=, -=, *=, /=, %=, >>=, <<=, &=,^=, =) Zkrácený ekvivalentní zápis hodnota += prirustek; hodnota = hodnota + prirustek; a += 5; //ekvivalentní s: a = a + 5; a /= b; //ekvivalentní s: a = a / b; a podobně pro ostatní operátory. Inkrement a dekrement (++, --) Zkrácený zápis pro přičítání (inkrement) a odčítání (dekrement) jedničky v nějaké proměnné, tj. +=1 a -=1, např.: a++; // totéž jako a+=1; a tedy i jako a=a+1; b--; // totéž jako b-=1; a tedy i jako b=b-1; Pozor existují dvě varianty (++b) a (b++), obě zvýší hodnotu b o 1, ale pokud jsou tyto výrazy použity při přiřazení, tak první varianta (++b) nejdřív inkrementuje a pak přiřadí hodnotu, druhá varianta (b++) nejdřív přiřadí hodnotu, pak inkrementuje, tj.: a=2; b=++a; // a je 3, a je 3 a=2; b=a++; // a je 3, b je 2!! Relační operátory ( ==,!=, >, <, >=, <= ) Jejich výsledkem je logická pravda (true) nebo nepravda (false) == Rovná se!= Nerovná se > Větší než < Menší než >= Větší nebo rovno než <= Menší nebo rovno než Příklady: (2 == 2) // true (4 > 5) // false (5!= 3) // true (1 >= 1) // true 16

17 (1 < 1) // false a=1; b=2; (a > 3 ) // false (a < b) // true Pozor na častou a chybnou záměnu = a ==!! Logické operátory (!, &&, ) Operator! je logická negace, tj.!true // je false!false // je true!(2==2) //je false Operátor logického součin (AND) && a b a && b true true true true false false false true false false false false Operátor logického součtu (OR) a b a b true true true true false true false true true false false false Příklad: ((3 == 2) && (3 > 1)) // je false (false && true) ((3 == 2) (3 > 1)) // je true (false true) Bitové operátory ( &,, ^, ~, <<, >> ) Umožňují manipulovat s binárními hodnotami přímo na úrovni jednotlivých bitů. Operátor Zkratka Popis & AND bitový součin AND OR bitový součet OR ^ XOR bitový exkluzivní OR (nonekvivalence) ~ NOT bitová negace (doplněk) << SHL posun vlevo >> SHR posun vpravo 17

18 Operátor explicitního přetypování Před identifikátorem proměnné, jejíž hodnotu ve výrazu chceme přetypovat, použijeme v kulatých závorkách nový typ: (nový_typ) proměnná int i; double d = 2.689; i = (int) d; // je 2, nebo totéž: i = int (d) pozor na přetečení rozsahu!! d = d/i; // i=5; d = i/2; // pozor je 2!!! d= (double) i/2; // 2.5 sizeof() Tento unární operátor přijímá pouze jeden parametr, kterým může být typ nebo identifikátor proměnné, a vrací velikost v bytech, jež proměnná či typ zabírá v paměti. int i, velikost; int velikost = sizeof (i); // jsou 4 (byty) cout << velikost<<endl; velikost = sizeof (int); // 4 (byty) velikost = sizeof(char); // 1 (byte) Pozor - hodnota, kterou vrací sizeof je konstanta, která je vyhodnocena ještě před během programu! Priorita operátorů Při psaní složitých výrazů s více operandy si musíme dát pozor na pořadí jejich vyhodnocování podle priority jednotlivých operátorů: x = * 4; // je 14 y = (2 + 3) * 4; // je 20 Pokud je třeba, nebo je výraz příliš nepřehledný, je vždy lepší použít k jasnému určení pořadí vyhodnocení kulaté závorky. 18

19 Úroveň Pořadí Operátor Popis priority vyhodnocení 1 max. :: scope zleva 2 () []. -> dynamic_cast static_cast reinterpret_cast const_cast typeid ~! sizeof new delete * & + - postfix unary (prefix) indirection, reference (pointers) unary sign operator zleva zprava 4 (type) type casting zprava 5 * ->* pointer-to-member zleva 6 * / % multiplicative zleva additive zleva 8 << >> shift zleva 9 < > <= >= relational zleva 10 ==!= equality zleva 11 & bitwise AND zleva 13 bitwise OR 12 ^ bitwise XOR zleva zleva 14 && logical AND 15 logical OR zleva zleva 16?: conditional zprava 17 = *= /= %= += -= >>= <<= &= assignment ^= = zprava 18 min., comma zleva 19

20 3. Řídící struktury 3.1. Podmínky (if-else, switch) Komplexní program obvykle není jen jednoduchá lineární sekvence příkazů, ale je třeba na základě nějakých vstupních parametrů opakovat, či vykonávat různé části kódu. Pro tyto případy poskytuje C++ různé řídící struktury. Podmínka: if else if (podmínka) { příkazy... else if (podmínka) { příkazy... else { příkazy... if (i==1) cout << "jedna" << endl; else if (i==2) cout << "dve" << endl; else cout << "jine nez 1 nebo 2" << endl; if (1<2) cout << "tato podminka je splnena" << endl; if (1>2) cout << "tato podminka neni splnena" << endl; Větvení (switch) int i=1; switch (i) { case 0: cout << "nula"; break; case 1: cout << "jedna"; break; case 2: cout << "dve"; break; default: cout<< "jine nez 0,1,2"; Jedna 20

21 3.2. Cykly (while, do-while, for) Cyklus while while ( podmínka ) { příkazy... int i=0; while(i<10) { cout<<i<<" "; i++; Cyklus do-while do { příkazy... while ( podmínka ); int i=0; do { cout<<i<<" "; i++; while(i<10);

22 Cyklus for for(deklarace počítací proměnné ; podmínka ; počítání ) { příkazy for(int i=0; i<10; i++) { cout<<i<<" "; Příkaz break int i=0; while(1) { cout<<i<<" "; if(i==9) break; // vyskoceni z cyklu i++; Příkaz continue for(int i=0; i<10; i++) { if(i==5) continue; // navrat na zacatek cyklu cout<<i<<" ";

23 4. Práce s ukazateli (pointery), dynamické přidělování paměti Ukazatel (pointer) Ukazatel je proměnná, která ukazuje na jinou proměnnou nebo konstantu. Jeho hodnotou je adresa obsahu této proměnné v paměti. Operator reference (&) Používá se na nastavení ukazatele na adresu proměnné adresu proměnné vrátí adresovací operátor (reference) &. Operátor dereference (*) Operátor dereference * použitý před proměnnou typu ukazatel slouží k dereferencování ukazatelů. Jeho hodnotou je hodnota, na kterou ukazatel ukazuje. Dynamické přidělování a uvolnění paměti operátor new a delete Dynamické přidělování paměti za běhu programu se provádí pomocí operátoru new. Když už paměť není potřeba, je nutné ji uvolnit pomocí operátoru delete. Např. int *uk_int= new int; //dynamické vytvoření proměnné typu int delete uk_int; // uvolnění proměnné z paměti, když už není potřeba Pole: int *uk_pole[100]=new int[100]; //dynamické vytvoření pole o 100 prvcích typu int delete [] uk_pole; // uvolnění pole z paměti, když už není potřeba int cislo=5; // statické vytvoření proměnné typu celé číslo int *ukazatel=&cislo; // vytvořeni ukazatele na cele číslo a přiřazení adresy na kterou ukazuje cout<<"cislo="<<cislo<<endl; cout<<"ukazatel="<<ukazatel<<endl; cout<<"*ukazatel="<<*ukazatel<<endl; *ukazatel=2; // nastaveni hodnoty na adrese na kterou ukazatel ukazuje cout<<"cislo="<<cislo<<endl; cout<<"ukazatel="<<ukazatel<<endl; cout<<"*ukazatel="<<*ukazatel<<endl; 23

24 ukazatel = new int; // přidělení (vytvoření) nového celého čísla cout<<"ukazatel="<<ukazatel<<endl; cout<<"*ukazatel="<<*ukazatel<<endl; *ukazatel=3; // nastaveni hodnoty na adrese na kterou ukazatel ukazuje cout<<"*ukazatel="<<*ukazatel<<endl; delete(ukazatel); // uvolněni z pameti cislo=5 ukazatel=0012ff60 *ukazatel=5 cislo=2 ukazatel=0012ff60 *ukazatel=2 ukazatel=003e5bf0 *ukazatel= *ukazatel=3 24

25 5. Funkce a procedury Kód, který se často opakuje nebo opakovaně používá, můžeme vložit do tzv. funkcí (vrací hodnotu) nebo procedur (nevrací žádnou hodnoty, typ void). Funkce může mít více vstupních proměnných (argumentů) předávaných hodnotou, data může vracet přes návratovou hodnotu nebo přes argumenty předávané ukazatelem nebo odkazem. #include <iostream> using namespace std; // procedura nic nevrací void pozdrav(){ cout << "ahoj" << endl; // funkce vrací hodnotu int soucet(int a, int b){ return(a+b); // rekurzivni funkce volá sama sebe int faktorial(int cislo){ if(cislo == 1) return 1; return (faktorial(cislo-1) * cislo); // předávání výsledku přes ukazatel int deleniukazatel(double a, double b, double *vysledek){ if(b==0) return(-1); *vysledek=a/b; return 0; // předávání výsledku přes odkaz int deleniodkaz(double a, double b, double &vysledek){ if(b==0) return(-1); vysledek=a/b; return 0; int main(){ double a=5.0; double b=3.0; double vysledek; int status; 25

26 pozdrav(); cout << soucet(1,2) << endl; cout << faktorial(5) << endl; status=deleniukazatel(a, b, &vysledek); cout << "vysledek_deleniukazatel: " <<vysledek<<endl; a=3.0; b=2.0; status=deleniodkaz(a, b, vysledek); cout << "vysledek_deleniodkaz: " <<vysledek<<endl; return 0; ahoj vysledek_deleniukazatel: vysledek_deleniodkaz:

27 6. Práce se soubory čtení, zápis Příklad zápisu a čtení ze souboru pomocí standardní cpp knihovny <fstream> : #include <iostream> #include <string> #include <fstream> //standardni cpp knihovna pro praci se soubory using namespace std; #define SOUBOR "clovek.txt" int main(){ //zapis do souboru fstream soubor; // vystupni proud do souboru (zapis) soubor.open(soubor, fstream::out); //otevreni souboru, par. out - prepis souboru soubor << "Lukas" << endl << "Tomasek" << endl << 1970<<endl; soubor.close(); //uzavreni souboru //zapis do souboru - pridani na konec soubor.open(soubor, fstream::app); //otevreni souboru, app - pripojeni na konec soubor << "Pavel" << endl << "Novy" << endl << 1969; soubor.close(); //uzavreni souboru string jmeno, prijmeni; int roknarozeni; //cteni ze souboru soubor.open(soubor, fstream::in); //parametr in - otevreni souboru pro cteni while(!soubor.eof()){ //overeni konce souboru soubor >> jmeno >> prijmeni >> roknarozeni; //nacteni dat ze souboru cout<<jmeno<<" "<<prijmeni<<" "<<roknarozeni<<endl; //vypis dat na obrazovku soubor.close(); //uzavreni souboru return 0; Lukas Tomasek 1970 Pavel Novy

28 7. Objektově orientované programování - třídy #include <iostream> using namespace std; #define PI class Kruh{ private: //privatni data (ci funkce) tridy - pristupne pouze ze clenskych funkci teto tridy double polomer; public: // public data (ci funkce) - jsou pristupne pro uzivatele teto tridy Kruh(double r=0); // konstruktor tridy - vola se pri vzniku instance tridy // clenske funkce tridy ; double getpolomer() { return polomer; double obvod() { return(2*pi*polomer); double obsah() { return(pi*polomer*polomer); int setpolomer(double r); int Kruh::setPolomer(double r){ if(r<0) { cout<<"chyba: Polomer "<<r<<"je zaporny!!"<<endl; return(-1); else{ polomer=r; return(0); Kruh::Kruh(double r){ setpolomer(r); //************************************************ int main(){ Kruh k1(2.5); // konkretni instance tridy Kruh s nazvem k1 o zadanem polomeru 2.5 Kruh *k2=new Kruh(3.3); // dalsi instance tridy (dynamicka alokace pameti) Kruh k3; // instance k3 o neurcenem polomeru, tj. 0 cout<<"obvod kruhu k1 s polomerem "<< k1.getpolomer()<<"="<< k1.obvod()<<endl; 28

29 cout<<"obsah kruhu k1 s polomerem "<< k1.getpolomer() <<"="<< k1.obsah() <<endl; k1.setpolomer(4.0); cout<<"obvod kruhu k1 s polomerem "<< k1.getpolomer()<<"="<< k1.obvod()<<endl; cout<<"obsah kruhu k1 s polomerem "<< k1.getpolomer()<<"="<< k1.obsah() <<endl; cout<<"obvod kruhu k2 s polomerem "<< k2->getpolomer()<<"="<< k2->obvod()<<endl; cout<<"obsah kruhu k2 s polomerem "<< k2->getpolomer()<<"="<< k2->obsah() <<endl; delete k2; // uvolneni z pameti return 0; Obvod kruhu k1 s polomerem 2.5= Obsah kruhu k1 s polomerem 2.5= Obvod kruhu k1 s polomerem 4= Obsah kruhu k1 s polomerem 4= Obvod kruhu k2 s polomerem 3.3= Obsah kruhu k2 s polomerem 3.3=

30 8. Použitá literatura, odkazy [1] Juan Soulié - C++ Language Tutorial (cplusplus.com, 2007) [2] Jeff Kent - C++ bez předchozích znalostí (Computer Press, Brno 2011) [3] Karel Mozdřeň - Programování v C++, První kroky ( 2009) [4] Wikipedie.cz 30

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

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

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

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

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

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

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

Proměnné a datové typy

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

Více

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

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

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

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

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

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

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

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

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

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

- 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

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu 1 Podklady předmětu pro akademický rok 2006/2007 Radim Farana Obsah 2 Obsah předmětu, Požadavky kreditového systému, Datové typy jednoduché, složené, Programové struktury, Předávání dat. Obsah předmětu

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

VY_32_INOVACE_08_2_04_PR

VY_32_INOVACE_08_2_04_PR Ing. Petr Stránský VY_32_INOVACE_08_2_04_PR Příkazy vstupu - definice Výstupním zařízením může být obrazovka, tiskárna nebo soubor. Jednotlivé údaje se zapisují pomocí příkazu WRITE nebo WRITELN. Příkaz

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

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

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

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

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

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

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é struktury a datové typy.

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

Více

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

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni! Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného

Více

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

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

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

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

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

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

Ú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

Syntaxe vyjímek. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka { private:

Syntaxe vyjímek. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka { private: Vyjímky. Pod pojmem výjimka se rozumí nějaká výjimečná situace, která nastane v dané funkci. V jazyce C i C++ se často používá návratových hodnot funkcí, které vracejí úspěšnost provádění nějaké operace

Více

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

Základy programování v jazyce C++ Doprovodný text 1. část 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... 2 2. díl... 5 3. díl... 11 4.díl... 16 5. díl... 23 6. díl... 27 7.

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

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

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

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

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

- 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

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

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury Data a datové typy 1 / 28 Obsah přednášky Základní datové typy Celá čísla Reálná čísla Znaky 2 / 28 Organizace dat Výběr vhodné datvé struktry různá paměťová náročnost různá

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

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

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

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

VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ

VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ Úvod do problematiky VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ Databáze je uspořádaná množina velkého množství informací (dat). Příkladem databáze je překladový slovník, seznam PSČ nebo telefonní seznam. Databáze

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

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

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

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

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

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

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

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

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

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

Úvod do jazyka C. *.obj *.lis. Pomocí něj vytváříme a upravujeme zdrojový soubor (*.C, *.CPP).

Úvod do jazyka C. *.obj *.lis. Pomocí něj vytváříme a upravujeme zdrojový soubor (*.C, *.CPP). *.h *.lib ladění Editor Preprocesor Linker Debugger Compiler *.cpp *.obj *.lis *.exe spuštění Editor Preprocesor Pomocí něj vytváříme a upravujeme zdrojový soubor (*.C, *.CPP). Jedná se o součást překladače,

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

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

Datové struktury. alg12 1

Datové struktury. alg12 1 Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou

Více

Kolekce, cyklus foreach

Kolekce, cyklus foreach Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro

Více

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

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Petr Blaha Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce (matematické, textové,

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

První začátky s C. Struktura programu a základní prvky. Základní termíny (1) Základní termíny (2)

První začátky s C. Struktura programu a základní prvky. Základní termíny (1) Základní termíny (2) Struktura programu a základní prvky První začátky s C Jazyk C/C++, co se týče struktury souboru, je daleko volnější oproti jiným programovacím jazykům. V podstatě je jedno, kde deklarujete proměnnou nebo

Více

Struktura programu a základní prvky

Struktura programu a základní prvky První začátky s C Struktura programu a základní prvky Jazyk C/C++, co se týče struktury souboru, je daleko volnější oproti jiným programovacím jazykům. V podstatě je jedno, kde deklarujete proměnnou nebo

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

Ú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

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

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

Více

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

PHP. Čtvrtek 8. září. Čtvrtek 15. září. Anonymní test znalostí

PHP. Čtvrtek 8. září. Čtvrtek 15. září. Anonymní test znalostí Čtvrtek 8. září Anonymní test znalostí Čtvrtek 15. září PHP je programovací jazyk, který pracuje na straně serveru. S PHP můžete ukládat a měnit data webových stránek. PHP původně znamená Personal Home

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

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

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

Více

1. Téma 12 - Textové soubory a výjimky

1. Téma 12 - Textové soubory a výjimky 1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se

Více

Základy XML struktura dokumentu (včetně testových otázek)

Základy XML struktura dokumentu (včetně testových otázek) Základy XML struktura dokumentu (včetně testových otázek) Otakar Čerba Oddělení geomatiky Katedra matematiky Fakulta aplikovaných věd Západočeská univerzita v Plzni Přednáška z předmětu Počítačová kartografie

Více

Projekt Obrázek strana 135

Projekt Obrázek strana 135 Projekt Obrázek strana 135 14. Projekt Obrázek 14.1. Základní popis, zadání úkolu Pracujeme na projektu Obrázek, který je ke stažení na http://java.vse.cz/. Po otevření v BlueJ vytvoříme instanci třídy

Více

FUNKCE 3. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika

FUNKCE 3. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen 2013. Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika FUNKCE 3 Autor: Mgr. Dana Kaprálová 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

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

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

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

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

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence

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

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

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

Více

Tvorba klientských skriptů v jazyce Java Script

Tvorba klientských skriptů v jazyce Java Script Tvorba klientských skriptů v jazyce Java Script Publikace vznikla v rámci projektu OPVK Vyškolený pedagog záruka kvalitní výuky na Střední odborné škole veterinární, mechanizační a zahradnické a Jazykové

Více

Programování v C++ Ostrava, 2008 Rostislav Fojtík

Programování v C++ Ostrava, 2008 Rostislav Fojtík Programování v C++ Ostrava, 2008 Rostislav Fojtík Obsah: Úvodní lekce... 5 1. Základy OOP v C++... 7 2. Nové prvky jazyka C++... 17 3. Třídy a instance... 29 4. Statické datové členy a funkce. Přátelé....

Více

Ošetřování chyb v programech

Ošetřování chyb v programech Ošetřování chyb v programech Úvod chyba v programu = normální záležitost typy chyb: 1) programátorská chyba při návrhu každých 10 000 řádek 1 chyba lze jen omezeně ošetřit (před pádem aplikace nabídnout

Více

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

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

Roman Lukáš email: lukas@fit.vutbr.cz

Roman Lukáš email: lukas@fit.vutbr.cz ZADÁNÍ PROJEKTU Z PŘEDMĚTŮ IFJ A IAL Roman Lukáš email: lukas@fit.vutbr.cz 22. září 2008 1 Obecné informace Název projektu: Implementace interpretu imperativního jazyka IFJ08. Informace: diskusní skupina

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

Jednoduché výrazy 30 Operace přiřazení... 30 Základní aritmetické operace... 33 Relační operátory... 38 Vstup dat... 42

Jednoduché výrazy 30 Operace přiřazení... 30 Základní aritmetické operace... 33 Relační operátory... 38 Vstup dat... 42 Obsah Předmluva 9 Předpoklady 9 Terminologie 9 Typografické konvence 10 Úvod do práce s daty 11 Konstanty a proměnné 13 Literály a výstupní operace... 13 Literály a výstupní operace v Pascalu... 14 Literály

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