Algoritmy. BI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel

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

Download "Algoritmy. BI-PA1 Programování a Algoritmizace 1. Miroslav Baĺık, Ladislav Vagner a Josef Vogel"

Transkript

1 Algoritmy 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 technologíı České vysoké učení technické v Praze xvagner@fit.cvut.cz, vogeljos@fit.cvut.cz 3., 5. a 6. října 2017

2 PA1 - Přednášky 1 Úvod, algoritmy 2 Proměnné, základní vstup a výstup 3 Výrazy 4 Větvení, cykly 5 Funkce 6 Pole, řetězce 7 Struktury, ukazatele #1 8 Ukazatele #2 9 Složitost algoritmů 10 Rekurze 11 Spojové seznamy 12 Stromy, soubory 13 Moduly, ADT M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 2/55

3 Přehled Algoritmy úvod. Algoritmy vlastnosti, příklady. Programovací jazyky úvod. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 3/55

4 Algoritmus Definice: Algoritmus je konečná posloupnost operací vedoucí k vyřešení určité třídy problémů. Algoritmus je tvořen seznamem jednoznačně definovaných příkazů. Algoritmus zajišt uje, že očekávané výsledky budou dosaženy pro jakákoli přípustná vstupní data. Výsledky musí být nalezeny po konečném počtu kroků. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 4/55

5 Algoritmus vlastnosti Hromadnost algoritmy jsou určeny pro řešení celé třídy problémů, nikoli pouze pro jediný konkrétní problém. Konkrétní problém (instance problému) je zadána pomocí vstupních dat. Determinovanost každý krok algoritmu je jednoznačně definován. Nemůže zde být nic náhodného. Opakování výpočtu pro stejná vstupní data musí vést ke stejným výsledkům. Resultativnost Každá přípustná vstupní data vedou k požadovaným výsledkům. Konečnost Pro každá přípustná vstupní data se po konečném počtu kroků dojde k výsledkům. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 5/55

6 Algoritmus vlastnosti (pokračování) Vstup Konkrétní instance problému je dána vstupními daty. Výstup Požadované výsledky jsou tvořeny výstupními daty. Složitost obvykle nás zajímají algoritmy, které jsou efektivní z hlediska: rychlosti (doba výpočtu), pamět ového prostoru (velikost potřebné paměti). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 6/55

7 Jak popsat algoritmus Přirozený jazyk. Vývojový diagram (flowchart). Struktogram (Nassi-Shneidermann diagram). Pseudokód. Programovací jazyk (např. C/C++/Java... ). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 7/55

8 Problém #1 planeta Země a myš Předpokládejme, že naše Země je dokonalá koule. Je těsně omotána okolo rovníku zcela nepružnou mašĺı. Když tuto mašli prodloužíme o jeden metr a natáhneme ji rovnoměrně vysoko nad rovník, vznikne jistá mezera. Je třeba určit, zda se pod mašĺı protáhne myš. Dále uvažme obdobný problém pro Měsíc. (obraz Země - NASA) M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 8/55

9 Řešení #1 (naivní) Řešení pro Zemi: 1 Chytím myš (musí být živá, bude prolézat). 2 Seženu dlouhou mašli. 3 Omotám ji těsně okolo rovníku. 4 Přidám jeden metr. 5 Natáhnu mašli rovnoměrně vysoko nad rovník. 6 Vhodně motivovanou myš požádám, aby zkusila prolézt. 7 Zapíšu výsledek. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 9/55

10 Řešení #1 (naivní) - pokračování Modifikace pro Měsíc: 1 Seženu grant. 2 Koupím vesmírnou lod, skafandr pro sebe a myš. 3 Pokračuji jako na Zemi. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 10/55

11 Řešení #1 vyhodnocení Skončí? Algoritmus musí skončit v konečném počtu kroků. Tento počet kroků může být značně velký (to závisí na velikosti problému a na jeho složitosti), ale musí být konečný pro každá přípustná vstupní data. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 11/55

12 Řešení #1 vyhodnocení Skončí? Algoritmus musí skončit v konečném počtu kroků. Tento počet kroků může být značně velký (to závisí na velikosti problému a na jeho složitosti), ale musí být konečný pro každá přípustná vstupní data. Ano, náš algoritmus skončí. Je deterministický? Každý krok algoritmu musí být jednoznačně a přesně definován; v každé situaci musí být naprosto zřejmé, co a jak se má provést, jak má provádění algoritmu pokračovat. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 11/55

13 Řešení #1 vyhodnocení Skončí? Algoritmus musí skončit v konečném počtu kroků. Tento počet kroků může být značně velký (to závisí na velikosti problému a na jeho složitosti), ale musí být konečný pro každá přípustná vstupní data. Ano, náš algoritmus skončí. Je deterministický? Každý krok algoritmu musí být jednoznačně a přesně definován; v každé situaci musí být naprosto zřejmé, co a jak se má provést, jak má provádění algoritmu pokračovat. Náš algoritmus je deterministický, s jistými omezeními. Nemůžeme zajistit deterministické chování myši. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 11/55

14 Řešení #1 vyhodnocení (pokračování) Je univerzální? Algoritmy jsou navrhovány nikoli pro řešení jediného problému, ale musí řešit celou třídu problémů. Např. nedává smysl vytvářet algoritmus pro výpočet 7 4, ale algoritmus pro násobení dvou zadaných celých čísel. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 12/55

15 Řešení #1 vyhodnocení (pokračování) Je univerzální? Algoritmy jsou navrhovány nikoli pro řešení jediného problému, ale musí řešit celou třídu problémů. Např. nedává smysl vytvářet algoritmus pro výpočet 7 4, ale algoritmus pro násobení dvou zadaných celých čísel. Náš algoritmus je univerzální, muže být použit pro různé vesmírné objekty a různé živočichy. Akceptuje nějaké vstupy? Algoritmy obvykle vyžadují nějaký vstup pro popis instance problému. Tyto vstupy jsou zpracovány na začátku nebo v průběhu provedení algoritmu. Vstupní hodnoty jsou omezeny na určitou množinu povolených vstupů. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 12/55

16 Řešení #1 vyhodnocení (pokračování) Je univerzální? Algoritmy jsou navrhovány nikoli pro řešení jediného problému, ale musí řešit celou třídu problémů. Např. nedává smysl vytvářet algoritmus pro výpočet 7 4, ale algoritmus pro násobení dvou zadaných celých čísel. Náš algoritmus je univerzální, muže být použit pro různé vesmírné objekty a různé živočichy. Akceptuje nějaké vstupy? Algoritmy obvykle vyžadují nějaký vstup pro popis instance problému. Tyto vstupy jsou zpracovány na začátku nebo v průběhu provedení algoritmu. Vstupní hodnoty jsou omezeny na určitou množinu povolených vstupů. Ano, náš algoritmus řeší daný problém pro libovolnou myš, Zemi i Měsíc (je dán poloměr). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 12/55

17 Řešení #1 vyhodnocení (pokračování) Poskytuje výsledky? Algoritmus bez výsledků není moc užitečný. Alespoň nějaký výsledek je požadován, např. zda problém byl vyřešen. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 13/55

18 Řešení #1 vyhodnocení (pokračování) Poskytuje výsledky? Algoritmus bez výsledků není moc užitečný. Alespoň nějaký výsledek je požadován, např. zda problém byl vyřešen. Ano, náš algoritmus má výsledek - odpověd ano či ne. Je efektivní? Algoritmy mohou být neefektivní, pokud provádějí kroky, jež nejsou nezbytné. Neefektivnost může být jakkoli vysoká. Např. algoritmus pro Měsíc může být použit i pro Zemi (grant, skafandr,... ). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 13/55

19 Řešení #1 vyhodnocení (pokračování) Poskytuje výsledky? Algoritmus bez výsledků není moc užitečný. Alespoň nějaký výsledek je požadován, např. zda problém byl vyřešen. Ano, náš algoritmus má výsledek - odpověd ano či ne. Je efektivní? Algoritmy mohou být neefektivní, pokud provádějí kroky, jež nejsou nezbytné. Neefektivnost může být jakkoli vysoká. Např. algoritmus pro Měsíc může být použit i pro Zemi (grant, skafandr,... ). Náš algoritmus nepatří mezi efektivní. Dokonce i verze pro Zemi je neefektivní. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 13/55

20 Řešení #2 (vylepšené) 1 Zjistíme poloměr vesmírného objektu, necht to je r [metr]. 2 Změřme myš, necht její výška je h [metr]. 3 Vypočteme obvod vesmírného objektu: c = 2πr [metr]. 4 Vypočteme poloměr prodloužené mašle: r b = c+1 2π [metr]. 5 Otestujme, zda r + h r b. Když je nerovnost splněna, je odpověd ano (myš podleze pod mašĺı), jinak je odpověd ne. Není třeba modifikace pro Měsíc, ani pro jiné vesmírné objekty. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 14/55

21 Vsuvka otestujte své odhady Předpokládejme stejný problém pro: Měsíc (poloměr 1737 km), Zemi (poloměr 6378 km), Slunce (poloměr km), Mléčnou dráhu (poloměr přibližně km). a předpokládejme tyto živočichy: mravenec (3 mm), myš (3 cm), kotě (10 cm), pes (50 cm). kůň (2 m). Pro které kombinace bude výsledek ano? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 15/55

22 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

23 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

24 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

25 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

26 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

27 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

28 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

29 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano ano ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

30 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano ano ano ne ne Slunce M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

31 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano ano ano ne ne Slunce ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

32 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano ano ano ne ne Slunce ano ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

33 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano ano ano ne ne Slunce ano ano ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

34 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano ano ano ne ne Slunce ano ano ano ne ne Mléčná dráha M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

35 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano ano ano ne ne Slunce ano ano ano ne ne Mléčná dráha ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

36 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano ano ano ne ne Slunce ano ano ano ne ne Mléčná dráha ano ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

37 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano ano ano ne ne Slunce ano ano ano ne ne Mléčná dráha ano ano ano M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

38 Vsuvka otestujte své odhady objekt mravenec myš kotě pes kůň Měsíc ano ano ano ne ne Země ano ano ano ne ne Slunce ano ano ano ne ne Mléčná dráha ano ano ano ne ne Výsledek je stejný pro jakýkoli poloměr objektu. Je tedy poloměr objektu nutný pro výpočet? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 16/55

39 Řešení #3 (ještě více vylepšené) V řešení #2, jsme potřebovali porovnat: r + h r b t.j. h r b r kde r b r = 2πr + 1 2π r = r + 1 2π r = 1 2π [metr] Tedy, vše co jsme potřebujeme porovnat: h s 1 2π. Všimněte si, že finální formule neobsahuje vůbec poloměr objektu r. Tedy poloměr objektu je nepotřebný vstupní údaj, který pouze komplikuje a zdržuje výpočet. Podleze každý živočich, jehož výška je menší než 1 2π m 16 cm. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 17/55

40 Řešení #3 (ještě více vylepšené) 1 Změřme živočicha, necht je jeho výška h [metr]. 2 Otestujme, zda h 1 2π. Když nerovnost platí, je výsledek ano (živočich může podlézt pod mašĺı), neplatí-li nerovnost, je výsledek ne. Není třeba žádná modifikace pro jiné objekty. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 18/55

41 Problém #2 GCD Je třeba najít největší společný dělitel dvou přirozených čísel (Greatest Common Divisor - GCD). GCD čísel x a y je přirozené číslo z, pro které platí: x = z k, k je nějaké přirozené číslo, y = z l, l je nějaké přirozené číslo, z je největší číslo, pro které obě předchozí podmínky platí. Např. největší společný dělitel čísel 6 a 15 je 3. Největší společný dělitel se uplatní například při krácení zlomků. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 19/55

42 GCD řešení Problémem je najít největší společný dělitel (GCD) dvou daných přirozených čísel. Vstup: přirozená čísla x a y. Výstup: gcd(x, y). Metoda: 1 Když x < y, nastav d na hodnotu x, jinak nastav d na hodnotu y. 2 Opakuj krok (3) dokud d není dělitelem obou čísel x a y. 3 Zmenši d o 1. 4 Hodnota d je výsledek. Poznámka 1: x, y a d jsou proměnné, jejichž hodnoty jsou uloženy na určitých pamět ových místech. Tyto hodnoty se mohou během výpočtu měnit. Poznámka 2: uvedený algoritmus není efektivní, na prosemináři se seznámíme s algoritmy efektivnějšími. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 20/55

43 GCD postup výpočtu Najdi GCD čísel 15 a 6. krok x y d 15 6 počáteční hodnoty (1) (2) d není dělitelem x, další krok (3) M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 21/55

44 GCD postup výpočtu Najdi GCD čísel 15 a 6. krok x y d 15 6 počáteční hodnoty (1) (2) d není dělitelem x, další krok (3) (3) (2) d není dělitelem y, další krok (3) M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 21/55

45 GCD postup výpočtu Najdi GCD čísel 15 a 6. krok x y d 15 6 počáteční hodnoty (1) (2) d není dělitelem x, další krok (3) (3) (2) d není dělitelem y, další krok (3) (3) (2) d není dělitelem ani x, ani y, další krok (3) M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 21/55

46 GCD postup výpočtu Najdi GCD čísel 15 a 6. krok x y d 15 6 počáteční hodnoty (1) (2) d není dělitelem x, další krok (3) (3) (2) d není dělitelem y, další krok (3) (3) (2) d není dělitelem ani x, ani y, další krok (3) (3) (2) d je dělitelem obou čísel x a y, další krok (4) M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 21/55

47 GCD postup výpočtu Najdi GCD čísel 15 a 6. krok x y d 15 6 počáteční hodnoty (1) (2) d není dělitelem x, další krok (3) (3) (2) d není dělitelem y, další krok (3) (3) (2) d není dělitelem ani x, ani y, další krok (3) (3) (2) d je dělitelem obou čísel x a y, další krok (4) (4) d = 3 je výsledek M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 21/55

48 GCD algoritmus Vývojový diagram Start + - x < y d := x d := y - d is a divisor of both x and y + d := d - 1 gcd := d M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 22/55

49 GCD algoritmus Struktogram GCD(x,y) yes x < y no d := x d := y repeat until d is a divisor of both x and y d := d - 1 gcd := d M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 23/55

50 GCD algoritmus Pseudokód GCD(x,y): if ( x < y ) then d := x else d := y while ( d "is not a divisor of" x or d "is not a divisor of" y ) do d := d - 1 GCD := d M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 24/55

51 GCD algoritmus Pseudokód GCD(x,y): if ( x < y ) then d := x else d := y while ( d "is not a divisor of" x or d "is not a divisor of" y ) do d := d - 1 GCD := d Poznámka: podmínka v cyklu se změnila, využíváme De Morganova vztahu: (A B) = A B M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 24/55

52 GCD algoritmus Programovací jazyk int gcd ( int x, int y ) { int d; if ( x < y ) d = x; else d = y; while ( x % d!= 0 y % d!= 0 ) d --; return d; } M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 25/55

53 Problém #3 št astné číslo Št astné číslo je takové kladné celé číslo n, pro které se následujícím postupem dostaneme k hodnotě 1: 1 jednotlivé cifry čísla n umocníme na druhou a sečteme, 2 získáme číslo n 1, 3 pokud n 1 = 1, bylo číslo n št astné, v opačném případě postup opakujeme pro n 1. 4 pokud se postup zacykĺı (dostaneme se k číslu, které jsme již zpracovávali), číslo n není št astné. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 26/55

54 Problém #3 št astné číslo Št astné číslo je takové kladné celé číslo n, pro které se následujícím postupem dostaneme k hodnotě 1: 1 jednotlivé cifry čísla n umocníme na druhou a sečteme, 2 získáme číslo n 1, 3 pokud n 1 = 1, bylo číslo n št astné, v opačném případě postup opakujeme pro n 1. 4 pokud se postup zacykĺı (dostaneme se k číslu, které jsme již zpracovávali), číslo n není št astné. Příklad št astného čísla: = = = M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 26/55

55 Št astné číslo Příklad nešt astného čísla: = = = = = = = = = = 4 16 M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 27/55

56 Št astné číslo Dvojková soustava je št astná soustava. Proč? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 28/55

57 Št astné číslo Dvojková soustava je št astná soustava. Proč? Proto jsou počítače št astné. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 28/55

58 Št astné číslo Dvojková soustava je št astná soustava. Proč? Proto jsou počítače št astné. Proto jsou lidé od počítačů št astní. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 28/55

59 Št astné číslo Dvojková soustava je št astná soustava. Proč? Proto jsou počítače št astné. Proto jsou lidé od počítačů št astní. Dokažte. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 28/55

60 Št astné číslo algoritmus ishappy ( n ): done := false while not done c := sumdigitsquare (n) if c = 1 then done := true else n := c ishappy := done M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 29/55

61 Št astné číslo algoritmus ishappy ( n ): done := false while not done c := sumdigitsquare (n) if c = 1 then done := true else n := c ishappy := done Co se stane pro nešt astná čísla? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 29/55

62 Št astné číslo algoritmus, oprava ishappy ( n ): done := false while not done c := sumdigitsquare (n) if c = 1 then flag := true done := true else if haveseen (c) then flag := false done := true else n := c ishappy := flag M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 30/55

63 Št astné číslo algoritmus, oprava ishappy ( n ): done := false while not done c := sumdigitsquare (n) if c = 1 then flag := true done := true else if haveseen (c) then flag := false done := true else n := c ishappy := flag Co je sumdigitsquare a haveseen? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 30/55

64 Št astné číslo abstrakce Při návrhu složitějších algoritmů nemusíme vyřešit všechny detaily na jednom místě. Často si pomáháme abstrakcí, kdy detaily řešení nějakého dílčího problému skryjeme (black box) a odkazujeme se na něj vhodným jménem. Odkazované dílčí algoritmy pak popíšeme samostatně. Pokud je rozdělení rozumné, algoritmy jsou kratší a srozumitelnější. Tento princip se uplatňuje i v programování (funkce, procedury, moduly,... ). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 31/55

65 Št astné číslo sumdigitsquare sumdigitsquare ( n ): c := countdigits ( n ) sum := 0 i := 0 repeat c times digit := (n / 10 ^ i) mod 10 sum := sum + digit * digit i := i + 1 sumdigitsquare := sum M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 32/55

66 Št astné číslo countdigits countdigits ( n ): if n < 10 then digits := 1 else if n < 100 then digits := 2 else if countdigits := digits M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 33/55

67 Št astné číslo countdigits countdigits ( n ): if n < 10 then digits := 1 else if n < 100 then digits := 2 else if countdigits := digits Pracné, není obecné, kolik je maximum? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 33/55

68 Št astné číslo countdigits countdigits ( n ): countdigits := log10 (n) M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 34/55

69 Št astné číslo countdigits countdigits ( n ): countdigits := log10 (n) Skoro, ale např. pro 12 dostaneme 1 cifru. Zaokrouhlovat nahoru nebo dolů? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 34/55

70 Št astné číslo countdigits countdigits ( n ): countdigits := floor ( log10 (n) ) + 1 M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 35/55

71 Št astné číslo countdigits countdigits ( n ): countdigits := floor ( log10 (n) ) + 1 Logaritmus bývá počítán nepřesně (aproximace pomocí řad). Nešlo by se mu vyhnout? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 35/55

72 Št astné číslo countdigits countdigits ( n ): digits := 0 while n > 0 digits := digits + 1 n := floor ( n / 10 ) countdigits := digits M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 36/55

73 Št astné číslo countdigits countdigits ( n ): digits := 0 while n > 0 digits := digits + 1 n := floor ( n / 10 ) countdigits := digits Nefunguje správně pro n = 0, ale v problému uvažujeme pouze kladná čísla. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 36/55

74 Št astné číslo countdigits countdigits ( n ): digits := 0 while n > 0 digits := digits + 1 n := floor ( n / 10 ) countdigits := digits Nefunguje správně pro n = 0, ale v problému uvažujeme pouze kladná čísla. Když už stejně iterujeme přes všechny cifry, nešlo by sloučit sumdigitsquare a countdigits? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 36/55

75 Št astné číslo sumdigitsquare, optimalizace sumdigitsquare ( n ): sum := 0 while n > 0 sum := sum + ( n mod 10 ) * ( n mod 10 ) n := floor ( n / 10 ) sumdigitsquare := sum M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 37/55

76 Št astné číslo haveseen Jak ukládat čísla, která již algoritmus prošel? M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 38/55

77 Št astné číslo haveseen Jak ukládat čísla, která již algoritmus prošel? Seznam (pole): seznam musíme prohledávat při testování přítomnosti prvku, seznam musíme rozšiřovat při vkládání prvku, musíme kontrolovat duplicity při vkládání. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 38/55

78 Št astné číslo haveseen Jak ukládat čísla, která již algoritmus prošel? Seznam (pole): seznam musíme prohledávat při testování přítomnosti prvku, seznam musíme rozšiřovat při vkládání prvku, musíme kontrolovat duplicity při vkládání. Množina: abstrakce, která lépe popisuje požadované chování v algoritmu, operace vkládání a testu přítomnosti jsou množině vlastní. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 38/55

79 Št astné číslo algoritmus se množinou ishappy ( n ): done := false seenset := while not done c := sumdigitsquare (n) if c = 1 then flag := true done := true else if c seenset then flag := false done := true else n := c seenset := seenset { c } ishappy := flag M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 39/55

80 Št astné číslo optimalizace Pokud testujeme, zda n je št astné číslo v desítkové soustavě, pak mohou nastat tyto situace: algoritmus dosáhne hodnoty 1 (číslo je št astné), algoritmus skončí v cyklu 4, 16, 37, 58, 89, 145, 42, 20, 4,... Nemůže nastat situace, kdy algoritmus pro nešt astné číslo skončí v jiném cyklu. Vysvětlení a důkaz je např. na Wikipedii, heslo Happy number. Algoritmu tedy stačí testovat hodnotu 1 (št astné) a 4 (nešt astné). Nemusí se zabývat množinou čísel, která již prošel. Pokud bychom testovali št astná čísla v jiné číselné soustavě (základ rozdílný od 10), tato optimalizace by se nedala použít. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 40/55

81 Št astné číslo finální algoritmus ishappy ( n ): done := false while not done c := sumdigitsquare (n) if c = 1 then flag := true done := true else if c = 4 then flag := false done := true else n := c ishappy := flag M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 41/55

82 Programovací jazyky Programovací jazyky jsou navrženy tak, aby: popsaly výpočetní kroky algoritmů, byly ve formě srozumitelné člověku a současně byly ve formě srozumitelné stroji (počítači). Formální jazyky jsou vytvořeny uměle. Na rozdíl od přirozených jazyků (angličtina, čeština,... ), mají formální jazyky: velmi přesnou gramatiku, žádné nebo jen málo výjimek z obecných pravidel, jen málo jazykových konstruktů (deklarace, příkaz, cyklus, podmínka,... ), potenciálně neomezenou sílu v kombinaci těchto konstruktů. Formální jazyky jsou obvykle založeny na angličtině (s výjimkou APL, který je založen na Klingonštině :-) ). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 42/55

83 Programovací jazyky (pokračování) Programovací jazyky nízké úrovně (assembler, strojový kód): velmi jednoduchá struktura, navržená pro konkrétní typ počítače, jednoduché operace (jako přesun obsahu buňky paměti do registru, sečtení obsahu dvou registrů,... ), obtížný pro člověka (zdlouhavý kód i pro jednoduché problémy), náchylný k chybám programátora. Programovací jazyky vysoké úrovně (C, C++, Java, Pascal, Ada,... ): navržené pro člověka, programy jsou kratší, jednodušeji srozumitelné, oddělují programátora od strojově specifických detailů (organizace paměti, instrukční množina, velikost slova,... ), programy nemohou být přímo použity, musí být nejdříve přeloženy do strojového kódu. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 43/55

84 Programovací jazyky (pokračování) Imperativní jazyky (procedurální programovací styl): program je sekvence příkazů zpracovávaných v pořadí shora dolů, pro změnu tohoto pořadí slouží cykly a větvení, volání podprogramu mění pořadí zpracování slouží pro vícenásobné použití stejného kódu), návrat z ukončeného podprogramu na příkaz za jeho voláním. Neimperativní jazyky: funkcionální programovací styl, deklarativní programovací styl, více o neimperativních programovacích jazycích později v jiných předmětech (např. BI-PPA). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 44/55

85 Programovací jazyky (pokračování) Imperativní jazyky z pohledu programátora: program zpracovává datové objekty různých typů, datové objekty jsou uloženy v proměnných nebo konstantách, proměnné a konstanty jsou reprezentovány svými jmény (jedinečnými identifikátory), program se skládá z deklarací a příkazů, deklarace definuje význam identifikátoru (proměnná, funkce, konstanta,... ). příkaz slouží pro vykonání nějaké akce s datovými objekty (např. mění jeho hodnotu) nebo mění pořadí provádění příkazů. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 45/55

86 Programovací jazyky (pokračování) Programovací jazyk: Syntaxe formální způsob, jak psát program: množina pravidel, která definují omezení individuálních konstrukcí a jejich kombinací, obvykle implementována jako gramatika, syntaktické diagramy, BNF Backus-Naurova forma (Backus-Naur form). Sémantika význam jednotlivých syntaktických konstrukcí: obvykle popsaná v textové podobě. M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 46/55

87 Syntaktické diagramy identifier character character character digit 'A' 'B' 'C' 'Z' digit '0' '1' '2' '9' M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 47/55

88 BNF Backus-Naurova forma identifier ::= character { digit character } character ::= A B C D... X Y Z digit ::= Legenda: {x} žádný nebo více výskytů x, x y bud x nebo y, [x] x je nepovinné (žádný nebo jeden výskyt). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 48/55

89 Interpretace programu input data source code compiler computer internal form interpret computer output data M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 49/55

90 Kompilace programu do strojového kódu input data source code compiler computer our program in a machine code computer output data M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 50/55

91 Programovací jazyk C Programovací jazyk C bude použit pro vývoj, implementaci a testování programů v BI-PA1. Programovací jazyk C++ (objektově orientovaná verze jazyka C) bude použita v BI-PA2. Krátká historie jazyka C: 1972 D. Ritchie, Bell Laboratories (AT&T), PDP operační systém UNIX je napsán v jazyku C B. Kernighan, D. Ritchie: The C programming language (K&R C) 1982 ANSI working group X3J ANSI X (ANSI C, C89) 1990 adoptováno do ISO/IEC 9899: nová ISO norma: ISO 9899:1999 (C99) 2011 nová ISO norma: ISO 9899:2011 (C11, nezaměňovat s C++ 11) M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 51/55

92 Otcové jazyka C Brian Wilson Kernighan Denis MacAlistair Ritchie Kenneth Thompson M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 52/55

93 Programovací jazyk C Výhody jazyka C: programovací jazyk vyšší úrovně, umožňuje i programování nízké úrovně (manipulaci s adresami, ukazatele), optimalizující kompilátory produkují vysoce efektivní strojový kód, programy jsou portabilní mezi různými platformami (pokud nejsou použity platformně závislé triky), syntaxe C je užita mnoha jinými programovacími jazyky (C++, Java, Perl, C#, Javascript,... ). Nevýhody jazyka C: diskutabilní bezpečnostní politika vše je ponecháno na programátorovi, žádné běhové kontroly (indexy v poĺıch, validní ukazatele). M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 53/55

94 První program v jazyku C #include <stdio.h> int main ( int argc, char * argv[] ) { printf ( "Hello world!\n" ); return 0; } M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 54/55

95 Otázky a odpovědi Otázky... M. Baĺık, L. Vagner a J. Vogel, ČVUT FIT Algoritmy, BI-PA1 55/55

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Algoritmy BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních technologií České vysoké

Více

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Algoritmy BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta informačních technologií České vysoké

Více

Programování a algoritmizace 1 2012-2013

Programování a algoritmizace 1 2012-2013 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 Algoritmy Kdo je

Více

2. lekce Algoritmus, cyklus Miroslav Jílek

2. lekce Algoritmus, cyklus Miroslav Jílek 2. lekce Algoritmus, cyklus Miroslav Jílek 1/36 Algoritmus 2/36 Algoritmus je konečná posloupnost operací, která dává řešení skupiny problémů 3/36 Algoritmus je konečná posloupnost operací, která dává

Více

Algoritmizace. Cíle předmětu

Algoritmizace. Cíle předmětu Cíle předmětu Algoritmizace naučit se sestavovat algoritmy řešení jednoduchých problémů a zapisovat je v jazyku Java Organizace předmětu přednášky (učast nepovinná, ale doporučená) cvičení střídavě u tabule

Více

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)

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

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba

Více

Algoritmy. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner

Algoritmy. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner Algoritmy BI-PA1 Programování a Algoritmizace I. Ladislav Vagner Katedra teoretické informatiky Fakulta informačních technologíı ČVUT v Praze xvagner@fit.cvut.cz 3. října 2016 a 4. října 2016 Kontakt místnost

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba

Více

Lekce 01 Úvod do algoritmizace

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

Více

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost Programování Algoritmus návod na vykonání činnosti, který nás od (měnitelných) vstupních dat přivede v konečném čase k výsledku přesně definovaná konečná posloupnost činností vedoucích k výsledku (postup,

Více

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

Program a životní cyklus programu

Program a životní cyklus programu Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy

Více

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program Denotační sémantika programovacího jazyka doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 Obsah přednášky Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup

Více

Algoritmizace. 1. Úvod. Algoritmus

Algoritmizace. 1. Úvod. Algoritmus 1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá

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 Algoritmus Daniela Szturcová Tento

Více

3 Co je algoritmus? 2 3.1 Trocha historie... 2 3.2 Definice algoritmu... 3 3.3 Vlastnosti algoritmu... 3

3 Co je algoritmus? 2 3.1 Trocha historie... 2 3.2 Definice algoritmu... 3 3.3 Vlastnosti algoritmu... 3 Obsah Obsah 1 Program přednášek 1 2 Podmínky zápočtu 2 3 Co je algoritmus? 2 3.1 Trocha historie............................ 2 3.2 Definice algoritmu.......................... 3 3.3 Vlastnosti algoritmu.........................

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

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

Algoritmizace- úvod. Ing. Tomáš Otáhal

Algoritmizace- úvod. Ing. Tomáš Otáhal Algoritmizace- úvod Ing. Tomáš táhal Historie 9. století perský matematik a astronom Mohammed Al-Chorezím v latinském přepise příjmení= algoritmus Nejstarší algoritmus Euklides řecký matematik, 4. století

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Algoritmizace. Algoritmizace (Y36ALG), Šumperk - 1. přednáška 1

Algoritmizace. Algoritmizace (Y36ALG), Šumperk - 1. přednáška 1 Algoritmizace Cíl předmětu - naučit se sestavovat algorimy řešení základních problémů a zapisovat je v jazyku Java. Jádrem předmětu jsou data, typy, výrazy a příkazy demonstrované v programovacím jazyce

Více

Výukový materiál zpracován v rámci projektu EU peníze školám

Výukový materiál zpracován v rámci projektu EU peníze školám Výukový materiál zpracován v rámci projektu EU peníze školám Registrační číslo projektu: CZ. 1.07/1.5.00/34.0637 Šablona III/2 Název VY_32_INOVACE_39_Algoritmizace_teorie Název školy Základní škola a Střední

Více

Příkazy if, while, do-while, for, switch

Příkazy if, while, do-while, for, switch Příkazy if, while, do-while, for, switch BI-PA1 Programování a Algoritmizace 1 Ladislav Vagner, Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı

Více

DTP Základy programování Úvod do předmětu

DTP Základy programování Úvod do předmětu DTP Základy programování 01 - Úvod do předmětu Úvod Co již umíte? Plán předmětu Studijní materiály Způsob ukončení předmětu Základní pojmy I. Řešený problém: Řešeným nebo zpracovávaným problémem je konkrétní

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

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

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 Algoritmus Daniela Szturcová Tento

Více

IB111 Programování a algoritmizace. Programovací jazyky

IB111 Programování a algoritmizace. Programovací jazyky IB111 Programování a algoritmizace Programovací jazyky Programovací jazyky Programovací jazyk Prostředek pro zápis algoritmů, jež mohou být provedeny na počítači Program Zápis algoritmu v programovacím

Více

11. Přehled prog. jazyků

11. Přehled prog. jazyků Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 1 Základy algoritmizace 11. Přehled prog. jazyků doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Více

Implementace LL(1) překladů

Implementace LL(1) překladů Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku

Více

Dynamické programování

Dynamické programování Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)

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

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

Základy algoritmizace

Základy algoritmizace Algoritmus Toto je sice na první pohled pravdivá, ale při bližším prozkoumání nepřesná definice. Například některé matematické postupy by této definici vyhovovaly, ale nejsou algoritmy. Přesné znění definice

Více

Funkce, procedury, složitost

Funkce, procedury, složitost Funkce, procedury, složitost 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 technologíı

Více

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu.

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu. Algoritmus Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu. Klíčové pojmy: Algoritmus, vlastnosti algoritmu, tvorba algoritmu, vývojový diagram, strukturogram Algoritmus

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

Algoritmizace. Obrázek 1: Přeložení programu překladačem

Algoritmizace. Obrázek 1: Přeložení programu překladačem Algoritmizace V každém okamžiku ví procesor počítače přesně, co má vykonat. Pojmem procesor se v souvislosti s algoritmy označuje objekt (např. stroj i člověk), který vykonává činnost popisovanou algoritmem.

Více

6 Příkazy řízení toku

6 Příkazy řízení toku 6 Příkazy řízení toku 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 příkazům pro řízení toku programu. Pro všechny tyto základní

Více

VISUAL BASIC. Přehled témat

VISUAL BASIC. Přehled témat VISUAL BASIC Přehled témat 1 ÚVOD DO PROGRAMOVÁNÍ Co je to program? Kuchařský předpis, scénář k filmu,... Program posloupnost instrukcí Běh programu: postupné plnění instrukcí zpracovávání vstupních dat

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

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

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

Více

Úvod do programování

Úvod do programování Úvod do programování Základní literatura Töpfer, P.: Algoritmy a programovací techniky, Prometheus, Praha učebnice algoritmů, nikoli jazyka pokrývá velkou část probíraných algoritmů Satrapa, P.: Pascal

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

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata 1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata Studijní cíl Tento první blok celého kurzu zaměřen na zvládnutí základních pojmů z oblasti programování a

Více

Základy algoritmizace a programování

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

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

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

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

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

Více

Č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

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

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Číslo projektu: CZ.1.07/1.5.00/34.0410 Číslo šablony: 1 Název materiálu: Ročník: Identifikace materiálu: Jméno autora: Předmět: Tématický celek:

Více

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi) Programovací jazyk - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi) Odlišnosti implementace od normy - odchylky např.: nepovinná hlavička programu odlišná

Více

IB111 Úvod do programování skrze Python Přednáška 13

IB111 Úvod do programování skrze Python Přednáška 13 IB111 Úvod do programování skrze Python Přednáška 13 Programovací jazyky Nikola Beneš 14. prosinec 2016 IB111 přednáška 13: programovací jazyky 14. prosinec 2016 1 / 21 Osnova dnešní přednášky Programovací

Více

Abstraktní datové typy, moduly

Abstraktní datové typy, moduly Abstraktní datové typy, moduly 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

Poslední nenulová číslice faktoriálu

Poslední nenulová číslice faktoriálu Poslední nenulová číslice faktoriálu Kateřina Bambušková BAM015, I206 Abstrakt V tomto článku je popsán a vyřešen problém s určením poslední nenulové číslice faktoriálu přirozeného čísla N. Celý princip

Více

Základní datové struktury III: Stromy, haldy

Základní datové struktury III: Stromy, haldy Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní

Více

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace Číslo projektu Číslo materiálu Autor Průřezové téma Předmět CZ.1.07/1.5.00/34.0565 VY_32_INOVACE_284_Programovací_jazyky

Více

IB015 Neimperativní programování. Organizace a motivace kurzu, programovací jazyk Haskell. Jiří Barnat

IB015 Neimperativní programování. Organizace a motivace kurzu, programovací jazyk Haskell. Jiří Barnat IB015 Neimperativní programování Organizace a motivace kurzu, programovací jazyk Haskell Jiří Barnat Sekce IB015 Neimperativní programování 01 str. 2/36 Organizace kurzu Cíle kurzu IB015 Neimperativní

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ.

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ. PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ. 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Dva základní

Více

Dekompozice problému, rekurze

Dekompozice problému, rekurze Dekompozice problému, rekurze BI-PA1 Programování a Algoritmizace 1 Ladislav Vagner, Josef Vogel Katedra teoretické informatiky a Katedra softwarového inženýrství Fakulta informačních technologíı České

Více

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

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

Více

ANOTACE vytvořených/inovovaných materiálů

ANOTACE vytvořených/inovovaných materiálů ANOTACE vytvořených/inovovaných materiálů Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Formát Druh učebního materiálu Druh interaktivity CZ.1.07/1.5.00/34.0722 III/2 Inovace a

Více

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti 3. přednáška nalezení největšího prvku, druhého nejvyššího prvku, algoritmus shozeného praporku. Algoritmizace

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

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky

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

Unbounded Model Checking

Unbounded Model Checking Unbounded Model Checking Stefan Ratschan Katedra číslicového návrhu Fakulta informačních technologíı České vysoké učení technické v Praze 25. října 2011 Evropský sociální fond Praha & EU: Investujeme do

Více

Rekurzivní algoritmy

Rekurzivní algoritmy Rekurzivní algoritmy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA) ZS

Více

Řídicí struktury. alg3 1

Řídicí struktury. alg3 1 Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení

Více

Základy algoritmizace a programování

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

Více

Algoritmy a algoritmizace

Algoritmy a algoritmizace Otázka 21 Algoritmy a algoritmizace Počítačové programy (neboli software) umožňují počítačům, aby přestaly být pouhou stavebnicí elektronických a jiných součástek a staly se pomocníkem v mnoha lidských

Více

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace Programování: základní konstrukce, příklady, aplikace IB111 Programování a algoritmizace 2011 Připomenutí z minule, ze cvičení proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady:

Více

Algoritmizace řazení Bubble Sort

Algoritmizace řazení Bubble Sort Algoritmizace řazení Bubble Sort Cílem této kapitoly je seznámit studenta s třídícím algoritmem Bubble Sort, popíšeme zde tuto metodu a porovnáme s jinými algoritmy. Klíčové pojmy: Třídění, Bubble Sort,

Více

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software. Maturitní témata IKT, školní rok 2017/18 1 Struktura osobního počítače Von Neumannova architektura: zakreslete, vysvětlete její smysl a popište, jakým způsobem se od ní běžné počítače odchylují. Osobní

Více

NPRG030 Programování I RNDr.Tomáš Holan, Ph.D. 4.patro, č

NPRG030 Programování I RNDr.Tomáš Holan, Ph.D. 4.patro, č NPRG030 Programování I RNDr.Tomáš Holan, Ph.D. 4.patro, č.404 http://ksvi.mff.cuni.cz/~holan/ Tomas.Holan@mff.cuni.cz NPRG030 Programování I, 2014/15 1 / 37 6. 10. 2014 11:42:59 NPRG030 Programování I,

Více

Konečný automat. Jan Kybic.

Konečný automat. Jan Kybic. Konečný automat Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 33 Konečný automat finite state machine Konečný automat = výpočetní model, primitivní počítač Řídící jednotka s

Více

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1 1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1 1. Prvocisla: Kratky ukazkovy priklad na demonstraci baliku WEB. Nasledujici program slouzi pouze jako ukazka nekterych moznosti a sluzeb,

Více

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2 * násobení maticové Pro čísla platí: Pro matice - násobení inverzní maticí inv inverzní matice A -1 k dané matici A je taková matice, která po vynásobení s původní maticí dá jednotkovou matici. Inverzní

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

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2 Euklidův algoritmus Doprovodný materiál pro cvičení Programování I. NPRM044 Autor: Markéta Popelová Datum: 31.10.2010 Euklidův algoritmus verze 1.0 Zadání: Určete největšího společného dělitele dvou zadaných

Více

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší

Více

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; Vícerozměrné pole type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; M[2,3] := 3145; - počet indexů není omezen (v praxi obvykle nejvýše tři) - více indexů pomalejší přístup k prvku (počítá

Více

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5 Obsah Obsah 1 Řídicí struktury 1 2 Podmínka 1 2.1 Podmínka typu case......................... 2 3 Příkaz skoku 3 4 Cykly 4 4.1 Cyklus s podmínkou na začátku................... 4 4.2 Cyklus s podmínkou

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

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013 Předměty Algoritmizace a programování Seminář z programování Verze pro akademický rok 2012/2013 Verze pro akademický rok 2012/2013 1 Přednášky Jiřina Královcová MTI, přízemí budovy A Tel: 48 53 53 521

Více

Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar

Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar Základy programování Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar Počítačový kurs Univerzity třetího věku na FJFI ČVUT Pokročilý 21. května 2009 Dnešní přednáška 1 Počátky

Více

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Logika pro každodenní přežití Stefan Ratschan Katedra číslicového návrhu Fakulta informačních technologíı České vysoké učení technické v Praze Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

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

Programovací jazyk C++ Hodina 1

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

Více

Překladač a jeho struktura

Překladač a jeho struktura Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice

Více

1 Základy algoritmizace a programování. 1.1 Algoritmus. 1.1.1 Možnosti zápisu algoritmů. Základy algoritmizace a programování

1 Základy algoritmizace a programování. 1.1 Algoritmus. 1.1.1 Možnosti zápisu algoritmů. Základy algoritmizace a programování 1 Základy algoritmizace a programování 1.1 Algoritmus Algoritmus je posloupnost operací, která řeší daný úkol v konečném počtu kroků. Je to přesný postup, který je potřeba k vykonání určité činnosti. Jinak

Více

1 Strukturované programování

1 Strukturované programování Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK Registrační číslo: CZ.1.07/2.2.00/28.0118 1 Cíl Seznámení s principy strukturovaného programování, s blokovou strukturou programů,

Více

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 1.díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 06 Ver.1.10 J. Zděnek,

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

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