Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu
2
Programové cykly OB21-OP-EL-KONP-JANC-M-3-001 OB21-OP-EL-KONP-JANC-M-3-001
3
Programové cykly Mnoho úloh spočívá v triviálních operacích, které se však musí opakovat mnohokrát za sebou. O to se postarají struktury cyklů, které jsou důležitou součástí všech programovacích jazyků. Programové cykly se tedy používají pro opakované provádění příkazů. Příkazům, které se opakovaně provádějí, říkáme tělo cyklu.
4
Programové cykly V jazyce Pascal existují tři druhy programových cyklů: while – do (while = zatímco platí, do = dělej) repeat – until (repeat = opakuj, until = dokud neplatí …) for – to (downto) – do (for = pro, to = do hodnoty, downto = až do hodnoty)
5
Cyklus while – do Syntax příkazu je whilepodmínka dopříkaz; Podmínka představuje normální logický (booleovský) výraz, který může nabývat hodnoty pravda (true – logická jedna) anebo nepravda (false – logická nula).
6
Cyklus while – do Příkaz cyklu je prováděn tak dlouho, dokud je podmínka pravdivá. Když se stane nepravdivou, cyklus je ukončen a program pokračuje prvním příkazem za cyklem. Příkaz v cyklu může být také složený, tedy v bloku begin…end může být víc příkazů. Test podmínky pro provádění cyklu je na jeho začátku. To znamená, že aby byl cyklus proveden alespoň jednou, musí být na začátku podmínka pravdivá.
7
Cyklus while – do Aby byl cyklus ukončen, musí se podmínka stát při provádění cyklu nepravdivou. To může být provedeno například jedním z příkazů v cyklu. Tento cyklus se často používá pro čtení dat ze souboru. V tomto případě je podmínka tvořena funkcí, která při čtení souboru zjistí jeho konec a cyklus se ukončí. Pro zvýraznění podmínky (lepší čitelnost) může být podmínka uzavřena v závorkách, např. while (X >= 12) do
8
Cyklus repeat – until Syntax příkazu je repeatpříkaz; until podmínka; Příkaz v cyklu je prováděn, pokud je podmínka nepravdivá. Test podmínky je proveden na konci cyklu, to znamená, že cyklus je proveden alespoň jednou. Aby byl cyklus ukončen, musí se podmínka při jeho provádění stát pravdivou. To může být provedeno například jedním z příkazů v cyklu.
9
Cyklus repeat – until Příkaz v cyklu může být také složený. Protože slova repeat a until vytvářejí již sama o sobě blok, uzavření příkazů v cyklu mezi begin a end není nutné. Logické podmínky jsou stejné jako u příkazu while – do. Podmínka může být opět uzavřena v závorkách, např. repeat … until (X > 15 );
10
Cyklus repeat – until Jednou z možností použití tohoto cyklu je pozastavení programu před jeho ukončením, aby byly vidět výsledky chodu programu bez nutnosti přepínání do uživatelského okna. Cyklus je prázdný, nejsou v něm žádné příkazy.
11
Cyklus repeat – until repeat until keypressed; Funkce keypressed (= klávesa stisknuta) vrací logickou hodnotu false, není-li stisknuta jakákoli klávesa (mimo Ctrl, Alt, apod.), v opačném případě vrací hodnotu true. Stisknutím klávesy se podmínka stane pravdivou a příkaz cyklu repeat – until se ukončí a program pokračuje následujícím příkazem za cyklem. V tomto případě je cyklus ukončen vnější událostí, tedy stisknutím klávesy uživatelem.
12
Cyklus repeat – until Cyklus může být napsán na jednom řádku: repeat until keypressed; Funkce keypressed je v programové jednotce crt. Tato jednotka musí být v programu deklarována v sekci uses. V cyklu repeat – until je možné použít také logickou proměnnou typu boolean.
13
Cyklus for - to (downto) – do Existují dva způsoby provádění tohoto cyklu. Řídící proměnná cyklu se může zvětšovat, nebo zmenšovat. for i := pochodnota to konhodnota dopříkaz; Řídící proměnná cyklu i se zvětšuje. Cyklus je prováděn od počáteční hodnoty pochodnota do konečné hodnoty konhodnota. Musí tedy platit pochodnota <= konhodnota.
14
Cyklus for - to (downto) – do for i := pochodnota downto konhodnota do příkaz; Řídící proměnná cyklu i se zmenšuje. Cyklus je prováděn od počáteční hodnoty pochodnota do konečné hodnoty konhodnota. Musí tedy platit pochodnota >= konhodnota. Řídící proměnná cyklu je obvykle typu integer, nesmí být typu real. Použití cyklu for – downto – do je méně časté.
15
Cyklus for - to (downto) – do Jestliže je pochodnota = konhodnota, cyklus je proveden jednou. Je-li konhodnota < pochodnota, ( pro cyklus for – to – do) nebo konhodnota > pochodnota (pro cyklus for – downto – do), cyklus není proveden ani jednou a je vynechán (přeskočen). Příkaz v cyklu může být také složený, více příkazů může být uzavřeno v bloku begin – end.
16
Cyklus for - to (downto) – do Tento cyklus se používá, když je předem známo, kolikrát má být opakován, tedy jaká je počáteční a konečná hodnota řídící proměnné. Naproti tomu cykly while – do a repeat – until jsou ukončeny logickou podmínkou. Cyklus for – to – do se často používá pro opakovaný výpočet nějakého vzorce pro různé hodnoty proměnných, tedy pro výpočet tabulky.
17
Větvení programu Při programování se často dostaneme do situace, kdy se musí program rozhodnout, jak pokračovat dál. V pascalu jsou možné dva způsoby, jak se rozhodnout : Porovnáním hodnot – vzniká logický výraz (větvení IF) Analýzou obsahu proměnné (CASE)
18
Podmínka if – then – else Tento příkaz má dva tvary. První (zjednodušený) je bez else. if podmínka then příkaz; Jestliže je podmínka splněna ( je pravdivá), příkaz následující za then je proveden. Není-li podmínka splněna (není pravdivá), tento příkaz není proveden (je přeskočen, vynechán).
19
Podmínka if – then – else Př.: if a>b then write(´a je větší´); Jestliže podmínka PLATÍ (tzn. a je větší než b) provede se příkaz za then. Jestliže podmínka neplatí, příkaz write se ignoruje a program pokračuje dál.
20
Podmínka if – then – else Druhý tvar je s else. if podmínka then příkaz_A else příkaz_B; Jestliže je podmínka splněna (je pravdivá), je proveden příkaz_A, není-li splněna (není pravdivá), je proveden příkaz_B. Před else, tedy za příkazem _A, nesmí být středník. Příkaz zde obecně znamená, že může jít o příkaz pouze jeden nebo o skupinu příkazů uzavřenou v bloku mezi slovy begin a end.
21
Podmínka if – then – else Př.: if a>b then write(´a je větší´) else write(´b je větší nebo rovno´); Jestliže podmínka PLATÍ (tzn. a je větší než b) provede se příkaz za then. Jestliže podmínka neplatí, provede se příkaz za else.
22
Podmínka if – then – else POZOR! Za příkazem ve větvi then NESMÍ být středník. Jinak by byl program zmatený. Středník by mu říkal, že příkaz IF skočil a najednou by se mu objevilo klíčové slovo ELSE. Program proto vyhodí chybu. Chceme-li provádět za větví THEN nebo ELSE více příkazů, musíme je uzavřít do závorky Begin End;
23
Podmínka if – then – else Př.: IF a>b THEN Begin ClrScr; Write(´a je větší´); End ELSE Write(´b je větší nebo rovno´); Jako podmínka se používá boolovský výraz. Ten může být buď jednoduchý anebo složený z více logických podmínek.
24
Podmínka if – then – else U složených podmínek se používají normální operátory známé z Booleovy algebry, tedy: notnegace logického výrazu (nejvyšší priorita) anda také (současně) – logický součin, musí být splněny dvě nebo více podmínek současně ornebo – logický součet, musí být splněna alespoň jedna podmínka (nejnižší priorita) Výsledkem porovnání hodnot v příkazu if je (logická) hodnota typu boolean, která může být buď pravdivá (true), nebo nepravdivá (false). Tato hodnota může být tedy přiřazena proměnné typu boolean.
25
Podmínka case – of – else Existuje i jiný příkaz pro větvení programu. Ten je pak větven podle hodnoty řídící proměnné N. Tato proměnná musí být ze skupiny typu integer (integer, byte, shortint, longint) nebo typu char. case N of konst1:příkaz_A; konst2:příkaz_B; konst3:příkaz_C; … else příkaz_X; end;
26
Podmínka case – of – else Je-li hodnota proměnné N rovna konstantě konst1, je proveden příkaz_A, je-li rovna konst2, je proveden příkaz_B, atd. Příkaz case může (ale nemusí) mít část else. Není-li hodnota N rovna žádné konstantě a else je použito, pak je proveden příkaz_X. Není-li část else použita, pak v příkazu case není proveden žádný příkaz. Konstanty jsou od příkazů odděleny dvojtečkou. Místo jedné konstanty může být konstant několik. Pak jsou odděleny čárkou.
27
Podmínka case – of – else Například: 3,4,8:Scale := 5.33; Pro hodnoty řídící proměnné cyklu rovné 3,4,8 je hodnota proměnné Scale = 5.33 CASE přistupuje k rozhodování úplně jinak. Zatímco If porovnává a rozhoduje se na základě toho jestli podmínka platí nebo ne, Case se podívá na obsah proměnné a potom se rozhodne. Příkaz Case je ukončen End se středníkem. To klade na programátora větší nároky, protože musí vědět, co by mohla proměnná obsahovat.
28
Podmínka case – of – else Př.: Var A: byte; Begin ReadLn (a); Case a Of 1: Write (´Zadal jste jedničku. ´); 2.. 5 : Write (´Zadal jste hodnotu z intervalu 2 až 5. ´); else Write (´Zadal jste hodnotu větší než 5. ´); end; End.
29
Podmínka case – of – else Komentář k příkladu: Program načte od uživatele hodnotu do proměnné a. Case se podívá co proměnná a obsahuje. Mohou nastat tři případy: 1. Proměnná a obsahuje číslo 1. V takovém případě se vypíše text „Zadal jste jedničku“. Ostatní části Case se ignorují. 2. Proměnná obsahuje číslo v intervalu od 2 do 5. V takovém případě se vypíše prostřední varianta – text „Zadal jste hodnotu z intervalu 2 až 5.“
30
Podmínka case – of – else 3. Proměnná neobsahuje ani 1, ani číslo z intervalu od 2 do 5, ale úplně jiné číslo. V takovém případě se provede větev else.
31
Děkuji za pozornost Ing. Ladislav Jančařík
32
Literatura Putz K.: Pascal – učebnice základů programování, Grada Publishing Praha, 2007
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.