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

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

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

Transkript

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

2 internetová stránka s referencemi download editoru zdrojového kódu Gedit - dawnload kompilátoru gcc 2/73

3 Zrození jazyka C Céčko navrhl Dennis Ritchie, tvůrce operačního systému UNIX, Bellovy laboratoře, Murray Hill, New Jersey (USA), rok /73

4 Výhody jazyka C: 4/73

5 Výhody jazyka C: extrémně rychlý 5/73

6 Výhody jazyka C: extrémně rychlý multiplatformní (pracuje na většině operačních systémů) 6/73

7 Výhody jazyka C: extrémně rychlý multiplatformní (pracuje na většině operačních systémů) Nevýhody jazyka C: 7/73

8 Výhody jazyka C: extrémně rychlý multiplatformní (pracuje na většině operačních systémů) Nevýhody jazyka C: nízký komfort pro programátora 8/73

9 Výhody jazyka C: extrémně rychlý multiplatformní (pracuje na většině operačních systémů) Nevýhody jazyka C: nízký komfort pro programátora neumí pracovat s textovými řetězci 9/73

10 Výhody jazyka C: extrémně rychlý multiplatformní (pracuje na většině operačních systémů) Nevýhody jazyka C: nízký komfort pro programátora neumí pracovat s textovými řetězci nemá grafické rozhraní 10/73

11 Výhody jazyka C: extrémně rychlý multiplatformní (pracuje na většině operačních systémů) Nevýhody jazyka C: nízký komfort pro programátora neumí pracovat s textovými řetězci nemá grafické rozhraní nepodporuje objektově orientované programování 11/73

12 Výhody jazyka C: extrémně rychlý multiplatformní (pracuje na většině operačních systémů) Nevýhody jazyka C: nízký komfort pro programátora neumí pracovat s textovými řetězci nemá grafické rozhraní nepodporuje objektově orientované programování Speciální vlastnost: přímý přístup do paměti (rychlejší přístup, ale nutno pečlivě pracovat s deklarací proměnných) 12/73

13 Procesy od programování do spuštění programu: 13/73

14 Procesy od programování do spuštění programu: 1) vytvoření zdrojového kódu v programovacím jazyce C 14/73

15 Procesy od programování do spuštění programu: 1) vytvoření zdrojového kódu v programovacím jazyce C 2) z kompilování do strojového kódu (pouze v případě bezchybného kódu) 15/73

16 Procesy od programování do spuštění programu: 1) vytvoření zdrojového kódu v programovacím jazyce C 2) z kompilování do strojového kódu (pouze v případě bezchybného kódu) 3) Spuštění strojového kódu v procesoru (na operačním systému) 16/73

17 Připojení systémových knihoven Systémové knihovny umožňují využívat různé funkce jazyka C... 17/73

18 Připojení systémových knihoven Systémové knihovny umožňují využívat různé funkce jazyka C... Zápis do kódu programu: #include <knihovna> 18/73

19 Připojení systémových knihoven Systémové knihovny umožňují využívat různé funkce jazyka C... Zápis do kódu programu: #include <knihovna> knihovny: stdio.h - vstupy a výstupy 19/73

20 #include <knihovna> Připojení systémových knihoven Systémové knihovny umožňují využívat různé funkce jazyka C... Zápis do kódu programu: knihovny: stdio.h - vstupy a výstupy stdlib.h - standardní knihovna se základními instrukcemi 20/73

21 #include <knihovna> Připojení systémových knihoven Systémové knihovny umožňují využívat různé funkce jazyka C... Zápis do kódu programu: knihovny: stdio.h - vstupy a výstupy stdlib.h - standardní knihovna se základními instrukcemi math.h - matematické funkce 21/73

22 Připojení systémových knihoven Systémové knihovny umožňují využívat různé funkce jazyka C... Zápis do kódu programu: #include <knihovna> knihovny: stdio.h - vstupy a výstupy stdlib.h - standardní knihovna se základními instrukcemi math.h - matematické funkce assert.h - funkce pro kontrolu programu 22/73

23 #include <knihovna> Připojení systémových knihoven Systémové knihovny umožňují využívat různé funkce jazyka C... Zápis do kódu programu: knihovny: stdio.h - vstupy a výstupy stdlib.h - standardní knihovna se základními instrukcemi math.h - matematické funkce assert.h - funkce pro kontrolu programu string.h - funkce pro práci s polem znaků (char) jako se stringem 23/73

24 #include <knihovna> Připojení systémových knihoven Systémové knihovny umožňují využívat různé funkce jazyka C... Zápis do kódu programu: knihovny: stdio.h - vstupy a výstupy stdlib.h - standardní knihovna se základními instrukcemi math.h - matematické funkce assert.h - funkce pro kontrolu programu string.h - funkce pro práci s polem znaků (char) jako se stringem Do kódu programu knihovny zapisujeme na začátek - před hlavní program. 24/73

25 Základní datové typy 25/73

26 Základní datové typy Každá proměnná musí být deklarovaná v proceduře dříve, než je napsán první příkaz! 26/73

27 Základní datové typy Každá proměnná musí být deklarovaná v proceduře dříve, než je napsán první příkaz! Pozor: Při definici proměnné je důležité, jestli použijeme malá nebo velká písmena v názvech proměnných nebo funkcí! Proměnná a není proměnná A! 27/73

28 Základní datové typy Každá proměnná musí být deklarovaná v proceduře dříve, než je napsán první příkaz! Pozor: Při definici proměnné je důležité, jestli použijeme malá nebo velká písmena v názvech proměnných nebo funkcí! Proměnná a není proměnná A! int integer (celé číslo 2^32 a6 +2^32 1) int A; nebo int A = hodnota; Pokud není uvedeno rovnítko a hodnota, pak proměnná má nedefinovanou hodnotu, tedy nějakou hodnotu, kterou náhodně obsahuje paměť, kterou operační systém přidělil programu a program přidělil proměnné. To může způsobit problémy při chodu programu a je tedy nutné dát pozor na přidělení hodnot proměnným dříve, než je budeme zpracovávat v programu! 28/73

29 Základní datové typy Každá proměnná musí být deklarovaná v proceduře dříve, než je napsán první příkaz! Pozor: Při definici proměnné je důležité, jestli použijeme malá nebo velká písmena v názvech proměnných nebo funkcí! Proměnná a není proměnná A! int integer (celé číslo 2^32 a6 +2^32 1) int A; nebo int A = hodnota; Pokud není uvedeno rovnítko a hodnota, pak proměnná má nedefinovanou hodnotu, tedy nějakou hodnotu, kterou náhodně obsahuje paměť, kterou operační systém přidělil programu a program přidělil proměnné. To může způsobit problémy při chodu programu a je tedy nutné dát pozor na přidělení hodnot proměnným dříve, než je budeme zpracovávat v programu! char jeden znak (reprezentován číslem od -128 do +127) 29/73

30 Základní datové typy Každá proměnná musí být deklarovaná v proceduře dříve, než je napsán první příkaz! Pozor: Při definici proměnné je důležité, jestli použijeme malá nebo velká písmena v názvech proměnných nebo funkcí! Proměnná a není proměnná A! int integer (celé číslo 2^32 a6 +2^32 1) int A; nebo int A = hodnota; Pokud není uvedeno rovnítko a hodnota, pak proměnná má nedefinovanou hodnotu, tedy nějakou hodnotu, kterou náhodně obsahuje paměť, kterou operační systém přidělil programu a program přidělil proměnné. To může způsobit problémy při chodu programu a je tedy nutné dát pozor na přidělení hodnot proměnným dříve, než je budeme zpracovávat v programu! char jeden znak (reprezentován číslem od -128 do +127) double desetinné číslo (pozor: desetinná tečka!) 30/73

31 Základní datové typy Každá proměnná musí být deklarovaná v proceduře dříve, než je napsán první příkaz! Pozor: Při definici proměnné je důležité, jestli použijeme malá nebo velká písmena v názvech proměnných nebo funkcí! Proměnná a není proměnná A! int integer (celé číslo 2^32 a6 +2^32 1) int A; nebo int A = hodnota; Pokud není uvedeno rovnítko a hodnota, pak proměnná má nedefinovanou hodnotu, tedy nějakou hodnotu, kterou náhodně obsahuje paměť, kterou operační systém přidělil programu a program přidělil proměnné. To může způsobit problémy při chodu programu a je tedy nutné dát pozor na přidělení hodnot proměnným dříve, než je budeme zpracovávat v programu! char jeden znak (reprezentován číslem od -128 do +127) double desetinné číslo (pozor: desetinná tečka!) float desetinné číslo s menším rozsahem (pozor: desetinná tečka!) 31/73

32 boolean používá se proměnná typu integer; 0 je false, jiné číslo je true!!! 32/73

33 boolean používá se proměnná typu integer; 0 je false, jiné číslo je true!!! string neexistuje, použije se pole char 33/73

34 boolean používá se proměnná typu integer; 0 je false, jiné číslo je true!!! string pole neexistuje, použije se pole char definice: datový_typ jméno_proměnné[počet prvků] např. int pole[10]; pole deseti prvků, první index je nula, poslední devět! 34/73

35 boolean používá se proměnná typu integer; 0 je false, jiné číslo je true!!! string pole neexistuje, použije se pole char definice: datový_typ jméno_proměnné[počet prvků] např. int pole[10]; pole deseti prvků, první index je nula, poslední devět! pointer definice: datový_typ *jmeno_proměnné 35/73

36 boolean používá se proměnná typu integer; 0 je false, jiné číslo je true!!! string pole neexistuje, použije se pole char definice: datový_typ jméno_proměnné[počet prvků] např. int pole[10]; pole deseti prvků, první index je nula, poslední devět! pointer definice: datový_typ *jmeno_proměnné Např.: int *promenna1; proměnná, které obsahuje adresu v paměti RAM, kde je uložena hodnota typu integer. Pokud chceme přistoupit k hodnotě, která je uložena pod daným pointerem, pak před jménem proměnné zapíšeme hvězdičku! Hodnota proměnné promenna1 je adresa do paměti RAM, na které je v paměti uložena hodnota (např. nějaké číslo). 36/73

37 boolean používá se proměnná typu integer; 0 je false, jiné číslo je true!!! string pole neexistuje, použije se pole char definice: datový_typ jméno_proměnné[počet prvků] např. int pole[10]; pole deseti prvků, první index je nula, poslední devět! pointer definice: datový_typ *jmeno_proměnné Např.: int *promenna1; proměnná, které obsahuje adresu v paměti RAM, kde je uložena hodnota typu integer. Pokud chceme přistoupit k hodnotě, která je uložena pod daným pointerem, pak před jménem proměnné zapíšeme hvězdičku! Hodnota proměnné promenna1 je adresa do paměti RAM, na které je v paměti uložena hodnota (např. nějaké číslo). Příklad adresy paměťové buňky (1 Byte) v paměti RAM: 0060FF0C 37/73

38 boolean používá se proměnná typu integer; 0 je false, jiné číslo je true!!! string pole neexistuje, použije se pole char definice: datový_typ jméno_proměnné[počet prvků] např. int pole[10]; pole deseti prvků, první index je nula, poslední devět! pointer definice: datový_typ *jmeno_proměnné Např.: int *promenna1; proměnná, které obsahuje adresu v paměti RAM, kde je uložena hodnota typu integer. Pokud chceme přistoupit k hodnotě, která je uložena pod daným pointerem, pak před jménem proměnné zapíšeme hvězdičku! Hodnota proměnné promenna1 je adresa do paměti RAM, na které je v paměti uložena hodnota (např. nějaké číslo). Do proměnné typu pointer se ukládá adresa v paměti, kde je uložena nějaká hodnota! 38/73

39 *promenna1 = 10; Znamená, že jsme na adresu uloženou v proměnné promenna1 zapsali hodnotu 10 (změníme hodnotu modré buňky). 39/73

40 *promenna1 = 10; Znamená, že jsme na adresu uloženou v proměnné promenna1 zapsali hodnotu 10 (změníme hodnotu modré buňky). Pokud chceme získat adresu proměnné a uložit ji do pointeru, pak před jméno proměnné zapíšeme & (bez mezery): promenna1 = &A; (změníme hodnotu červené buňky). 40/73

41 Použití pointeru void mojefunkce (int x) v hlavním programu: int data = 123; mojefunkce (data); Z hlavního programu voláme funkci mojefunkce s parametrem data. To je proměnná typu integer, která obsahuje hodnotu 123. Tato hodnota se vloží v funkci moje funkce do proměnné x. Od této chvíle jsou proměnné data a x zcela odděleny a nijak na sobě nezávisí. V dalším zpracování může každá z těchto proměnných obsahovat jinou hodnotu. 41/73

42 Pokud chceme, aby se změna hodnoty, která se stane ve funkci moje funkce, přenesla do hlavního programu zpět do proměnné data, potom musí být ve funkci mojefunkce x datového typu jako odkaz na hodnotu typu integer: void mojefunkce (int *x) { *x=321; } v hlavním programu: int data = 123; mojefunkce (&data); Při volání funkce mojefunkce použijeme jako parametr adresu proměnné data a vložíme ji do proměnné x (ve funkci moje funkce). Tuto adresu získáme tak, že před proměnnou, kterou použijeme jako parametr volání funkce mojefunkce, vložíme znak &. 42/73

43 NULL je speciální hodnota ukazatele. Znamená, že ukazatel neukazuje nikam! Např.: int *x=null; *x=10; Chyba nelze vložit hodnotu na neexistující adresu! (nevíme, kam vložit...) Příklad použití pointeru: int a, *p_a; a = 56; printf("promenna a s hodnotou %d je v pameti ulozena na adrese %p", a, &a); p_a = &a; // Uloží do p_a adresu proměnné a *p_a = 15; // Uloží hodnotu 15 na adresu v p_a printf("promenna a ma hodnotu %d", a); 43/73

44 Předání pole funkci: máme dvě možnosti: void mojefunkce (int *pole) nebo void mojefunkce (int pole []) V obou případech bude přenesena do funkce adresa prvního (nultého) prvku pole. 44/73

45 Povolené operace ukazatelů: int* + int = int* int* - int = int* int* - int* = int int* relační operátor (<,>,!=,==) int* = int Posun v paměti (změna adresy paměti), když je přičtena hodnota n, adresa se zvětší o n*sizeof (int). Posun v paměti (změna adresy paměti) Vzdálenost ukazatelů (adres v paměti) Porovná ukazatele (adresy paměti) 45/73

46 Pointer (ukazatel) použijeme: 46/73

47 Pointer (ukazatel) použijeme: když potřebujeme mít výstupní parametry ve funkci parametry, které odchází z hlavního programu do funkce a funkce je může změnit (hodnoty proměnných) a vrátit do hlavního programu 47/73

48 Pointer (ukazatel) použijeme: když potřebujeme mít výstupní parametry ve funkci parametry, které odchází z hlavního programu do funkce a funkce je může změnit (hodnoty proměnných) a vrátit do hlavního programu při dynamické alokaci paměti (viz dále) 48/73

49 Pointer (ukazatel) použijeme: když potřebujeme mít výstupní parametry ve funkci parametry, které odchází z hlavního programu do funkce a funkce je může změnit (hodnoty proměnných) a vrátit do hlavního programu při dynamické alokaci paměti (viz dále) při složitějších datových strukturách (spojové seznamy, stromy) 49/73

50 Binární vyhledávací strom: Umožňuje rychlejší vyhledávání než pole. Nemusíme prohledat n prvků, ale pouze dvojkový logaritmus n : log 2 (n). 50/73

51 Jednosměrně zřetězený spojový seznam V prvku seznamu jsou data a odkaz na další prvek. Využívá se ve v datových typech fronta (údaj, který první přijde, první odejde) a zásobník (údaj, který první přijde, poslední odejde). 51/73

52 Obousměrně zřetězený spojový seznam Každý prvek obsahuje odkaz na prvek následující a také předchozí. Cyklicky zřetězený spojový seznam sentinel je vstupní prvek Každý prvek obsahuje odkaz na prvek následující, poslední prvek obsahuje odkaz na první. 52/73

53 Definice statické proměnné: Je uložena na zásobníku (část paměti, která je přidělena programu omezené místo řádově v MB), v proměnné je uložena přímo hodnota daného typu. int A = hodnota; nebo int A; int A[10]; int A[] = {1,2,3,4,5,4,3,2,1,0}; elementární statická proměnná pole o deseti nedefinovaných prvcích automaticky se přiřadí počet prvků U statického pole nelze měnit jeho velikost! 53/73

54 Definice dynamické proměnné: Funkce pro dynamickou alokaci proměnné jsou v knihovně stdlib. Je uložena na haldě (část paměti, která je přidělena programu, zbytek nevyužité paměti), v proměnné je uložen osmibytový (64 bit OS) nebo čtyřbytový (32 bit OS) pointer, tedy ukazatel na místo v paměti, na kterém je uložena hodnota. Výhodou je vyšší rychlost, oproti statickým proměnným, přiřazování hodnot k proměnným. 54/73

55 Definice dynamické proměnné: Funkce pro dynamickou alokaci proměnné jsou v knihovně stdlib. Je uložena na haldě (část paměti, která je přidělena programu, zbytek nevyužité paměti), v proměnné je uložen osmibytový (64 bit OS) nebo čtyřbytový (32 bit OS) pointer, tedy ukazatel na místo v paměti, na kterém je uložena hodnota. Výhodou je vyšší rychlost, oproti statickým proměnným, přiřazování hodnot k proměnným. int *A = (int*)malloc(sizeof(int)); elementární dynamická proměnná s vyhrazením místa pro číslo typu integer bez přiřazení hodnoty 55/73

56 Definice dynamické proměnné: Funkce pro dynamickou alokaci proměnné jsou v knihovně stdlib. Je uložena na haldě (část paměti, která je přidělena programu, zbytek nevyužité paměti), v proměnné je uložen osmibytový (64 bit OS) nebo čtyřbytový (32 bit OS) pointer, tedy ukazatel na místo v paměti, na kterém je uložena hodnota. Výhodou je vyšší rychlost, oproti statickým proměnným, přiřazování hodnot k proměnným. int *A = (int*)malloc(sizeof(int)); elementární dynamická proměnná s vyhrazením místa pro číslo typu integer bez přiřazení hodnoty int *A=(int*)malloc(10*sizeof(int)); dynamické pole o deseti prvcích, první index 0, poslední 9 56/73

57 Definice dynamické proměnné: Funkce pro dynamickou alokaci proměnné jsou v knihovně stdlib. Je uložena na haldě (část paměti, která je přidělena programu, zbytek nevyužité paměti), v proměnné je uložen osmibytový (64 bit OS) nebo čtyřbytový (32 bit OS) pointer, tedy ukazatel na místo v paměti, na kterém je uložena hodnota. Výhodou je vyšší rychlost, oproti statickým proměnným, přiřazování hodnot k proměnným. int *A = (int*)malloc(sizeof(int)); elementární dynamická proměnná s vyhrazením místa pro číslo typu integer bez přiřazení hodnoty int *A=(int*)malloc(10*sizeof(int)); dynamické pole o deseti prvcích, první index 0, poslední 9 int *A=(int*)calloc(10*sizeof(int)); dynamické pole o deseti prvcích, první index 0, poslední 9, všechny prvky jsou vynulovány mají hodnotu nula. malloc memory allocation malloc vrací hodnotu bez určení typu (void*), proto přetypujeme (int*)malloc 57/73

58 Změna velikosti pole: A = realloc(a, 100*sizeof(int)) - z deseti prvků jsme změnili na 100 prvků, realloc reallocation 58/73

59 Změna velikosti pole: A = realloc(a, 100*sizeof(int)) - z deseti prvků jsme změnili na 100 prvků, realloc reallocation Není vhodné zvětšovat o malý počet prvků, protože zvětšení probíhá tak, že se nejprve naalokuje nová paměť, pak se prvek po prvku zkopíruje a nakonec se původní pole odstraní. 59/73

60 Změna velikosti pole: A = realloc(a, 100*sizeof(int)) - z deseti prvků jsme změnili na 100 prvků, realloc reallocation Není vhodné zvětšovat o malý počet prvků, protože zvětšení probíhá tak, že se nejprve naalokuje nová paměť, pak se prvek po prvku zkopíruje a nakonec se původní pole odstraní. Dynamicky alokovanou proměnnou musíme, ve chvíli, kdy ji nepotřebujeme, vždy odstranit z paměti! Trvale by zabírala místo v paměti až do ukončení chodu programu, po ukončení chodu programu všechny proměnné použité v programu odstraní operační systém. 60/73

61 Uvolnění dynamické proměnné (typu pointer) z paměti (RAM) free(a); - uvolní prostor v operační paměti vyhrazený proměnné A, pozor: hodnota v paměti zůstává, pokud operační systém daný prostor nevyužije, je hodnota stále přístupná! 61/73

62 Uvolnění dynamické proměnné (typu pointer) z paměti (RAM) free(a); uvolní prostor v operační paměti vyhrazený proměnné A, pozor: hodnota v paměti zůstává, pokud operační systém daný prostor nevyužije, je hodnota stále přístupná! free(a); A = NULL; uvolní prostor v operační paměti vyhrazený proměnné A a do proměnné A vloží NULL, to znamená, že program ztratí adresu dat uložených v paměti, od té chvíle již nemáme přístup k datům 62/73

63 Staticky definované dvourozměrné pole int Pole [3][4]; [0][0] [0][1] [0][2] [0][3] [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3] 63/73

64 Dynamicky definované pole int **Pole,i; //deklarace ukazatele na ukazatel na integer Pole=(int**)malloc(3*sizeof(int*)); for(i=0;i<3;i++) Pole[i]=(int*)malloc(4*sizeof(int)); Dynamicky lze definovat pouze jednorozměrné pole. V případě potřeby definice vícerozměrného pole, např. dvourozměrného, alokujeme nejprve jednorozměrné pole ukazatelů, a potom pro každý ukazatel alokujeme pole integerů. Nejprve tak alokujeme adresy řádků a potom jednotlivé řádky. 64/73

65 Editace kódu programu Komentář v kódu programu // text - pro jeden řádek /* - na začátku prvního řádku komentáře */ - na konci posledního řádku komentáře Za každým řádkem, pokud kód nepokračuje složenými závorkami, musí být středník! 65/73

66 Hlavní program: int main (void) { kód programu return 0; } int return (void) funkce je typu integer (v hlavním programu musí být int) v případě úspěšného běhu programu vrací nulu, jinak číslo chyby bez parametrů (pokud žádné nepoužijeme) nebo 66/73

67 int main (int argc, char ** args) { kód programu return 0; } argc je počet parametrů (arguments count), args je pole parametrů, **args znamená odkaz na odkaz na char to znamená, že pod odkazem je dvourozměrné pole 67/73

68 datový_typ jmeno_procedury (parametry) a dále jako u hlavního programu Procedura: 68/73

69 Připojení souboru s kódem (program je napsán ve více souborech): Program může být napsán ve více souborech, to se používá, když potřebujeme program rozdělit do menších celků, např. z důvodu potřeby rozdělení na logické celky. #include cesta k souboru Pokud je druhý soubor ve stejné složce, jako soubor první (hlavní): např.: #include program2.c (Windows) #include./program2.c (Linux) 69/73

70 Editační prostření Kód programu lze editovat v jakémkoli textovém editoru. Postačí poznámkový blok. Na FIT ČVUT je používaný editor Gedit. Soubory s kódem programu se ukládají s koncovkou.c jmeno_souboru.c 70/73

71 Kompilace programu Nejprve je třeba nainstalovat kompilátor gcc. Vytvořený zdrojový kód (soubor) musíme před spuštěním zkompilovat! Kompilace: otevřeme příkazový řádek ve složce, kde máme zdrojový soubor spustíme příkaz: gcc jménosouboru vygenerovaný soubor se vždy jmenuje a.exe (windows) nebo a.out (linux) Příkaz lze také spustit s parametry, např.: gcc -Wall -pedantic jménosouboru Tento způsob kompilace vypíše, kromě chyb, také varování (neinicializovaná proměnná, podmínka, která je vždy true, přiřazení proměnné jiného datového typu do proměnné s jiným datovým typem.). 71/73

72 Spuštění programu Soubor s programem se spouští v příkazovém řádku otevřeného v příslušné složce příkazem: jménosouboru.exe (windows)./jmenosouboru.out (linux) 72/73

73 Otevření příkazového řádku: Windows 10 Start cmd Linux Start Administration - Terminal Práce s příkazovým řádkem: Windows: cd jméno_složky - vnoření do složky cd.. - výstup do nadřazené složky dir - výpis obsahu složky Linux: cd jméno_složky - vnoření do složky cd.. - výstup do nadřazené složky ls - výpis obsahu složky Poznámka: Pokud je jméno složky nebo souboru složeno z více slov oddělených mezerou, pak se název souboru nebo složky zapisuje v uvozovkách! Např.: cd Nová složka 73/73

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 1/24 Editační prostření Kód programu lze editovat v jakémkoli textovém editoru. 2/24 Editační prostření Kód

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

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

IUJCE 07/08 Přednáška č. 6 Správa paměti Motivace a úvod v C (skoro vždy) ručně statické proměnné o datový typ, počet znám v době překladu o zabírají paměť po celou dobu běhu programu problém velikosti definovaných proměnných jak

Více

Pointery II. Jan Hnilica Počítačové modelování 17

Pointery II. Jan Hnilica Počítačové modelování 17 Pointery II 1 Pointery a pole Dosavadní způsob práce s poli zahrnoval: definici pole jakožto kolekce proměnných (prvků) jednoho typu, umístěných v paměti za sebou int pole[10]; práci s jednotlivými prvky

Více

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

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

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

Ú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

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

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

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

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Reprezentace dat v informačních systémech. Jaroslav Šmarda Reprezentace dat v informačních systémech Jaroslav Šmarda Reprezentace dat v informačních systémech Reprezentace dat v počítači Datové typy Proměnná Uživatelské datové typy Datové struktury: pole, zásobník,

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

Dynamická vícerozměrná pole. Základy programování 2 Tomáš Kühr

Dynamická vícerozměrná pole. Základy programování 2 Tomáš Kühr Dynamická vícerozměrná pole Základy programování 2 Tomáš Kühr Statická pole připomenutí Příklad definice: int polea[2][3]; Nejjednodušší způsob vytvoření pole Pole je statické oba rozměry se zadávají konstantou

Více

Př. další použití pointerů

Př. další použití pointerů Př. další použití pointerů char *p_ch; int *p_i; p_ch = (char *) p_i; // konverze int * na char * 8 int i = 5; int *p_i; p_i = &i; POZOR!!!! scanf("%d", p_i); printf("%d", *p_i); Obecný pointer na cokoliv:

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Deváté 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 27.11.2017,

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Strukturované proměnné Struktura, union Jazyk C České vysoké učení technické Fakulta elektrotechnická A8B14ADP Jazyk C - Strukturované proměnné Ver.1.10 J. Zděnek 20151 Struktura

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

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

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

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

Vícerozměrná pole. Úvod do programování 2 Tomáš Kühr

Vícerozměrná pole. Úvod do programování 2 Tomáš Kühr Vícerozměrná pole Úvod do programování 2 Tomáš Kühr Organizační záležitosti Konzultace Pracovna 5.043 Úterý 9.40 11.20 (oficiální) Pátek 8.30 9.40, dle potřeby Emailem tomas.kuhr@upol.cz Web předmětu:

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

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

POČÍTAČE A PROGRAMOVÁNÍ

POČÍTAČE A PROGRAMOVÁNÍ POČÍTAČE A PROGRAMOVÁNÍ Vícerozměrná statická a dynamická pole, Pole polí Miroslav Vavroušek PPI 08 V1.1 Opakovaní z minulé přednášky Datová pole Jednorozměrná statická datová pole Dynamická datová pole

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Strukturované proměnné Pole (array), ukazatele (pointer) Jazyk C České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Pole (array) (1) Pole je množina

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 Programování v jazyce C a C# část I. Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Algoritmizace a programování Téma: Programování Vyučující: Ing. Milan Káža

Více

Ukazatele, dynamická alokace

Ukazatele, dynamická alokace Ukazatele, dynamická alokace 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 Mazanec Karel Richta,

Více

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele Strukturu lze funkci předat: hodnotou i pomocí ukazatele pouze pomocí ukazatele (reference na strukturu) pouze hodnotou (kopie struktury) (pole[i])+j adresa prvku na souřadnicích i, j adresa i-tého řádku

Více

Struktura programu v době běhu

Struktura programu v době běhu Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů

Více

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Správa paměti Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Objektové modelování, B36OMO 10/2016, Lekce 2 https://cw.fel.cvut.cz/wiki/courses/xxb36omo/start

Více

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

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

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Jedenácté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Gabriela Nečasová, inecasova@fit.vutbr.cz

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

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Páté 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 5. týden

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

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

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

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

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný typem proměnné - ukazatel je tedy adresa společně s

Více

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

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

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

Ú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

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

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

Datové typy a struktury

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

Více

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

11a Dynamické dvourozměrné pole (obdobně vícerozměrné)

11a Dynamické dvourozměrné pole (obdobně vícerozměrné) 11a Dynamické dvourozměrné pole (obdobně vícerozměrné) počet hvězdiček == počet rozměrů (dimenze pole) int **p_2d; int radku, sloupcu; printf("zadejte pocet radku a sloupcu pole:"); scanf("%d,%d", &radku,

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

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

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

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a Aplikace Embedded systémů v Mechatronice Michal Bastl A2/713a Aplikace Embedded systémů v Mechatronice Obsah přednášky: Opakování Pointery v C pole a řetězce předání funkci referencí Vlastní datové typy

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

Algoritmizace prostorových úloh

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

Více

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

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

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Práce s binárními soubory. Základy programování 2 Tomáš Kühr Práce s binárními soubory Základy programování 2 Tomáš Kühr Binární soubory Mohou mít libovolnou strukturu Data jsou uložena ve stejné podobě jako v paměti za běhu programu Výhody: Pro uložení je potřeba

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

Jazyk C++, některá rozšíření oproti C

Jazyk C++, některá rozšíření oproti C Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra

Více

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

Správa paměti. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

Správa paměti. doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / Správa paměti 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 Motivace Úrovně správy paměti. Manuální

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

Sada 1 - Základy programování

Sada 1 - Základy programování S třední škola stavební Jihlava Sada 1 - Základy programování 06. Proměnné, deklarace proměnných 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

Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0

Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0 Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0 int policko[100]; // tj. pole je od 0 do 99!!! policko[5] = 7; // pozor je to 6. prvek s indexem 5

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

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

Dílčí příklady použití jazykových konstrukcí v projektu. Jazyk C Příklady. Pravidla překladu v gmake. Zadání

Dílčí příklady použití jazykových konstrukcí v projektu. Jazyk C Příklady. Pravidla překladu v gmake. Zadání Dílčí příklady použití jazykových konstrukcí v projektu Jazyk C Příklady Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 10 A0B36PR2 Programování 2 Program

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

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

Systém adresace paměti

Systém adresace paměti Systém adresace paměti Základní pojmy Adresa fyzická - adresa, která je přenesena na adresní sběrnici a fyzicky adresuje hlavní paměť logická - adresa, kterou má k dispozici proces k adresaci přiděleného

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

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Preprocesor Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9b https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start

Více

Algoritmizace prostorových úloh

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

Více

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr Koncepce (větších) programů Základy programování 2 Tomáš Kühr Parametry a návratová hodnota main Již víme, že main je funkce A také tušíme, že je trochu jiná než ostatní funkce v programu Funkce main je

Více

Přednáška. Správa paměti I. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Přednáška. Správa paměti I. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Přednáška Správa paměti I. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského

Více

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března Polymorfismus Cíle lekce Cílem lekce je vysvětlit význam pojmu polymorfismus jako základní vlastnosti objektově orientovaného programování. Lekce objasňuje vztah časné a pozdní vazby a jejich využití.

Více

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Pole a Funkce. Úvod do programování 1 Tomáš Kühr Pole a Funkce Úvod do programování 1 Tomáš Kühr (Jednorozměrné) pole u Datová struktura u Lineární u Homogenní = prvky stejného datového typu u Statická = předem určený počet prvků u Pole umožňuje pohodlně

Více

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

C2110 Operační systém UNIX a základy programování

C2110 Operační systém UNIX a základy programování C2110 Operační systém UNIX a základy programování 6. lekce Petr Kulhánek, Jakub Štěpán kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kotlářská

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

Základní datové struktury

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

Více

Ú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

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

Např.: // v hlavičkovém souboru nebo na začátku // programu (pod include): typedef struct { char jmeno[20]; char prijmeni[20]; int rok_nar; } CLOVEK;

Např.: // v hlavičkovém souboru nebo na začátku // programu (pod include): typedef struct { char jmeno[20]; char prijmeni[20]; int rok_nar; } CLOVEK; Struktury - složený datový typ. - datový typ jehož položky jsou jiné proměnné: - používá obvykle dohromady s příkazem typedef nechci vypisovat opakovaně složitou deklaraci pomocí typedef udělám nový datový

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

- 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

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd 7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená

Více

Anotace. Pointery. Martin Pergel,

Anotace. Pointery. Martin Pergel, Anotace Pointery K čemu jsou dynamické proměnné? K mnoha algoritmům bychom potřebovali pole proměnlivé délky nebo aspoň jinou datovou strukturu proměnlivé délky. Jak implementovat frontu a zásobník? Použijeme

Více

Ukazatele #2, dynamická alokace paměti

Ukazatele #2, dynamická alokace paměti Ukazatele #2, dynamická alokace paměti BI-PA1 Programování a Algoritmizace 1 Miroslav Baĺık, Ladislav Vagner a Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních

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

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

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19 C++ přetěžování funkcí a operátorů 1 Přetěžování funkcí jazyk C++ umožňuje napsat více funkcí se stejným názvem, těmto funkcím říkáme přetížené přetížené funkce se musí odlišovat typem nebo počtem parametrů,

Více

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

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

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

Matematika v programovacích

Matematika v programovacích Matematika v programovacích jazycích Pavla Kabelíková am.vsb.cz/kabelikova pavla.kabelikova@vsb.cz Úvodní diskuze Otázky: Jaké programovací jazyky znáte? S jakými programovacími jazyky jste již pracovali?

Více