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

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

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

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

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

Více

Ú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

Jazyk C# a platforma.net

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

Více

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

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

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

Více

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

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

Více

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

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

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++ C++ Akademie SH 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory Za áte níci C++ 20. b ezna 2011 Obsah 1 Prom nné - primitivní typy Celá ísla ƒísla s pohyblivou desetinnou árkou, typ bool 2 Podmínka

Více

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

Úvod do programování. Lekce 1

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

Více

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

ZPRO v C Ing. Vít Hanousek. verze 0.3 verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout

Více

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5 Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5

Více

Programovací jazyk Pascal

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

Více

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

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

Více

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

Základy C++ I. Jan Hnilica Počítačové modelování 18 Základy C++ I 1 Přechod z C na C++ jazyk C++ je nadmnožinou jazyka C z hlediska syntaxe se jedná o velmi podobné jazyky, spolu s dalšími jazyky "céčkovské" rodiny, jako je např. C# každý platný program

Více

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

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

Více

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016 ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce

Více

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

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

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

Více

Výrazy, operace, příkazy

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

Více

Opakování programování

Opakování programování Opakování programování HW návaznost - procesor sběrnice, instrukční sada, optimalizace rychlosti, datové typy, operace (matematické, logické, podmínky, skoky, podprogram ) - paměti a periferie - adresování

Více

Programovací jazyk C++ Hodina 1

Programovací jazyk C++ Hodina 1 Programovací jazyk C++ Hodina 1 Používané překladače Bloodshed Dev C++ http://www.bloodshed.net/devcpp.html CodeBlocks http://www.codeblocks.org pokud nemáte již nainstalovaný překladač, stáhněte si instalátor

Více

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

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

Více

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

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

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

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

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

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo Operátory, výrazy Tomáš Pitner, upravil Marek Šabo Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v

Více

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

Programování v C++ 1, 1. cvičení Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

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

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

Více

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

Formátové specifikace formátovací řetězce

Formátové specifikace formátovací řetězce 27.2.2007 Formátové specifikace formátovací řetězce - je to posloupnost podle které překladač pozná jaký formát má výstup mít - posloupnosti začínají znakem % a určující formát vstupu/výstupu - pokud chcete

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

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

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

Výrazy, operace, příkazy

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

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

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

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

NPRG031 Programování II --- 2/2 Z, Zk

NPRG031 Programování II --- 2/2 Z, Zk NPRG031 Programování II --- 2/2 Z, Zk paralelka Y St 14:00-15:30 v S3 Pavel Töpfer Kabinet software a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer

Více

Základy programování (IZP)

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

Více

Programování v jazyce JavaScript

Programování v jazyce JavaScript Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Operátory a příkazy BI-JSC Evropský sociální fond

Více

Sada 1 - Základy programování

Sada 1 - Základy programování S třední škola stavební Jihlava Sada 1 - Základy programování 04. Datové typy, operace, logické operátory Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284

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

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

ADT/ADS = abstraktní datové typy / struktury

ADT/ADS = abstraktní datové typy / struktury DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní

Více

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

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr) Operátory Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační poznámky Formátujte kód přehledně! Pomůžete sobě i mně. Spusťte si vaše programy a zkuste různé vstupy! Pokud program nedává správné

Více

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky. PHP - úvod Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky. Klíčové pojmy: PHP, webový prohlížeč, HTTP, FTP Základní pojmy služba WWW = 1990 první prototyp serveru, od roku 1994

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

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

Č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

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

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

Struktura programu, proměnné, konstanty, výrazy v jazycích C a C#

Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# Struktura programu, proměnné, konstanty, výrazy v jazycích C a C# Seznámit žáky se strukturou programu v jazycích C/C#, s klíčovými slovy jazyků C/C#, s psaním komentářů, se základními datovými typy, deklarací

Více

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

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

Více

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

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

Více

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

Operátory. Základy programování 1 Tomáš Kühr

Operátory. Základy programování 1 Tomáš Kühr Operátory Základy programování 1 Tomáš Kühr Operátory a jejich vlastnosti Základní konstrukce (skoro) každého jazyka Z daných operandů vytvoří výsledek, který je možné dále využívat Arita udává počet operandů

Více

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

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

Více

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

Úvod do programování - Java. Cvičení č.4

Úvod do programování - Java. Cvičení č.4 Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení

Více

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

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

Více

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

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: vzdělávací

Více

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

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

Více

Operační systémy. Cvičení 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

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

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

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

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí 02 Jazyk C - je imperativní říkáme, co se má udělat, voláme příkazy - další imperativní jazyky: Pascal, Java, C/C++ apod. - na rozdíl od jazyků deklarativních např. Prolog, Haskell, Scheme, Lisp (funkcionální

Více

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

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

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

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

Více

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

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

Více

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

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

- jak udělat konstantu long int: L long velka = 78L;

- jak udělat konstantu long int: L long velka = 78L; Konstanty (konstatní hodnoty) Např.: - desítkové: 25, 45, 567, 45.678 - osmičkové: 045, 023, 03 vždy začínají 0 - šestnáctkové: 0x12, 0xF2, 0Xcd, 0xff, 0xFF - jak udělat konstantu long int: 245566553L

Více

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Třídy v C++ Třídy jsou uživatelsky definované typy podobné strukturám v C, kromě datových položek (proměnných) však mohou obsahovat i funkce

Více

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr Bitové operátory a bitová pole Úvod do programování 2 Tomáš Kühr Bitové operátory Provádějí danou operaci s jednotlivými bity svých operandů Operandy bitových operátorů mohou být pouze celočíselné Vyhodnocení

Více

Mělká a hluboká kopie

Mělká a hluboká kopie Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta

Více

PROGRAMOVÁNÍ V C++ CVIČENÍ

PROGRAMOVÁNÍ V C++ CVIČENÍ PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné

Více

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

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

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

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

Více

Základy jazyka C. Základy programování 1 Tomáš Kühr

Základy jazyka C. Základy programování 1 Tomáš Kühr Základy jazyka C Základy programování 1 Tomáš Kühr Organizační záležitosti Konzultace Osobně v pracovně 5.043 Pondělí 15.00 16.00 Úterý 14.00 16.00 Čtvrtek 13.00 15.00 Pátek 9.30 11.30 Něco jde vyřešit

Více

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

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

Více

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

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky - Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky - Preprocesor je možné ovládat pomocí příkazů - řádky začínající

Více

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

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