Přednáška 3. Rekurze 1

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

Download "Přednáška 3. Rekurze 1"

Transkript

1 Paradigmata programování 1 Přednáška 3. Rekurze 1 Michal Krupka KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI

2 Obsah 1 Příklady 2 Rekurzivní procedury a rekurzivní výpočetní proces 3 Další příklady M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

3 Příklad: procentuální podíl M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

4 Příklad: procentuální podíl (define (percentage-1 part whole) (* (/ part whole) 100)) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

5 Příklad: procentuální podíl (define (percentage-1 part whole) (* (/ part whole) 100)) (define the-whole ) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

6 Příklad: procentuální podíl (define (percentage-1 part whole) (* (/ part whole) 100)) (define the-whole ) (define (percentage-2 part whole) (let ((whole (if (eq? whole #true) the-whole whole))) (* (/ part whole) 100))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

7 Příklad: procentuální podíl (define (percentage-1 part whole) (* (/ part whole) 100)) (define the-whole ) (define (percentage-2 part whole) (let ((whole (if (eq? whole #true) the-whole whole))) (* (/ part whole) 100))) (define (percentage-3 part whole) (percentage-1 part (if (eq? whole #true) the-whole whole))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

8 Příklad: procentuální podíl (define (percentage-4 part whole) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

9 Příklad: procentuální podíl (define (percentage-4 part whole) (if (eq? whole #true) ;je-li whole rovno #true M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

10 Příklad: procentuální podíl (define (percentage-4 part whole) (if (eq? whole #true) (percentage-4 part the-whole) ;je-li whole rovno #true ;aplikujeme znovu percentage-4 M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

11 Příklad: procentuální podíl (define (percentage-4 part whole) (if (eq? whole #true) ;je-li whole rovno #true (percentage-4 part the-whole) ;aplikujeme znovu percentage-4 (* (/ part whole) 100))) ;jinak výpočet M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

12 Příklad: procentuální podíl (define (percentage-4 part whole) (if (eq? whole #true) (percentage-4 part the-whole) (* (/ part whole) 100))) rekurzivní aplikace M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

13 Bude to fungovat? M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

14 Bude to fungovat? Prostředí během aplikace (percentage #true): M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

15 Bude to fungovat? Prostředí během aplikace (percentage #true): Počáteční (globální) prostředí M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

16 Bude to fungovat? Prostředí během aplikace (percentage #true): Počáteční (globální) prostředí Prostředí procedury percentage-4 (první aplikace) symbol hodnota part whole #true M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

17 Bude to fungovat? Prostředí během aplikace (percentage #true): Počáteční (globální) prostředí Prostředí procedury percentage-4 (první aplikace) symbol hodnota part whole #true Prostředí procedury percentage-4 (druhá aplikace) symbol hodnota part whole M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

18 Příklad: prohledávání intervalu M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

19 Příklad: prohledávání intervalu (define (square-1? n) (if (integer? (sqrt n)) #true #false)) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

20 Příklad: prohledávání intervalu (define (square-1? n) (if (integer? (sqrt n)) #true #false)) (define (square-2? n) (integer? (sqrt n))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

21 Příklad: prohledávání intervalu (define (square-1? n) (if (integer? (sqrt n)) #true #false)) (define (square-2? n) (integer? (sqrt n))) Přesnost? M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

22 Příklad: prohledávání intervalu (define (square-1? n) (if (integer? (sqrt n)) #true #false)) (define (square-2? n) (integer? (sqrt n))) Přesnost? (define (square-3? n) (= (sqr (round (sqrt n))) n)) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

23 Příklad: prohledávání intervalu M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

24 Příklad: prohledávání intervalu (define (contains-square-1? a b) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

25 Příklad: prohledávání intervalu (define (contains-square-1? a b) (if (> a b) ;když je interval prázdný M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

26 Příklad: prohledávání intervalu (define (contains-square-1? a b) (if (> a b) #false ;když je interval prázdný ;čtverec neobsahuje M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

27 Příklad: prohledávání intervalu (define (contains-square-1? a b) (if (> a b) #false (if (square-2? a) ;když je interval prázdný ;čtverec neobsahuje ;je-li dolní konec čtverec M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

28 Příklad: prohledávání intervalu (define (contains-square-1? a b) (if (> a b) #false (if (square-2? a) #true ;když je interval prázdný ;čtverec neobsahuje ;je-li dolní konec čtverec ;interval čtverec obsahuje M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

29 Příklad: prohledávání intervalu (define (contains-square-1? a b) (if (> a b) #false (if (square-2? a) #true (contains-square-1? (+ a 1) b)))) ;když je interval prázdný ;čtverec neobsahuje ;je-li dolní konec čtverec ;interval čtverec obsahuje ;jinak zkoumáme ;interval [a + 1, b] M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

30 Příklad: prohledávání intervalu (define (contains-square-1? a b) (if (> a b) #false (if (square-2? a) #true (contains-square-1? (+ a 1) b)))) ;když je interval prázdný ;čtverec neobsahuje ;je-li dolní konec čtverec ;interval čtverec obsahuje ;jinak zkoumáme ;interval [a + 1, b] rekurzivní aplikace M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

31 Příklad: prohledávání intervalu M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

32 Příklad: prohledávání intervalu (define (contains-square-2? a b) (cond ((> a b) #false) ((square? a) #true) (#true (contains-square-2? (+ a 1) b)))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

33 Odbočka: speciální operátor cond větev (cond { ( (> a b) }}{}{{} #false }{{} ) podmínka větve tělo větve ((square? a) #true) (#true (contains-square-2? (+ a 1) b))) } další větve M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

34 Odbočka: speciální operátor cond větev (cond { ( (> a b) }}{}{{} #false }{{} ) podmínka větve tělo větve ((square? a) #true) (#true (contains-square-2? (+ a 1) b))) } další větve 1 Postupně se vyhodnocují podmínky větví. 2 Jakmile je nějaká splněna, vyhodnotí se tělo příslušné větve. 3 Další podmínky se nevyhodnocují. 4 Vrátí se výsledek vyhodnoceného těla, pokud žádná podmínka nebyla splněna, dojde k chybě. M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

35 Prohledávání intervalu (define (contains-square-3? a b) (and (<= a b) (or (square? a) (contains-square-3? (+ a 1) b)))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

36 Odbočka: speciální operátory and a or, procedura not Operátor and (and e1 e2... en) Vrací #true, pokud se všechny ei vyhodnotí na #true, jinak vrací #false. Používá zkrácené vyhodnocování. Operátor or (or e1 e2... en) Vrací #true, pokud se některé ei vyhodnotí na #true, jinak #false. Používá zkrácené vyhodnocování. Procedura not Procedura not počítá logickou negaci. M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

37 Pevný bod funkce cos M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

38 Pevný bod funkce cos Hledáme přibližnou hodnotu čísla x takového, že cos x = x. M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

39 Pevný bod funkce cos Hledáme přibližnou hodnotu čísla x takového, že cos x = x. (define (approx-= a b prec) (<= (abs (- a b)) prec)) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

40 Pevný bod funkce cos Hledáme přibližnou hodnotu čísla x takového, že cos x = x. (define (approx-= a b prec) (<= (abs (- a b)) prec)) (define (cos-fixpoint-iter x prec) (let ((y (cos x))) (if (approx-= x y prec) y (cos-fixpoint-iter y prec)))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

41 Pevný bod funkce cos Hledáme přibližnou hodnotu čísla x takového, že cos x = x. (define (approx-= a b prec) (<= (abs (- a b)) prec)) (define (cos-fixpoint-iter x prec) (let ((y (cos x))) (if (approx-= x y prec) y (cos-fixpoint-iter y prec)))) (define (cos-fixpoint prec) (cos-fixpoint-iter 0 prec)) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

42 Obsah 1 Příklady 2 Rekurzivní procedury a rekurzivní výpočetní proces 3 Další příklady M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

43 Rekurzivní procedury Definition (rekurzivní procedura) Procedura je rekurzivní, když ve svém těle obsahuje aplikaci sebe sama. je poznat ze zdrojového kódu procedury procedury percentage-4, contains-square-1?, contains-square-2?, contains-square-3?, cos-fixpoint-iter jsou rekurzivní M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

44 Rekurzivní výpočetní proces Definition (rekurzivní výpočetní proces) Výpočetní proces je rekurzivní, když během aplikace procedury dojde znovu k aplikaci téže procedury. M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

45 Rekurzivní výpočetní proces Definition (rekurzivní výpočetní proces) Výpočetní proces je rekurzivní, když během aplikace procedury dojde znovu k aplikaci téže procedury. je poznat, když program běží M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

46 Rekurzivní výpočetní proces Definition (rekurzivní výpočetní proces) Výpočetní proces je rekurzivní, když během aplikace procedury dojde znovu k aplikaci téže procedury. je poznat, když program běží některá aplikace procedury by k aplikaci téže procedury vést neměla (ukončovací podmínka) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

47 Rekurzivní výpočetní proces Definition (rekurzivní výpočetní proces) Výpočetní proces je rekurzivní, když během aplikace procedury dojde znovu k aplikaci téže procedury. je poznat, když program běží některá aplikace procedury by k aplikaci téže procedury vést neměla (ukončovací podmínka) Speciální případ: Definition (iterativní výpočetní proces) Výpočetní proces je iterativní, když na konci aplikace procedury dojde opět k aplikaci téže procedury. M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

48 Rekurzivní výpočetní proces Definition (rekurzivní výpočetní proces) Výpočetní proces je rekurzivní, když během aplikace procedury dojde znovu k aplikaci téže procedury. je poznat, když program běží některá aplikace procedury by k aplikaci téže procedury vést neměla (ukončovací podmínka) Speciální případ: Definition (iterativní výpočetní proces) Výpočetní proces je iterativní, když na konci aplikace procedury dojde opět k aplikaci téže procedury. uvedené procedury generují iterativní výpočetní proces M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

49 Obsah 1 Příklady 2 Rekurzivní procedury a rekurzivní výpočetní proces 3 Další příklady M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

50 Obecná mocnina M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

51 Obecná mocnina (define (power2 a) (* a a)) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

52 Obecná mocnina (define (power2 a) (* a a)) (define (power3 a) (* a (power2 a))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

53 Obecná mocnina (define (power2 a) (* a a)) (define (power3 a) (* a (power2 a))) (define (power4 a) (* a (power3 a))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

54 Obecná mocnina (define (power2 a) (* a a)) (define (power3 a) (* a (power2 a))) (define (power4 a) (* a (power3 a))) (define (power5 a) (* a (power4 a))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

55 Obecná mocnina (define (power2 a) (* a a)) (define (power3 a) (* a (power2 a))) (define (power4 a) (* a (power3 a))) (define (power5 a) (* a (power4 a))) (define (power a n) (if (= n 0) 1 (* a (power a (- n 1))))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

56 Faktoriál n! = { 1 když n = 0 n (n 1)! když n > 0 M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

57 Faktoriál n! = { 1 když n = 0 n (n 1)! když n > 0 Napsáno do procedury: (define (fact-1 n) (if (= n 0) 1 (* n (fact-1 (- n 1))))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

58 Faktoriál iterativní verze M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

59 Faktoriál iterativní verze (define (fact-2-iter n ir) (if (= n 0) ir (fact-2-iter (- n 1) (* ir n)))) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

60 Faktoriál iterativní verze (define (fact-2-iter n ir) (if (= n 0) ir (fact-2-iter (- n 1) (* ir n)))) (define (fact-2 n) (fact-2-iter n 1)) M. Krupka (Univerzita Palackého v Olomouci) PAPR1: 3. Rekurze 1 Olomouc, 2. října / 18

Paradigmata programování 1 poznámky k přednášce. 3. Rekurze 1

Paradigmata programování 1 poznámky k přednášce. 3. Rekurze 1 KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI www.inf.upol.cz Michal Krupka krupka.inf.upol.cz michal.krupka@upol.cz 17. listopadu 12, 771 46 Olomouc Paradigmata programování 1 poznámky k přednášce

Více

Paradigmata programování 1

Paradigmata programování 1 Paradigmata programování 1 Vytváření abstrakcí pomocí procedur Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 2 V. Vychodil (KI, UP Olomouc) Vytváření abstrakcí pomocí procedur Přednáška

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

Paradigmata programování 1

Paradigmata programování 1 Paradigmata programování 1 Explicitní aplikace a vyhodnocování Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 6 V. Vychodil (KI, UP Olomouc) Explicitní aplikace a vyhodnocování Přednáška

Více

NPRG030 Programování I, 2016/17 1 / :58:13

NPRG030 Programování I, 2016/17 1 / :58:13 NPRG030 Programování I, 2016/17 1 / 31 10. 10. 2016 10:58:13 Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE NPRG030 Programování

Více

PARADIGMATA PROGRAMOVÁNÍ 2 PŘÍSLIBY A LÍNÉ VYHODNOCOVÁNÍ

PARADIGMATA PROGRAMOVÁNÍ 2 PŘÍSLIBY A LÍNÉ VYHODNOCOVÁNÍ KATEDRA INFORMATIKY, PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO, OLOMOUC PARADIGMATA PROGRAMOVÁNÍ 2 PŘÍSLIBY A LÍNÉ VYHODNOCOVÁNÍ Slajdy vytvořili Vilém Vychodil a Jan Konečný (KI, UP Olomouc) PP 2, Lekce

Více

1. Od Scheme k Lispu

1. Od Scheme k Lispu KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI www.inf.upol.cz Michal Krupka krupka.inf.upol.cz michal.krupka@upol.cz 7. listopadu, 77 46 Olomouc Paradigmata programování poznámky k přednášce. Od

Více

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

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

Více

NPRG030 Programování I, 2010/11

NPRG030 Programování I, 2010/11 Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE když X, Y jsou (číselné) výrazy, potom X = Y X Y X < Y X > Y X = Y jsou

Více

2 Strukturované datové typy 2 2.1 Pole... 2 2.2 Záznam... 3 2.3 Množina... 4

2 Strukturované datové typy 2 2.1 Pole... 2 2.2 Záznam... 3 2.3 Množina... 4 Obsah Obsah 1 Jednoduché datové typy 1 2 Strukturované datové typy 2 2.1 Pole.................................. 2 2.2 Záznam................................ 3 2.3 Množina................................

Více

CZ.1.07/1.5.00/

CZ.1.07/1.5.00/ Celá čísla Celočíselný typ má označení INTEGER. Kromě tohoto základního jsou k dispozici ještě další celočíselné typy, které uvádí následující tabulka. Každý typ umožňuje definovat určitý rozsah celých

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

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 a programování. Ak. rok 2012/2013 vbp 1. ze 44

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44 Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44 Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251

Více

Paradigmata programování II Korutiny a nedeterminismus

Paradigmata programování II Korutiny a nedeterminismus Paradigmata programování II Korutiny a nedeterminismus Vilém Vychodil Katedra informatiky, Univerzita Palackého v Olomouci 27. dubna 2006 Vilém Vychodil (UP Olomouc) PP II, Př. 9: Korutiny, nedeterminismus

Více

Sada 1 - Základy programování

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

Více

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

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

Více

Paradigmata programování 2

Paradigmata programování 2 Paradigmata programování 2 6. cvičení Radek Janoštík Univerzita Palackého v Olomouci 18.3.2019 Radek Janoštík (Univerzita Palackého v Olomouci) Paradigmata programování 2 18.3.2019 1 / 11 Vedlejší efekt

Více

Paradigmata programování 1

Paradigmata programování 1 Paradigmata programování 1 Kvazikvotování a manipulace se symbolickými výrazy Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 11 V. Vychodil (KI, UP Olomouc) Kvazikvotování, manipulace se

Více

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka X36UNX 16 Numerické výpočty v sh příkazy expr, bc, dc Zdeněk Sojka sojkaz1@fel.cvut.cz dc desk calculator - zadávání příkazů postfixově - data se ukládají do stacku - příkazy obyčejně pracují s jedním

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

Rekurze. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Rekurze. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12. Rekurze doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Rekurze 161 / 344 Osnova přednášky

Více

Programování v jazyce JavaScript

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

Více

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

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

Logické programování I

Logické programování I Logické programování I PROLOG Program popisuje "svět" Prologu = databáze faktů a pravidel (tzv. klauzulí). fakta: predikát(arg1, arg2,...argn). cíle:?- predikát(arg1, arg2,...argn). pravidla: hlava :-

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

Paradigmata programování 1

Paradigmata programování 1 Paradigmata programování 1 Tečkové páry, symbolická data a kvotování Vilém Vychodil Katedra informatiky, PřF, UP Olomouc Přednáška 4 V. Vychodil (KI, UP Olomouc) Tečkové páry, symbolická data a kvotování

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Database Research Group Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz

Více

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů. Základní symboly - písmena A B C Y Z a b c y z - číslice 0 1 2 9 - speciální symboly + - * / =., < > = a další - klíčová slova and array begin case const a další Klíčová slova jsou chráněnými útvary,

Více

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel

Více

Paměť počítače. alg2 1

Paměť počítače. alg2 1 Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových

Více

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů Výrazy podle priority operátorů (od nejnižší priority) OPERANDY OPERÁTORY výraz = jednoduché výrazy a relační operátory

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

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

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

Více

Basic256 - úvod do programování Příklady. ing. petr polách

Basic256 - úvod do programování Příklady. ing. petr polách Basic256 - úvod do programování Příklady ing. petr polách 1 Basic 256 input, print Př.: Vytvořte program pro součet dvou čísel: input "Zadej a: ", a input "Zadej b: ", b print a+b input "Zadej a: ", a

Více

Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3]

Hanojská věž. T2: prohledávání stavového prostoru. zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] Hanojská věž zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] který tah je lepší? (co je lepší tah?) P. Berka, 2012 1/21 Stavový prostor 1. množina stavů S = {s} 2. množina přechodů

Více

Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p

Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p Hanojská věž Stavový prostor 1. množina stavů S = {s} 2. množina přechodů mezi stavy (operátorů) Φ = {φ} s k = φ ki (s i ) zadání [1 1 1] řešení [3 3 3] dva možné první tahy: [1 1 2] [1 1 3] který tah

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

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

MS EXCEL_vybrané matematické funkce

MS EXCEL_vybrané matematické funkce MS EXCEL_vybrané matematické funkce Vybrané základní matematické funkce ABS absolutní hodnota čísla CELÁ.ČÁST - zaokrouhlení čísla na nejbližší menší celé číslo EXP - vrátí e umocněné na hodnotu argumentu

Více

NPRG030 Programování I, 2018/19 1 / :25:37

NPRG030 Programování I, 2018/19 1 / :25:37 NPRG030 Programování I, 2018/19 1 / 26 24. 9. 2018 10:25:37 Čísla v algoritmech a programech 10 26 Poloměr vesmíru 2651 studujících studentů MFF UK 3.142857... Ludolfovo číslo 10 16 stáří vesmíru v sekundách!!!

Více

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. Přednáška 7 Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. 1 Příkaz expr výraz Celočíselná aritmetika I Zašle na standardní výstup vyhodnocení výrazu

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

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

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer 4. Rekurze BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze

Více

PARADIGMATA PROGRAMOVÁNÍ 2A INTERPRET S VEDLEJŠÍMI EFEKTY A MAKRY

PARADIGMATA PROGRAMOVÁNÍ 2A INTERPRET S VEDLEJŠÍMI EFEKTY A MAKRY KATEDRA INFORMATIKY, PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO, OLOMOUC PARADIGMATA PROGRAMOVÁNÍ 2A INTERPRET S VEDLEJŠÍMI EFEKTY A MAKRY VÝVOJ TOHOTO UČEBNÍHO MATERIÁLU JE SPOLUFINANCOVÁN EVROPSKÝM

Více

Analýza toku dat. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 15. listopad, 2012

Analýza toku dat. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 15. listopad, 2012 Překladače 2 Analýza toku dat Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci 15. listopad, 2012 Petr Krajča (UP) KMI/PRKL2: Přednáška I. 15. listopad, 2012 1 / 33 Lokální analýza: živost

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

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

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 23, 2016 ZPRO cvičení 3 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 23, 2016 Outline I 1 Outline 2 Relační a logické operátory 3 Relační a logické

Více

NPRG030 Programování I, 2017/18 1 / :22:16

NPRG030 Programování I, 2017/18 1 / :22:16 NPRG030 Programování I, 2017/18 1 / 26 20. 10. 2017 11:22:16 Ordinální typy standardní: integer, char, boolean Vlastnosti ordinálních typů: 1. hodnot je konečný počet a hodnoty jsou uspořádány 2. ke každé

Více

1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA)

1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA) Předmět: Algoritmizace praktické aplikace (3ALGA) Vytvořil: Jan Brzeska Zadání: Vytvoření funkcí na stromech (reprezentace stromu směrníky). Zadané funkce: 1. Počet vrcholů 2. Počet listů 3. Součet 4.

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

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

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

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09 Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Operátory Autor:

Více

Logo2 operace, rekurze, větvení výpočtu

Logo2 operace, rekurze, větvení výpočtu Operace Logo2 operace, rekurze, větvení výpočtu Je naše vlastní operace, jejím výsledkem je nějaká hodnota. Na určení tohoto výsledku musíme použít základní příkaz jazyka Imagine logo. A tím je výsledek.

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury, standardní metody Problematika načítání pomocí Scanner Některé poznámky k příkazům Psaní kódu programu Metody třídy Math Obalové třídy primitivních datových

Více

Větvení programů příkaz IF

Větvení programů příkaz IF Výpočetní technika programování Větvení programů příkaz IF Tento materiál vznikl v rámci projektu CZ.1.07/1.2.15/01.0022 Záchytná síť široké spektrum podpůrných aktivit. Střední škola spojů a informatiky,

Více

V této aplikaci si ukážeme jakým způsobem zobrazovat čas a datum. Pro ovládání zobrazení času a datumu se naučíme využívat nabídku.

V této aplikaci si ukážeme jakým způsobem zobrazovat čas a datum. Pro ovládání zobrazení času a datumu se naučíme využívat nabídku. HODINY V této aplikaci si ukážeme jakým způsobem zobrazovat čas a datum. Pro ovládání zobrazení času a datumu se naučíme využívat nabídku. Prvky na formuláři Na formuláři potřebuji jen dva prvky typu Label

Více

Programovani v Maplu Procedura

Programovani v Maplu Procedura Programovani v Maplu Procedura Priklad: procedura, ktera scita 2 cisla: a + 2*b soucet := proc (a, b) local c; # lokalni promenna - existuje a meni se jenom uvnitr procedury c:=a+b; # globalni promenna

Více

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz (2 + 5) * (13-4) * + - 2 5 13 4 - listy stromu obsahují operandy (čísla) - vnitřní uzly obsahují operátory (znaménka)

Více

PARADIGMATA PROGRAMOVÁNÍ 2 KORUTINY, NEDETERMINISMUS

PARADIGMATA PROGRAMOVÁNÍ 2 KORUTINY, NEDETERMINISMUS KATEDRA INFORMATIKY, P ÍRODOV DECKÁ FAKULTA UNIVERZITA PALACKÉHO, OLOMOUC PARADIGMATA PROGRAMOVÁNÍ 2 KORUTINY, NEDETERMINISMUS Slajdy vytvo ili Vilém Vychodil a Jan Kone ný (KI, UP Olomouc) PP 2, Lekce

Více

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

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

Více

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

Abstraktní datové typy FRONTA

Abstraktní datové typy FRONTA Abstraktní datové typy FRONTA Fronta je lineární datová struktura tzn., že ke každému prvku s výjimkou posledního náleží jeden následník a ke každému prvku s výjimkou prvního náleží jeden předchůdce. Do

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

Tematický celek 03 - Cvičné příklady

Tematický celek 03 - Cvičné příklady Tematický celek 03 - Cvičné příklady Cvičný 1 Dim a As Object Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Proceruda tlačítka "Vlož obsah

Více

Programovací jazyk Haskell

Programovací jazyk Haskell Programovací jazyk Haskell Ing. Lumír Návrat katedra informatiky, D 403 59 732 3252 Historie září 1991 Gofer experimentální jazyk Mark P. Jones únor 1995 Hugs Hugs98 téměř úplná implementace jazyka Haskell

Více

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

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

Více

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi

Evoluční algoritmy. Podmínka zastavení počet iterací kvalita nejlepšího jedince v populaci změna kvality nejlepšího jedince mezi iteracemi Evoluční algoritmy Použítí evoluční principů, založených na metodách optimalizace funkcí a umělé inteligenci, pro hledání řešení nějaké úlohy. Populace množina jedinců, potenciálních řešení Fitness function

Více

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094 10 ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094 Matematicko-fyzikální fakulta Univerzita Karlova v Praze 1 ROZHODOVÁNÍ TEORIÍ POMOCÍ SAT ŘEŠIČE (SMT)

Více

Rekurze. IB111 Úvod do programování skrze Python

Rekurze. IB111 Úvod do programování skrze Python Rekurze IB111 Úvod do programování skrze Python 2015 1 / 64 XKCD: Tabletop Roleplaying https://xkcd.com/244/ 2 / 64 To iterate is human, to recurse divine. (L. Peter Deutsch) 3 / 64 Rekurze použití funkce

Více

Informatika 8. třída/6

Informatika 8. třída/6 Rekurze Jedním z důležitých principů pro návrh procedur je tzv. rekurze. Nejlépe uvidíme tento princip na příkladech dvou velmi jednoduchých procedur (hvězdička označuje násobení). Rekurze vlastně označuje

Více

Programovací í jazyk Haskell

Programovací í jazyk Haskell Historie Programovací í jazyk Haskell doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 září 1991 Gofer experimentální jazyk Mark P. Jones únor 1995 Hugs Hugs98 téměř úplná implementace

Více

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Příklady v MATLABu Přednáška 10 30. listopadu 2009 Řídící instrukce if else C Matlab if ( podmínka ) { } else { } Podmíněný příkaz if podmínka elseif podmínka2... else

Více

Programy a algoritmy pracující s čísly. IB111 Úvod do programování skrze Python

Programy a algoritmy pracující s čísly. IB111 Úvod do programování skrze Python Programy a algoritmy pracující s čísly IB111 Úvod do programování skrze Python 2013 1 / 60 Připomenutí z minule proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady: faktoriál, binární

Více

Paralelní programování

Paralelní programování Paralelní programování přednáška 5 Michal Krupka 15. března 2011 Michal Krupka (KI UP) Paralelní programování 15. března 2011 1 / 13 Ještě ke kritickým sekcím Použití v praxi obvykle pomocí zámků (locks)

Více

BI-EP1 Efektivní programování 1

BI-EP1 Efektivní programování 1 BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze Evropský

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 4 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování Klauzule příkazu

Více

Programovací jazyk Prolog

Programovací jazyk Prolog Programovací jazyk Prolog Logické programování Šárka Vavrečková Ústav informatiky, Filozoficko-přírodovědecká fakulta Slezské univerzity v Opavě sarka.vavreckova@fpf.slu.cz 1. prosince 2008 Prolog Co je

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

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007 WSH Windows Script Hosting OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007 Co je skript? Skriptování nástroj pro správu systému a automatizaci úloh Umožňuje psát skripty jednoduché interpretované programové

Více

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu

Více

Programování v jazyce JavaScript

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

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

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1 Výraz - syntaxe i sémantika podobné jako v matematice - obsahuje proměnné, konstanty, operátory, závorky, volání funkcí - všechny operátory nutno zapisovat (nelze např. vynechat znak násobení) - argumenty

Více

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina 5a. Makra Visual Basic pro Microsoft Escel Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty Zde bude stránka o cyklických odkazech a iteracích.

Více

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý

Více

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1 Rekurze V programování ve dvou hladinách: - rekurzivní algoritmus (řešení úlohy je definováno pomocí řešení podúloh stejného charakteru) - rekurzivní volání procedury nebo funkce (volá sama sebe přímo

Více

Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT

Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT Šablonové (generické) metaprogramování Šablona v C++, genericita v jiných jazycích Výpočetní úplnost Problémy Příklad Porovnání s klasickým

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

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

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

Více

1. Téma 03 - Rozhodování

1. Téma 03 - Rozhodování 1. Téma 03 - Rozhodování Cíl látky Seznámit se a prakticky si vyzkoušet zápis rozhodování v jazyce Java 1.1. Úvod Jednou z nejčastěji používanou konstrukcí při programování je rozhodování. Právě této problematice

Více

Programy a algoritmy pracující s čísly. IB111 Úvod do programování skrze Python

Programy a algoritmy pracující s čísly. IB111 Úvod do programování skrze Python Programy a algoritmy pracující s čísly IB111 Úvod do programování skrze Python 2015 1 / 66 Rozcvička 1 2 + 2 2 + 3 2 + + 99 2 + 100 2 2 / 66 Připomenutí z minule proměnné, výrazy, operace řízení výpočtu:

Více

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Petr Blaha Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce (matematické, textové,

Více

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat

Více

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu

ČVUT FEL X36PAA - Problémy a algoritmy. 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu ČVUT FEL X36PAA - Problémy a algoritmy 5. úloha - Seznámení se se zvolenou pokročilou iterativní metodou na problému batohu Jméno: Marek Handl Datum: 4. 2. 2009 Cvičení: Pondělí 9:00 Zadání Zvolte si heuristiku,

Více

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody 4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty

Více

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620 Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620 1. Vymezení pojmů Strom: Strom je takové uspořádání prvků - vrcholů, ve kterém lze rozeznat předchůdce - rodiče a následovníky - syny.

Více