Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.

Podobné prezentace


Prezentace na téma: "Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu."— Transkript prezentace:

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


Stáhnout ppt "Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu."

Podobné prezentace


Reklamy Google