Pascal - cykly
CYKLUS S PODMIENKOU NA ZAČIATKU Príkazy cyklu nám umožňujú predpísať opakovanie príkazov alebo postupností príkazov viackrát. V pascale počet opakovaní predpíšeme( explicitne alebo implicitne) v tvare podmienky. Táto podmienka určuje či má v opakovaní pokračovať alebo ho má ukončiť. Poznáme tri druhy príkazov: while, for a repeat. Pri opakovaní nejakej činnosti nám musí byť jasné, čo sa má opakovať a dokedy sa to bude opakovať. Pri cykle s podmienkou na začiatku sa telo opakuje pokiaľ je splnená podmienka. While b do p Telo p sa bude opakovať kým podmienka b typu boolean bude true. Telo cyklu môže obsahovať aj viac príkazov, ktoré je potrebné ohraničiť beginom a endom. Kým podmienka rob telo *kým
PRÍKLAD: Zostavte program, ktorý nájde najmenší spoločný násobok dvoch prirodzených čísel. Program pr7; uses crt; var a,b,pom,sucin:integer;nsn:real; begin clrscr; write('Zadaj dve cisla (a>b): ');readln(a,b); sucin:=a*b; while b>0 do begin pom:=a; a:=b; b:=pom mod b; end; nsn:=sucin/a; writeln('NSN tychto cisel je ',nsn:0:0); readln; End.
CYKLUS S PODMIENKOU NA KONCI Viz 5 ot. .Najprv sa vykoná telo cyklu a potom sa testuje, či je podmienka splnená. Pri viacerých príkazoch v tele nie je potrebné použiť begin a end. Repeat p until b Repeat a until sú vyhradené slová. Cyklus sa bude opakovať kým b- podmienka, typu boolean, bude false. Akonáhle bude b pravdivé, cyklus skončí. Opakuj telo pokiaľ podmienka *opakuj Príkazy s podmienkou na začiatku a na konci sa použijú samozrejme v prípadoch keď nepoznám vopred počet opakovaní. Napr. pri triedení, vyhľadávaní atď.
PRÍKLAD: Zostavte program, ktorý pomocou Euklidovho algoritmu (pomocou zvyškov ) nájde najväčšieho spoločného deliteľa dvoch prirodzených čísel.
Program pr6; uses crt; var a,b,c,d,e:integer; begin writeln('Zadaj dve cele cisla (a>b): ');readln(a,b); d:= a; e:= b; repeat c:= a mod b; a:= b; b:= c; until c=0; writeln('Najvacsi spolocny delitel cisel ',d,' a ',e,' je ',a); readln; End.
CYKLUS SO ZNÁMYM POČTOM OPAKOVANÍ
Viz 5 ot. . Je jasné koľkokrát sa cyklus bude opakovať. Na ohraničenie príkazov v tele je potrebný begin a end. Poznáme dva tvary zápisu. For R:= Z downto K do p For R:= K to Z do p
Pre premenná od z po r rob telo *pre R je riadiacou premennou a Z,K sú výrazy ordinálneho typu. Downto použijeme keď Z bude väčšie než K. Pri každom opakovaní sa z, či k zväčší alebo zmenší resp.
priradí nasledovníka alebo predchodcu. Cyklus skončí keď z=k. Všetky cykly sa môžu použiť aj ako cyklus v cykle. To znamená, že podcyklus bude vlastne príkazom v tele cyklu. Dá sa použiť napr. pri načítavaní dvojrozmerného pola. Príkazy so známym počtom opakovaní sa môžu použiť ďalej pri načítavaní, výpise pola, pri lineárnom a binárnom vyhľadávaní, pri triedení atď. PRÍKLAD: Zostavte program, ktorý vypočíta aritmetický priemer z čísel, ktoré zadá užívateľ. Program pr1; var i,pocet:integer;sucet,zlozka,priemer:real; begin write('Zadaj pocet cisel: ');readln(pocet); sucet:=0;zlozka:=0;writeln; for i:=1 to pocet do begin write('Zadaj ',i,' zlozku: ');readln(zlozka); sucet:=sucet+zlozka; zlozka:=0; end; priemer:=sucet/pocet;writeln; writeln('Priemer zo zadanych cisel je: ',priemer:2:2); readln; End.
|