S tř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
S tř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 vprogramování podobní jako dva bratři, cyklus je vpodstatě 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 vkaždém kroku cyklu (při každém opakování cyklu). Po vykonání všech příkazů vdaném cyklu se program vrátí kpodmí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 sdalší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, vhlavič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 iod počáteční hodnoty xaž po koncovou hodnotu yprováděj příkazy. Po provedení těla cyklu je řídící hodnotě ipřiřazena nová hodnota, která následuje za hodnotou současnou. variantoucyklufor je zápisdown 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á iurč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 yslouží k ukončení cyklu. Vypočte (uvede se) se před Hodnota yslouží 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é imenší nebo rovna hodnotě yprovede se tělo cyklu (příkazy cyklu), v opačném případě je cyklus ukončen. Po provedení cyklu je řídící hodnotě ipřiřazena nová hodnota, která následuje za hodnotou současnou
Cyklus se známým počtem opakování BartaSimpsonazná snad každý, a každý si pamatuje, jak Bartna 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 BartaSimpsona, 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 BartaSimpsona, 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 WHILEa REPEAT-UNTILmají 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 zcyklu 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.