M2160 – Úvod do programování II RNDr. Jaroslav PELIKÁN, Ph.D. katedra počítačových systémů a komunikací Fakulta informatiky Masarykovy univerzity Botanická 68a, BRNO Kanc.: A209, : +420 –
28/09/20162 Organizace předmětu Předmět M2160 má hodinovou dotaci 2/2, tj. 2 hodiny přednáška a 2 hodiny cvičení Rozvrh hodin: –1 přednáška: pátek 10:00 – 11:50 (C525) –1 cvičební skupina: čtvrtek 14:00 – 15:50 (A215) Předmět je ukončen kolokviem
28/09/20163 Požadavky ke kolokviu Zápočet: –„úspěšné“ napsání průběžných písemek –splnění všech domácích úkolů (v termínu) –maximálně dvě neomluvené neúčasti na cvičení Zápočet musí být zapsán na ISu nejpozději 12 hodin před začátkem kolokvia Kolokvium probíhá ve dvou částech: –vypracování programu (na počítači): 90 minut –diskuse nad řešeným problémem + další otázky
28/09/20164 Osnova (1) Datový typ množina Datový typ záznam, příkaz with Datový typ soubor: –typový soubor –textový soubor Datový typ ukazatel: –dynamické proměnné –dynamické datové struktury Vyhodnocování aritmetického výrazu
28/09/20165 Osnova (2) Programové jednotky (units) Předávání parametrů z příkazové řádky OS Příkazy Goto, Break, Continue, Exit, Halt Složitost algoritmů Úvod do objektově orientovaného progra- mování Vývojové prostředí Borland Delphi: –vývoj programů v prostředí MS-Windows Kolokvium
28/09/20166 Literatura (1) Pelikán, Jaroslav: Prezentace k přednáškám z předmětu M2160 Úvod do programování II Borland Pascal 7.0 manuál, Borland International, 1992 Hála, Tomáš: Učebnice Pascalu, Computer Press 2002 Drózd, Januš – Kryl, Rudolf: Začínáme s programováním, Praha: Grada 1992
28/09/20167 Literatura (2) Wirth Niklaus: Algoritmy a štruktúry údajov: Algorithm + Data Structures = Programs, Bratislava Alfa, 1989 Teixeira, S. – Pacheco, X.: Mistrovství v Delphi 6, Computer Press 2002 Lischner, R.: Delphi v kostce, Computer Press 2000
28/09/20168 Typ množina (set) (1) Definice typu množina je tvaru: type T = set of T z ; kde T: jméno nově definovaného typu množina T z : označení ordinálního typu (identifikátor nebo popis typu), kterému se říká bázový typ Hodnotami proměnných typu T jsou všechny podmnožiny bázového typu T z a prázdná množina
28/09/20169 Typ množina (set) (2) Např.: type zakladnibarva = (cervena, zelena, modra); barva = set of zakladnibarva; –Hodnotami proměnných typu barva jsou: [cervena, zelena, modra], [cervena, zelena], [cervena, modra], [zelena, modra], [cervena], [zelena], [modra], []
28/09/ Typ množina (set) (3) Konstrukce hodnoty množina spočívá ve výčtu množinových elementů, které jsou odděleny čárkami a uzavřeny do hranatých závorek Elementy mohou být dány výrazem bázové- ho typu nebo ve tvaru m..n, který představu- je množinu všech prvků i bázového typu takových, že m i n
28/09/ Typ množina (set) (4) [] je prázdná množina stejně jako [m..n], kde m > n. Příklady: [6], [i+j, i–j], [’0’..’9’], [’a’, ’b’, ’c’] Operátory aplikovatelné na operandy typu množina s kompatibilními bázovými typy: + sjednocení
28/09/ Typ množina (set) (5) * průnik – množinový rozdíl =, test na rovnost (nerovnost) =, test na, množinovou inkluzi intest na příslušnost k množině Příklad: if (ch = ’a’) or (ch = ’e’) or (ch = ’i’) or (ch = ’o’) or (ch = ’u’) or (ch = ’y’) then P;
28/09/ Typ množina (set) (6) lze nahradit: if ch in [ ’a’, ’e’, ’i’, ’o’, ’u’, ’y’] then P; Implementace Pascalu obvykle omezují rozsah bázového typu množina v závislosti na délce posloupností z 0 a 1, kterými jsou reprezentovány množiny Díky této reprezentaci však mohou probíhat množinové operace velmi rychle
28/09/ Typ množina (set) (7) Omezení Free Pascalu: –bázový typ nesmí mít více než 256 hodnot –ordinální hodnoty dolní a horní meze bázového typu musí ležet uvnitř intervalu Poznámka: Množina je statický a homogenní datový typ
28/09/ Typ záznam (record) (1) Hodnoty typu záznam jsou tvořeny složka- mi různých typů záznam je heterogenní datový typ Tyto složky (jejich počet a typ) jsou pevně dány definicí typu záznam, popř. deklarací proměnné typu záznam záznam je statický datový typ
28/09/ Typ záznam (record) (2) Typ záznam definujeme takto: type T = record p 11, p 12,..., p 1n 1 : T 1 ; p 21, p 22,..., p 2n 2 : T 2 ; p m1, p m2,..., p mn m : T m ; end;
28/09/ Typ záznam (record) (3) p ij značí identifikátory složek, kterým se říká položky Položky záznamu mohou být dále strukturovaného typu (např. pole, množina nebo opět záznam)
28/09/ Typ záznam (record) (4) Příklad: na základě definic typů: type den = 1..31; mesic = (leden, unor, brezen, duben, kveten, cerven, cervenec, srpen, zari, rijen, listopad, prosinec); rok = ;
28/09/ Typ záznam (record) (5) můžeme definovat typ: datum = record d: den; m: mesic; r: rok; end;
28/09/ Typ záznam (record) (6) Výběr položky (přístup k položce) záznamu se realizuje zápisem, který je tvořen identifikátorem záznamu následovaným tečkou a identifikátorem příslušné položky Je-li proměnná deklarována jako: var prijezd:datum; pak se její složky označují: prijezd.d, prijezd.m, prijezd.r
28/09/ Typ záznam (record) (7) Změna hodnoty proměnné se realizuje změnou jednotlivých položek: Např.: if prijezd.m prosinec then prijezd.m := succ (prijezd.m) else begin prijezd.m := leden; prijezd.r := prijezd.r+1; end;
28/09/ Typ záznam (record) (8) Typ záznam může mít i tzv. variantní část: type typvoz = (autobus, naklauto); Vozidlo = record cena:longint; case TV:typvoz of autobus: (pocosob:integer); naklauto: (nosnost: integer); end;
28/09/ Příkaz with (1) Slouží ke zjednodušení přístupu k položkám proměnných typu záznam Obecný tvar: with p 1, p 2,..., p n do P; kde p i : proměnná typu záznam P: příkaz, v jehož rámci je možné praco- vat přímo s položkou záznamu, aniž bychom museli uvádět proměnnou typu záznam následovanou tečkou
28/09/ Příkaz with (2) Příklad: with prijezd do if m prosinec then m := succ (m) else begin m := leden; r := r+1; end;