Základní datové struktury.

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Základní datové struktury."

Transkript

1 . Základní datové struktury. Odvozené datové struktury. Tomáš Bayer Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 1 / 45

2 Obsah přednášky 1 Datové struktury 2 Základní datové struktury Proměnná Pole Struktura Objekt 3 Odvozené datové struktury Seznam Zásobník Fronta Prioritní fronta Strom Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 2 / 45

3 Datové struktury 1. Datové struktury Data používaná programy v paměti uchovávána v datových strukturách. Data lze reprezentovat různými datovými typy. Pro efektivní práci s daty nutné zvolit vhodnou datovou strukturu a odpovídající datový typ. Dělení datových struktur: Datové struktury děleny do dvou kategorií: Základní datové struktury: Vyskytují se téměř ve všech programovacích jazycích. Za běhu programu nemění svůj rozsah. Odvozené datové struktury: Nazývány jako abstraktní datové struktury. Často implementovány jako objekty. Za běhu programu mohou měnit svůj rozsah. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 3 / 45

4 Datové struktury 10. Dělení datových struktur Dělení do dvou skupin: Základní datové struktury: Proměnná (Variable). Pole (Array). Struktura (Structure). Objekt (Object). Odvozené datové struktury: Seznam (List). Strom (Tree). Zásobník (Stack). Fronta (Query). Tabulka (Table). Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 4 / 45

5 Proměnná 11. Proměnná Pojmenované místo v paměti počítače. Je v ní uložena hodnota určitého datového typu. Deklarace proměnné: Proměnné vytvářeny pomocí deklarace. V deklaraci uveden datový typ proměnné a její identifikátor. int i; double k; Typ proměnné: Specifikace typu proměnné ovlivňuje: A) Určuje množinu hodnot, kterých proměnná může nabývat. B) Množství paměti potřebné pro její uložení. C) Operace, které lze s proměnnou provádět. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 5 / 45

6 12. Schéma paměti Základní datové struktury Proměnná 3 GB Allocated Free, reserved Allocated HEAP Free, reserved Applications Extended Allocated Memory Unalocated memory 1 MB Upper Memory BIOS, Video 640 kb STACK Allocated Conventional OS Memory. Applications Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 6 / 45

7 Proměnná 13. Alokace paměti Způsob, jakým je proměnným přidělován pamět ový prostor v RAM. 3 metody alokace paměti Statická alokace. Alokace na zásobníku. Alokace na haldě. Statická alokace paměti: Pamět přidělena pevně na celou dobu běhu programu. Přidělování paměti realizováno již v době překladu. Rozsah datových struktur musí být znám již v době překladu, což není vždy možné. Práce s proměnnými velmi rychlá a efektivní. Používáno pro proměnné deklarované v hlavním programu. double x; int cislo; Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 7 / 45

8 Proměnná 14. Alokace na zásobníku Zásobník (Stack). Používána pro lokální proměnné, které jsou deklarovány v procedurách či funkcích či při rekurzi. Pamět je alokována při volání procedury/funkce, po jejím ukončení je uvolněna. Lokální proměnné zanikají, jejich hodnoty jsou nedostupné. Dochází k úspoře paměti, nepotřebné proměnné nezabírají místo. Uvolňování úseků paměti prováděno v opačném pořadí než jejich přidělování. Nedochází ke fragmentaci paměti. Nejrychlejší... Při překročení kapacity zásobníku chyba Stack Overflow. double dist(double a, double b) { } double d=math.sqrt(a*a+b*b); return d; Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 8 / 45

9 Proměnná 15. Dynamická alokace paměti Dynamická alokace na haldě (Heap, realizován binárním stromem): Pamět přidělována na žádost programu operačním systémem, nikoliv kompilátorem. Na tyto úseky se odkazujeme pomocí speciálních proměnných typu ukazatel (pointer). Nepotřebná pamět není uvolňována implicitně, musí provést uživatel či Garbage Collector. Uvolňování úseků paměti nemusí být prováděno v opačném pořadí než její přidělování, dochází k fragmentaci paměti. Při překročení kapacity haldy chyba Heap Overflow. Point p=new Point(100,100); Výhody dynamické alokace: Proměnné existují jen po dobu, kdy jsou potřeba. Možnost vytvářet dynamické datové struktury potřebné velikosti za běhu programu. Jejich velikost nemusí být známa v době překladu. Nevýhody dynamické alokace: Dynamicky alokované proměnné nemají svůj jednoznačný identifikátor, přístup prostřednictvím ukazatele. Pomalejší přístup k datům než u statické alokace. Riziko vzniku chyb, špatná dealokace paměti. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 9 / 45

10 Proměnná 16. Problémy při dynamické alokaci Důsledky nevhodné práce s dynamicky alokovanou pamětí: Přístup na nealokované místo v paměti Přepsání vlastních dat či havárie programu. Zpravidla vede k pádu nebo si přepsání vlastních dat. Přístup do uvolněné paměti Zpravidla vede k pádu programu. Neuvolnění paměti Při náročných výpočetních procesech může nastat nedostatek paměti vedoucí k pádu aplikace. Většinou se chyba nijak neprojeví. Operační systém po skončení běhu programu tuto pamět uvolní. Opakované uvolňování téže paměti Opakované volání destruktoru. Zpravidla vede k pádu aplikace. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 10 / 45

11 Proměnná 17. Druhy proměnných Proměnné se liší dle způsobu přidělování paměti: Globální proměnné: Vytvořeny při spuštění programu, zanikají po ukončení programu. Existují po celou dobu běhu programu. Nazývány jako statické proměnné. Lokální proměnné: Deklarované ve funkcí či procedurách. Vznikají v okamžiku volání procedury/funkce, zanikají při ukončení procedury/funkce. Existují pouze po dobu běhu procedury/funkce. Nazývány jako automatické proměnné, alokovány v zásobníku. Dynamické proměnné: Vznikají za běhu programu na základě provedené alokace paměti příkazem. Mohou zanikat automaticky nebo manuálně (příkazem). Nejsou vázány na procedury/funkce. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 11 / 45

12 Proměnná 18. Přiřazovací příkaz Přiřazuje proměnné hodnotu odpovídajícího datového typu. Dochází k inicializaci hodnoty proměnné. i = 10; k = 13; Proměnné vystupují: v aritmetických operacích (výrazy) dist = sqrt((xb - xa) * (xb - xa) + (yb - ya) * (yb - ya)); v logických operacích (podmínky) if (eps > 0) předávány jako parametry funkcí či procedur distance (xa, ya, xb, ya); Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 12 / 45

13 19. Konstanty Základní datové struktury Proměnná Číselné údaje, jejichž hodnota se nemění. V praxi např. π, e, g, c, i. Konstanty celočíselné, reálné, znakové a řetězcové konstanty. Celočíselné konstanty: Celočíselné konstanty lze zapisovat v osmičkové, desítkové či šestnáctkové soustavě. Desítková soustava: 9234 Osmičková soustava: 0156 //Zacina nulou Šestnáctková soustava: 0x26AF //Zacina 0x Konstanty jsou standardně datového typu int. R = ; Hodnota typu long, za číselnou hodnotou symbol L. A = L; Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 13 / 45

14 20. Znakové konstanty Lze je zapsat následujícími způsoby. Proměnná Jedním znakem uzavřeným do apostrofů: A B C Číselnou hodnotou v ASCII tabulce (osmičková, šestnáctková soustava): \101 \102 \103 //osmickova \41 \42 \43 //sestnactkova Zápis speciálních znaků \n \r \\ \ Posloupností znaků \ uxxxx, kde XXXX představuje kód znaku v kódování UNICODE: \u000a Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 14 / 45

15 Proměnná 21. Reálné konstanty Lze je zapsat následujícími způsoby. S pevnou řádovou čárkou: V semilogaritmickém tvaru e e-1 Reálná konstanta je standardně datového typu double. Zápis v datovém typu float, za poslední číslici umístěn znak F. A = 0.1e10F; Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 15 / 45

16 22. Řetězcové konstanty Proměnná Zapisuje se jako posloupnost znaků uzavřená v uvozovkách. Pro tvorbu řetězcových konstant platí stejné zákonitosti jako pro tvorbu znakových konstant. Řetězcové konstanty mohou být na rozdíl od znakové konstanty tvořeny více než jedním znakem. Lze je zapsat následujícími způsoby. Jeden či více znaků do uvozovek (nikoliv do apostrofů). "Ahoj"; Hodnoty v ASCII/UNICODE tabulce: "Prvn\u00ED program\n v jazyce Java"; Sčítání řetězcových konstant prostřednictvím operátoru +. "prvni slovo"+"druhe slovo"; Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 16 / 45

17 Proměnná 23. Přetypování Při přiřazovacích operacích dochází ke konverzím mezi různými datovými typy přetypování. Přiřazovaná hodnota (na pravé straně) je konvertována na typ proměnné jíž přiřazujeme (na levé straně). Výsledkem změna datového typu proměnné. Varianty přetypování: Přiřazení reálné hodnoty celočíselné celočíselné hodnotě: Hodnota zaokrouhlena odříznutím desetinné části (nedochází k zaokrouhlení podle standardních pravidel!) Přiřazení hodnoty s vyšší přesností do proměnné s nižší přesností: Pokud hodnota mimo rozsah výsledného datového typu, může vést k nedefinovatelnému výsledku Implicitní vs. explicitní přetypování. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 17 / 45

18 Proměnná 24. Implicitní a explicitní přetypování Implicitní přetypování Přetypování proměnné s nižším rozsahem na proměnnou s vyšším rozsahem. Probíhá automaticky, nedochází při ní ke ztrátě informací. Pořadí: byte->short->int->long->float->double. float a = 50; double b = 30; b = a;//implicitni konverze Explicitní přetypování Přetypování proměnné s vyšším rozsahem na proměnnou s nižším rozsahem. Neproběhne automaticky,nutno vynutit ji uvedením cílového datového typu. Dochází ke ztrátě informací. Pořadí: double->float->long->int->short->byte. a = b;//ztrata presnosti, nelze provest a = (float)b;//explicitni konverze Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 18 / 45

19 Proměnná 25. Smíšené konverze Nastávají, pokud do aritmetických operací vstupují operandy smíšeného typu. Cílem co nejmenší ztráta přesnosti při aritmetických operacích. Zákonitosti: A) Pokud je jeden z operandů typu double, bude výsledkem operace datový typ double. B) Pokud je jeden z operandů typu float, bude výsledkem operace datový typ float. C) Pokud je jeden z operandů typu long, bude výsledkem operace datový typ long. Pozor na zlomky: Správně: int a = 5;//int int b = 10;//int int c = a / b;//vysledek=0 int a = 5.0;//double int b = 10;//int int c = a / b;//vysledek=0.5; Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 19 / 45

20 Proměnná 26. Aritmetické operátory Slouží k realizaci základních aritmetických operacích. Vyhodnocování z leva do prava dle priority: A) nejprve operace násobení/dělení/celočíselné dělení, B) poté se vyhodnotí zbývající operace. Změna priority vyhodnocování s použitím závorek. Počet pravých a levých závorek by měl být stejný. int a = * 3;//a=12 int a = (3 + 3) * 3;//18 Přehled aritmetických operátorů: Operátor Popis + Sčítání - Odečítání * Násobení / Dělení % Zbytek po celočíselném dělení. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 20 / 45

21 27. Operátory přiřazení Proměnná Zkrácený zápis běžných aritmetických operací. Umožňuje efektivnější zápis aritmetických operací. Přehled operátorů přiřazení. Operátor a+=5 a-=5 a*=5 a/=5 Úplný zápis a=a+5 a=a-5 a=a*5 a=a/5 Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 21 / 45

22 Proměnná 28. Operátory inkrementace a dekrementace Zvyšování či snižování hodnoty proměnné o 1. Představují zdvojené operátory ++ resp.. Předcházející inkrementace/dekrementace: Operátory inkrementace/dekrementace umístěny před proměnnou. Nejprve se provede inkrementace/dekrementace, poté přiřazovací příkaz. int a = 5, b = 5; int c = ++a;//a = 6, c = 6; int d = --b;//b = 4, d = 4; Následná inkrementace/dekrementace: Operátory inkrementace/dekrementace umístěny za proměnnou. Nejprve se provede přiřazovací příkaz, poté inkrementace/dekrementace. int a = 5, b = 5; int c = a++;//a = 6, c = 5; int d = b--;//b = 4, d = 5; Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 22 / 45

23 Proměnná 29. Relační operátory Použití při konstrukci logických podmínek. Binární i unární booleovské operátory. Různá priorita, nejvyšší negace, poté konjunkce, ostatní. Změna pořadí závorkami. Přehled relačních operátorů: Operátor Popis == Rovná se!= Nerovná se && Logický součin Logický součet! Negace < Menší > Větší <= Menší nebo rovno >= Větší nebo rovno Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 23 / 45

24 30. Pole Základní datové struktury Pole Posloupnost proměnných stejného typu uložených v paměti chápaných jako jeden celek. Každé pamět ové místo reprezentováno prvkem pole. K prvku pole přistupujeme prostřednictvím indexu, Index pole nesmí být překročen! Deklarace pole: Uváděn datový typ, identifikátor, počet prvků pole. Jednorozměrné pole: Prvky pole tvoří proměnné, nikoliv pole nějakého jiného pole. Představuje ho n prvků s indexy 0,..., n 1. double pole[10]; //deklarace pole s deseti prvky pole[0]; //prvni prvek pole pole[9]; //posledni prvek pole Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 24 / 45

25 31. Vícerozměrné pole Pole Pole označováno jako N-rozměrné. Prvky N-rozměrného pole tvoří prvky (N 1)-rozměrného pole. Nejčastěji používáno dvojrozměrné pole, N = 2. Prvky dvojrozměrného pole tvoří prvky jednorozměrného pole. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 25 / 45

26 32. Dvojrozměrné pole Pole Tvořeno m řádky a n sloupci, představuje matici. Řádkový index: 0,..., m 1. Sloupcový index: 0,..., n 1. Nejrychleji se mění poslední index, tj index nejvíce vpravo. Deklarace dvourozměrného pole: double pole[6][11]; //deklarace 2D pole 6x10 prvku pole[0][0]; //prvni prvek pole pole[5][10]; //posledni prvek pole Využití dvojrozměrných polí: reprezentace tabulek, rastrů. Pro práci s poli používány cykly (opakování činností). V některých jazycích pole deklarována jako dynamické proměnné. Operace s 1D neuspořádaným polem (přístup, hledání) jsou prováděny v lineárním čase, s 2D neuspořádaným polem v kvadratickém čase. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 26 / 45

27 Pole 33. Pole v Javě S polem v Javě pracujeme prostřednictvím odkazu (tj. podobně jako s objekty). 2 kroky: Deklarace odkazu na pole Ve tvaru datovy_typ [] identifikator. Neuvádíme počet prvků. double [] pole; S polem zatím nelze pracovat, nebyla alokována pamět vyvolání výjimky. Alokace paměti Vytvoření vlastního pole přidělení potřebné paměti, uvádíme počet prvků. Nastavení odkazu tak, aby ukazoval na vytvořené pole. pole=new double[10]; Oba kroky lze spojit do jednoho: double [] pole=new double[10]; Prvky pole celočíselného/ reálného typu automaticky inicializovány na hodotu 0, prvky polí odkazů (tj. referencí) inicializovány na hodnotu null. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 27 / 45

28 Pole 34. Ilustrace práce s polem v Javě double [] pole Adresa Hodnota xxx xxx xxx xxx xxx xxx pole=new double[3] pole[0] pole[1] pole[2] Adresa Hodnota 56 xxx xxx Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 28 / 45

29 Pole 35. Další operace s polem v Javě Délka pole: Představuje počet prvů, lze zjistit prostřednictvím length. pole.length; Hodnota length-1 je nastavována jako nejvyšší horní index pole. pole[pole.length-1]; //Posledni prvek pole pole[pole.length]; //Prekrocen index, prace s nealokovanou Inicializované pole: Pole inicializované předem danými hodnotami, nepoužívá se konstrukce s new (pouze konvence). double [] pole={2.0, 4.4,17.85}; //1D pole double [][] pole2d={{2.0, 4.4},{17.85, 0.3}, {10.9, 6.4}}; Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 29 / 45

30 36. Kopírování polí v Javě Pole Nelze použít přiřazovací příkaz, provádí kopírování odkazů, nikoliv kopírování skutečného obsahu polí. int [] pole1={1,2,3}; int [] pole2=new int [3]; pole2=pole1;//zkopirovani odkazu, nikoliv obsahu pole! Kopírování obsahu pole po prvku int [] pole1={1,2,3}; int [] pole2=new int [3]; for (int i=0;i<pole1.length;i++) pole2[i]=pole1[i]; Použití příkazu arraycopy arraycopy(zdroj,pocat_index,cil,cilovy_index,pocet_prvku); Ukázka kopie dvou polí int [] pole1={1,2,3}; int [] pole2=new int [3]; System.arraycopy(pole1,0,pole2,0,pole1.length); Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 30 / 45

31 37. Ukázka nevhodného kopírování polí Pole int [] pole1={1,2,3}; pole1[0] pole1[1] pole1[2] Adresa Hodnota 56 xxx xxx xxx int [] pole2=new int[3]; pole2[0] pole2[1] pole2[2] Adresa Hodnota 105 xxx xxx xxx pole[2]=pole1 pole2[0] pole2[1] pole2[2] Adresa Hodnota 105 xxx xxx xxx Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 31 / 45

32 Pole 38. Ukázka správného kopírování polí int [] pole1={1,2,3}; pole1[0] pole1[1] pole1[2] Adresa Hodnota 56 xxx xxx int [] pole2=new int[3]; pole2[0] pole2[1] pole2[2] Adresa Hodnota 105 xxx xxx arraycopy(pole1,0,pole2,0,pole1.length); pole2[0] pole2[1] pole2[2] Adresa Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 32 /

33 39. Struktura (Záznam) Struktura Skupina proměnných různých typů, které se dohromady chovají jako celek. Na rozdíl od pole se jedná o strukturu heterogenní. Deklarace struktury: Jednotlivé položky struktury deklarovány jako samostatné proměnné. struct Point { double x, y; //Bod ma souradnice x,y }; //Ukoncena strednikem Při práci se strukturami je používán princip kvalifikace. Nejprve vytvořena proměnná datového typu struktury. Pro přístup k jednotlivým složkám struktury používáme proměnnou datového typu struktury doplněnou jménem proměnné. Point p; //Promenna typu point p.x= ; //nastaveni souradnice x p.y= ; //Nastaveni souradnice y Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 33 / 45

34 Objekt 40. Objekt V objektově orientovaném programování objekty představují komponenty nehmotného charakteru. Jsou abstrakcí a zjednodušením svých hmotných protějšků. Vykazují určité vlastnosti a chování. Rozhraní objektu: umožňuje vzájemnou komunikaci objektů. Podrobnosti v kapitole věnované OOP. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 34 / 45

35 41. Rozhraní objektu Základní datové struktury Objekt Objekt tvořen: Datovou strukturou Představována proměnnými různých datových typů. Ovlivňuje vlastnosti objektu. Tato část objektu bývá označována jako soukromá, z vnějšku je před jinými objekty ukryta (princip zapouzdření). Metodami Definují operace, které je možno s daty provádět. Určují chování objektu. Tato část objektu bývá označována jako veřejná. Patří mezi dynamické proměnné: vytvářeny a rušeny na pokyn programátora v libovolný okamžik. S dynamicky vytvořenými objekty pracujeme ve speciální části paměti zvané halda (heap). Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 35 / 45

36 Odvozené datové struktury Seznam 42. Seznam Datová struktura, tvoří ji uspořádaná posloupnost položek. Položky uspořádány podle určité hodnoty, tzv. klíče. Jednotlivé položky nemusejí být umístěny přímo za sebou každá položka obsahuje odkaz na následující položku. Patří mezi rekurzivní struktury, každá položka obsahuje odkaz na položku stejného typu. Vlastnost seznamu: Rychlé přidávání prvků na počátek/konec seznamu (O(N)). Vhodný pro procházení prvků popořadě sekvenční uspořádání dat. Nevhodný pro náhodný přístup k prvkům. Typy seznamů: Jednosměrný seznam Obousměrný seznam Kruhový seznam Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 36 / 45

37 Odvozené datové struktury 43. Ukázky seznamů. Seznam Jednosměrný seznam: každý prvek seznamu odkazuje na předchozí resp. následující prvek seznamu. První resp. poslední prvek seznamu neodkazuje nikam (NULL). Obousměrný seznam: každý prvek seznamu obsahuje odkaz na předchozí a následující prvek seznamu. První a poslední prvek seznamu neodkazují nikam (NULL). Kruhový seznam: jednosměrný i obousměrný. Poslední prvek seznamu pak obsahuje odkaz na první prvek seznamu, resp. první prvek seznamu obsahuje odkaz na poslední prvek seznamu. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 37 / 45

38 Odvozené datové struktury Zásobník 44. Zásobník Ze zásobníku odebíráme data v opačném pořadí, než v jakém jsme je do něj uložili. Pracovat lze pouze s prvkem, který je na vrcholu zásobníku. Reprezentuje model LIFO (Last In - First Out). V běžném životě model zásobníku např. batoh, vyndaváme z něj věci v opačném pořadí, než je do něj ukládáme. Použití při zpracovávání dat v sekvenčním pořadí. Dno zásobníku: Nejspodnější prvek v zásobníku. Přidán do zásobníku jako první. Vrchol zásobníku: Nejvrchnější prvek v zásobníku. Přidán do zásobníku jako poslední. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 38 / 45

39 Odvozené datové struktury 45. Ukázka zásobníku Zásobník Použití: náhrada rekurze, vyhodnocování výrazů... Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 39 / 45

40 Odvozené datové struktury Fronta 46. Fronta Z fronty odebíráme data ve stejném pořadí, v jakém jsem je do ní uložili. Pracovat lze pouze s prvkem, který je na čele fronty. Reprezentuje model FIFO (First In-First Out). Využití při sekvenčním zpracování dat. Ve frontě nemůžeme předbíhat. Existuje i fronta s předbíháním, tzv. prioritní fronta. Konec fronty: Prvek na poslední pozici ve frontě. Do fronty přidán jako poslední. Čelo fronty: Prvek na první pozici ve frontě, Do fronty přidán jako první. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 40 / 45

41 Odvozené datové struktury Fronta 47. Ukázka fronty a kruhové fronty Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 41 / 45

42 Odvozené datové struktury Prioritní fronta 48. Prioritní fronta Nazývána fronta s předbíháním. Charakteristika prioritní fronty: Varianta fronty, u které hraje roli ohodnocení prvku. Ohodnocení realizováno ohodnocovací funkcí. Prvek s vyšší prioritou může přeběhnout prvek s nižší prioritou. Princip prioritní fronty: 1 Prvky přidávány do fronty v pořadí, v jakém jsou na vstupu. 2 Prvky odebírány z fronty na základě ohodnocení (priority prvku). Prvky s nejvyšší prioritou odebrány jako první. Časté použití v geoinformatice, souvislost s technikou Sweep Line (zametací přímka). Ohodnocením např. souřadnice x, y, vzdálenost, váha, atd. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 42 / 45

43 Odvozené datové struktury Strom 49. Strom Takové uspořádání dat, kdy každý prvek má nejvýše jednoho předchůdce a může mít více než jednoho následníka. Strom tvořen vrcholy (uzly). Typy uzlů: Listy: Uzly bez následníka. Není k nim připojen žádný podstrom. Kořen: Uzel bez předchůdce=kořen. Existuje právě 1. Vnitřní uzly: Uzly, které nejsou listem ani kořenem. Patří mezi rekurzivní datové struktury: každý uzel je současně kořenem stromu a zároveň listem stromu vyšší úrovně. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 43 / 45

44 50. Dělení stromů Odvozené datové struktury Strom Podle maximálního počtu potomků, stupeň uzlu n. Unární strom: n = 1 (Seznam). Binární strom: n = 2. Ternární strom: n = 3. Stromy vyšších řádů se zpravidla nepoužívají. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 44 / 45

45 Odvozené datové struktury Strom 51. Uspořádání dat v binárním stromu Pro každý uzel U platí, že všechny údaje v levém podstromu jsou menší než U a všechny údaje v pravém podstromu větší než U. Tato organizace umožňuje efektivní práci s daty uloženými ve stromu: např. vyhledávání se složitostí O(log(N)). Ukázka binárního stromu. Tomáš Bayer (Katedra aplikované Základní geoinformatiky datové struktury. a kartografie, Přírodovědecká fakulta UK.) 45 / 45

Datové struktury a datové typy.

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

Více

Dynamické datové struktury I.

Dynamické datové struktury I. Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz

Více

Dynamické datové struktury IV.

Dynamické datové struktury IV. Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra

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

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

Dynamické datové struktury III. Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované

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

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

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

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

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

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

Lineární datové struktury

Lineární datové struktury Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Lineární datové

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

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

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

Ú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

Spojová implementace lineárních datových struktur

Spojová implementace lineárních datových struktur Spojová implementace lineárních datových struktur doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB

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

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

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

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

Čísla a číselné soustavy.

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

Více

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

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

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

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

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

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20 Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................

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

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické Java reprezentace dat, výrazy A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické Dva základní přístupy k imperativnímu programování Strukturované procedurální Objektové V PR1

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

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

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

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N Struktura (union) - struktura a union jsou složené typy, které "v sobě" mohou obsahovat více proměnných - struktura obsahuje v každém okamžiku všechny své proměnné, union obsahuje (=je "aktivní") pouze

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

Č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

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

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

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

Více

Racionální čísla, operátory, výrazy, knihovní funkce

Racionální čísla, operátory, výrazy, knihovní funkce Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Racionální čísla, operátory, výrazy, knihovní funkce BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík

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

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

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

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

Více

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

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

Stromy, haldy, prioritní fronty

Stromy, haldy, prioritní fronty Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík

Více

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové

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

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

Teoretické minimum z PJV

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

Více

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti. Seznamy a stromy Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti. Klíčové pojmy: Seznam, spojový seznam, lineární seznam, strom, list, uzel. Úvod

Více

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy Ústav radioelektroniky Vysoké učení technické v Brně Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy Přednáška 8 doc. Ing. Tomáš Frýza, Ph.D. listopad 2012 Obsah

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

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

LEKCE 6. Operátory. V této lekci najdete:

LEKCE 6. Operátory. V této lekci najdete: LEKCE 6 Operátory V této lekci najdete: Aritmetické operátory...94 Porovnávací operátory...96 Operátor řetězení...97 Bitové logické operátory...97 Další operátory...101 92 ČÁST I: Programování v jazyce

Více

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit Jednoduché stránkování Operační systémy Přednáška 8: Správa paměti II Hlavní paměť rozdělená na malé úseky stejné velikosti (např. 4kB) nazývané rámce (frames). Program rozdělen na malé úseky stejné velikosti

Více

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 Úlohy- 2.cvičení 1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 2. Převeďte dané desetinné číslo do dvojkové soustavy (DEC -> BIN): a) 0,8125 10 b) 0,35 10

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

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

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

ABSTRAKTNÍ DATOVÉ TYPY

ABSTRAKTNÍ DATOVÉ TYPY Jurdič Radim ABSTRAKTNÍ DATOVÉ TYPY Veškeré hodnoty, s nimiž v programech pracujeme, můžeme rozdělit do několika skupin zvaných datové typy. Každý datový typ představuje množinu hodnot, nad kterými můžeme

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

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky 25 Pole Datová struktura kolekce elementů (hodnot či proměnných), identifikovaných jedním nebo více indexy, ze kterých

Více

Kolekce, cyklus foreach

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

Více

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

Dynamická alokace paměti

Dynamická alokace paměti Dynamická alokace paměti doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Dynamická alokace

Více

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 KAPITOLA 1 Na úvod o Javě 15 Počítačový program 15 Vysokoúrovňový programovací

Více

Základní stavební prvky algoritmu

Základní stavební prvky algoritmu Základní stavební prvky algoritmu Podmínka. Cyklus for, while, do-while. Funkce, metody. Přetěžování. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká

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

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

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

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

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění

Více

Přednáška. Správa paměti II. 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 II. 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 II. 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

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

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

Více

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

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

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

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

Více

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

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Metody přidělování paměti Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Důležitá hlediska jazykových konstrukcí: Dynamické typy Dynamické

Více

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

PB161 Programování v jazyce C++ Přednáška 4 PB161 Programování v jazyce C++ Přednáška 4 Dynamická alokace Kopírovací konstruktor Přetypování v C++ Nikola Beneš 12. října 2015 PB161 přednáška 4: dynamická alokace, kopírovací konstruktor, casting

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

Profilová část maturitní zkoušky 2017/2018

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

Více

PODPROGRAMY PROCEDURY A FUNKCE

PODPROGRAMY PROCEDURY A FUNKCE PODPROGRAMY PROCEDURY A FUNKCE Programy bez podprogramů Příklady: a) Napište program, který na obrazovku nakreslí čáru složenou ze znaků pomlčka. program Cara; b) Napište program, který na obrazovku nakreslí

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

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

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

Časová a prostorová složitost algoritmů

Časová a prostorová složitost algoritmů .. Časová a prostorová složitost algoritmů Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Hodnocení algoritmů Programovací techniky Časová a prostorová

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 28. Otázka : Vyšší programovací jazyky a jejich moderní rysy (správa paměti, implementace objektově orientovaných prvků, výjimky) Obsah : 1. Rozdělení

Více

Funkce, intuitivní chápání složitosti

Funkce, intuitivní chápání složitosti Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Funkce, intuitivní

Více

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

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

Více

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

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

Více

Úvod do programování 7. hodina

Úvod do programování 7. hodina Úvod do programování 7. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Syntax Znaky Vlastní implementace

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

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

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

Více

TÉMATICKÝ OKRUH TZD, DIS a TIS

TÉMATICKÝ OKRUH TZD, DIS a TIS TÉMATICKÝ OKRUH TZD, DIS a TIS Číslo otázky : 13. Otázka : Základní datové struktury (pole, zásobník, binární strom atd.), datové struktury vhodné pro fyzickou implementaci relačních dat v SŘBD (hašovací

Více

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných jakési nádoby na hodnoty jsou různých typů při běžné

Více

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

Základy jazyka C. Úvod do programování 1 Tomáš Kühr Základy jazyka C Úvod do programování 1 Tomáš Kühr Organizační záležitosti Konzultace Pracovna 5.043 Pondělí 9.30 11.30, středa 10.00 11.30 a 13.00 14.30 (oficiální) Pátek 8.00 9.30 (někdy), 12.30-13.00

Více

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

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

Více