Střední škola stavební Jihlava
Sada 1 - Základy programování 10. Opakování v cyklech Digitální učební materiál projektu: SŠS Jihlava – šablony registrační číslo projektu:CZ.1.09/1.5.00/34.0284 Šablona: III/2 - inovace a zkvalitnění výuky prostřednictvím ICT
Jaromír Železný © 2012
Projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky
Střední škola stavební Jihlava
Sada 1 - Základy programování 10. Opakování v cyklech Digitální učební materiál projektu: SŠS Jihlava – šablony registrační číslo projektu:CZ.1.09/1.5.00/34.0284 Šablona: III/2 - inovace a zkvalitnění výuky prostřednictvím ICT
Jaromír Železný © 2012
Projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky
Opakování v cyklech • podmínky a cykly jsou v programování podobní jako dva bratři, cyklus je v podstatě opakující se podmínka, dokud nezíská hodnotu TRUE • cykly v programech používáme pro akce, které chceme opakovat do doby, dokud stav uvedený v podmínce opakování nepřeruší a program pokračuje dále
Opakování v cyklech • u cyklů je nejdůležitější přesnost, musíme tedy správně formulovat dvě okolnosti: • podmínku, aby se cyklus prováděl tak dlouho, jak potřebujeme • posloupnost příkazů, které se mají vykonat v každém kroku cyklu (při každém opakování cyklu). Po vykonání všech příkazů v daném cyklu se program vrátí k podmínce a rozhodne mezi dvěma možnostmi – jestli se nebo není podmínka splněna.
Opakování v cyklech • Jako příklad si vezmeme přísloví „tak dlouho se chodí se džbánem pro vodu, dokud se ucho neutrhne“ • Podmínkou je, aby džbán měl ucho, posloupnost příkazů je dojít pro vodu. • Džbán má ucho -> jdeme pro vodu -> přineseme vodu -> zkontrolujeme, zda ucho pořád drží u džbánu -> ucho drží (džbán má ucho) - > jdeme pro vodu,………….., - >zkontrolujeme zda ucho pořád drží u džbánu -> ucho se utrhlo (džbán nemá ucho) -> pro vodu nejdeme (opustíme cyklus) -> a pokračujeme s dalšími příkazy mimo nošení vody
Opakování v cyklech • Cykly dělíme: – se známým počtem opakování – s podmínkou na začátku – s podmínkou na konci
Cyklus se známým počtem opakování • tento cyklus také nazýváme cyklus FOR podle jeho prvního slova, v hlavičce cyklu je předem určeno, kolikrát se má cyklus provést • zapisuje se FOR i:=x TO y DO prikazy cyklu, co volně přeloženo znamená „pro proměnnou i od počáteční hodnoty x až po koncovou hodnotu y prováděj příkazy. Po provedení těla cyklu je řídící hodnotě i přiřazena nová hodnota, která následuje za hodnotou současnou. • variantou cyklu for je zápis down to (dolů k) FOR i:= x DOWNTO y DO prikazy cyklu, kdy hodnota řídící proměnné i je po každém provedení těla cyklu snížena
Cyklus se známým počtem opakování • proměnná i určuje počet opakování cyklu, tuto proměnou nazýváme řídící proměnnou cyklu. Její počáteční hodnota je dána x , což je hodnota, kterou bude mít řídící proměnná před započetím cyklu • Hodnota y slouží k ukončení cyklu. Vypočte (uvede se) se před zahájením cyklu a je vždy před provedením příkazů porovnávána s hodnotou řídící proměnné i. Je-li hodnota řídící proměnné i menší nebo rovna hodnotě y provede se tělo cyklu (příkazy cyklu), v opačném případě je cyklus ukončen. Po provedení cyklu je řídící hodnotě i přiřazena nová hodnota, která následuje za hodnotou současnou
Cyklus se známým počtem opakování • Barta Simpsona zná snad každý, a každý si pamatuje, jak Bart na začátku každého dílu píše na tabuli „Už nikdy nebudu…“ Tuto větu má napsat například 20x. • Pokud bychom měli tuto Bartovu činnost naprogramovat, vypadalo by to asi následovně: program Bart; var i:integer; begin
for i:=1 TO 20 DO Begin write (‘Nikdy si nebudu stahovat tento film! ‘); end; readln; end.
Cyklus s podmínkou na začátku • podmínka cyklu je uvedena na začátku a cyklus se provádí do té doby, dokud je podmínka splněna • zapisuje se WHILE podminka DO prikazy cyklu • pokud bychom to opět měli aplikovat na Barta Simpsona, vypadalo by to následovně: PROGRAM Bart; VAR i:integer; BEGIN i:=1; WHILE (i<=20) DO BEGIN WRITE (‘Nikdy si nebudu stahovat tento film! ‘); i:=i+1; END; READLN; END.
Cyklus s podmínkou na konci • podmínka cyklu je uvedena na konci a cyklus se provádí do té doby, dokud není podmínka splněna • zapisuje se REPEAT …prikazy cyklu… UNTIL podminka • pokud toto opět budeme aplikovat na Barta Simpsona, vypadalo by to následovně: PROGRAM Bart; VAR i:integer; BEGIN i:=1; REPEAT BEGIN WRITE (‘Nikdy si nebudu stahovat tento film! ‘); i:=i+1; END; UNTIL (i>20); READLN; END.
Opakování v cyklech • cykly WHILE a REPEAT-UNTIL mají mnoho společného • při vytváření podmínky si zapamatujte mnemotechnickou pomůcku: „Při splnění podmínky následují příkazy, které jsou uvedeny bezprostředně za podmínkou“. • cyklus REPEAT-UNTIL proběhne vždy minimálně alespoň 1x, oproti cyklu WHILE, jehož tělo vůbec proběhnout nemusí • dá se říci, že pokud by se použila negovaná podmínka z cyklu WHILE, vznikne cyklus REPEAT WHILE (i<=20) DO REPEAT … UNTIL (i>20) DO
Opakování v cyklech •
Napište program, který vypíše na obrazovku větu „ V hodinách budu dávat pozor. “ s tím, že větu vypíšete 20x pomocí cyklu FOR, 20x s pomocí cyklu WHILE a 20x s pomocí cyklu REPEAT. PROGRAM cykly; VAR i : integer; BEGIN FOR i:=1 TO 20 DO WRITE (‘V HODINACH BUDU DAVAT POZOR.‘); i:=1; WHILE i<=20 DO BEGIN WRITE (‘V HODINACH BUDU DAVAT POZOR.‘); i:=i+1; END; I:=1; REPEAT WRITE (‘V HODINACH BUDU DAVAT POZOR.‘); i:=i+1; UNTIL i>20; READLN; END.
Zdroje: TurboPascal 6.0 - příručka uživatele (help) Literatura: Radek HYLMAR: Programování pro úplné začátečníky, Computer Press, Brno, 2009, ISBN 978-80-251-2129-0 Januš DRÓZD, Rudolf KRYL: Začínáme s programováním, GRADA a.s., Praha, 1992, ISBN 80-85424-41-X Tomáš HRUŠKA: Pascal pro začátečníky, SNTL, Praha 1989, ISBN 80-03-00345-8 Materiál je určen k bezplatnému používání pro potřeby výuky a vzdělávání na všech typech škol a školských zařízení. Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je : Jaromír Železný Pokud není uvedeno jinak, byly při tvorbě použity volně přístupné internetové zdroje. Autor souhlasí se sdílením vytvořených materiálů a jejich umístěním na www.ssstavji.cz.