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 (http://homel.vsb.cz/~moz017, 2009) [4] Wikipedie.cz 30

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií 1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední

Více

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

Algoritmizace a programování

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

Více

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

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

Více

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

Kód. Proměnné. #include 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

9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include

9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h> 9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include int main(void) { int dcislo, kolikbcislic = 0, mezivysledek = 0, i; int vysledek[1000]; printf("zadejte

Více

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr)

Základy jazyka C. Základy programování 1 Martin Kauer (Tomáš Kühr) Základy jazyka C Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační záležitosti Konzultace Pracovna 5.076 Úterý 15:00 16:30 Emailem martin.kauer@upol.cz Web předmětu http://tux.inf.upol.cz/~kauer/index.php?content=var&class=zp1

Více

Data, výrazy, příkazy

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

Více

Objektově orientované programování

Objektově orientované programování 10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh

Více

Algoritmizace a programování

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

Více

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

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

Více

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

Algoritmizace a programování

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

Více

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

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

Více

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006

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

Více

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

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

Více

Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz

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

Více

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

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

Více

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

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

Více

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

Jazyk C++ I. Polymorfismus

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

Více

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

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

Více

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

Více

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

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09 Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Operátory Autor:

Více

přetížení operátorů (o)

přetížení operátorů (o) přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního

Více

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

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

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

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

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44 Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251

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

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

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

Více

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje f1(&pole[4]); funkci f1 předáváme hodnotu 4. prvku adresu 4. prvku adresu 5. prvku hodnotu 5. prvku symbolická konstanta pro konec souboru je eof EOF FEOF feof Správné vytvoření a otevření textového souboru

Více

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

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

Více

Programování v C++ První kroky

Programování v C++ První kroky Programování v C++ První kroky Karel Mozdřeň 29. října 2009 1 Obsah 1 Úvod 5 1.1 Pro koho je kniha určena...................... 5 1.2 Proč první kroky?.......................... 5 2 Začínáme 6 2.1 Hello,

Více

Odvozené a strukturované typy dat

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

Více

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

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

Více

MQL4 COURSE. By Coders guru www.forex-tsd.com -3 DATA TYPES. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět:

MQL4 COURSE. By Coders guru www.forex-tsd.com -3 DATA TYPES. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět: MQL4 COURSE By Coders guru www.forex-tsd.com -3 DATA TYPES Vítám vás ve třetí lekci svého MQL4 kurzu. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět: Jaký formát můžete

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

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury, standardní metody Problematika načítání pomocí Scanner Některé poznámky k příkazům Psaní kódu programu Metody třídy Math Obalové třídy primitivních datových

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

přetížení operátorů (o)

přetížení operátorů (o) přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - operátor je speciální

Více

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

Souhrn Apendixu A doporučení VHDL

Souhrn Apendixu A doporučení VHDL Fakulta elektrotechniky a informatiky Univerzita Pardubice Souhrn Apendixu A doporučení VHDL Práce ke zkoušce z předmětu Programovatelné logické obvody Jméno: Jiří Paar Datum: 17. 2. 2010 Poznámka k jazyku

Více

První kapitola úvod do problematiky

První kapitola úvod do problematiky První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru

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

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

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

Více

Funkční objekty v C++.

Funkční objekty v C++. Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční

Více

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

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní Základy jazyka C# doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Architektura.NET Historie Vlastnosti

Více

Přetěžování operátorů

Přetěžování operátorů Přetěžování operátorů Cíle lekce Cílem lekce je seznámit se s mechanizmem přetížení operátorů a s použitím tohoto mechanizmu při návrhu a implementaci programů. Po absolvování lekce budete: umět využívat

Více

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

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

Více

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

(a) vyšší programování se provádí pomocí příkazů, program je psán v tzv zdrojovém kódu. Tyto příkazy jsou člověku bližší a programování je pro

(a) vyšší programování se provádí pomocí příkazů, program je psán v tzv zdrojovém kódu. Tyto příkazy jsou člověku bližší a programování je pro Programování Algoritmus jde o řešení nějakého problému pomocí předem dané posloupnosti kroků. Lze rozlišit tři základní druhy algoritmů: a) slovní v praxi se jedná o nějaký psaný návod, např. na obsluhu

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

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

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

PB161 Programování v jazyce C++ Přednáška 9 PB161 Programování v jazyce C++ Přednáška 9 Právo friend Přetěžování operátorů Nikola Beneš 16. listopadu 2015 PB161 přednáška 9: friend, přetěžování operátorů 16. listopadu 2015 1 / 30 Reklama PB173 Tematicky

Více

Dynamická identifikace typů v C++.

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

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro

Více

- 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

Základy algoritmizace a programování

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

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

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

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

Více

Vector datový kontejner v C++.

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

Více

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

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

Jazyky C a C++ kompletní průvodce 2., aktualizované vydání. Miroslav Virius

Jazyky C a C++ kompletní průvodce 2., aktualizované vydání. Miroslav Virius Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a šířena v papírové, elektronické či jiné podobě bez předchozího

Více

Číselné soustavy. Binární číselná soustava

Číselné soustavy. Binární číselná soustava 12. Číselné soustavy, binární číselná soustava. Kódování informací, binární váhový kód, kódování záporných čísel. Standardní jednoduché datové typy s pevnou a s pohyblivou řádovou tečkou. Základní strukturované

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

Standardní algoritmy vyhledávací.

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

Více

Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice,Benešovo náměstí 1, příspěvková organizace

Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice,Benešovo náměstí 1, příspěvková organizace Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice,Benešovo náměstí 1, příspěvková organizace VZDĚLÁVACÍ MATERIÁL ZPRACOVÁN V RÁMCI PROJEKTU EU PENÍZE STŘEDNÍM ŠKOLÁM - OPVK 1.5 Registrační

Více

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem Jazyk C++ 1 Blok 3 Objektové typy jazyka C++ Studijní cíl Ve třetím bloku bude představen a rozebrán nejdůležitější objektový typ jazyka C++ a to sice třída. Po absolvování bloku bude student schopen navrhovat

Více

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

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

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

MAXScript výukový kurz

MAXScript výukový kurz MAXScript výukový kurz Díl čtvrtý jazyk MAXScript, část I. Jan Melichar, březen 2008 Jan Melichar (aka JME) strana 1 OBSAH ÚVOD... 4 ZÁKLADNÍ PŘÍKAZY... 5 OPERÁTORY... 6 PROMĚNNÉ... 6 POLE... 7 ZÁVĚREM...

Více

15. Projekt Kalkulačka

15. Projekt Kalkulačka Projekt Kalkulačka strana 143 15. Projekt Kalkulačka 15.1. Základní popis, zadání úkolu Pracujeme na projektu Kalkulačka, který je ke stažení na java.vse.cz. Po otevření v BlueJ vytvoříme instanci třídy

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

Ukázka knihy z internetového knihkupectví www.kosmas.cz

Ukázka knihy z internetového knihkupectví www.kosmas.cz Ukázka knihy z internetového knihkupectví www.kosmas.cz U k á z k a k n i h y z i n t e r n e t o v é h o k n i h k u p e c t v í w w w. k o s m a s. c z, U I D : K O S 1 8 0 5 9 6 4 ALGORITMY V JAZYKU

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

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

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

Více

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

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

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

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

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

Více

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

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

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

VYSOKÁ ŠKOLA BAŇSKÁ TECHNICKÁ UNIVERZITA KURZ C++ Materiál ze systému http://aha.cs.vsb.cz:8080/aha/kurzcpp. Autoři: Jiří Šebesta, Jakub Sztefek

VYSOKÁ ŠKOLA BAŇSKÁ TECHNICKÁ UNIVERZITA KURZ C++ Materiál ze systému http://aha.cs.vsb.cz:8080/aha/kurzcpp. Autoři: Jiří Šebesta, Jakub Sztefek VYSOKÁ ŠKOLA BAŇSKÁ TECHNICKÁ UNIVERZITA KURZ C++ Materiál ze systému http://aha.cs.vsb.cz:8080/aha/kurzcpp Autoři: Jiří Šebesta, Jakub Sztefek * pdf připravil PavelSVK VŠB 2005 Úvod do C++ C++ je reakcí

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

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Funkce, podmíněný příkaz if-else, příkaz cyklu for Funkce, podmíněný příkaz if-else, příkaz cyklu for Definice funkce Funkce je pojmenovaná část programu, kterou lze dále zavolat v jiné části programu. V Pythonu je definována klíčovým slovem def. Za tímto

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

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

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

Více

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

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

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

Základy algoritmizace a programování

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

Více