+ All Categories
Home > Documents > 3. Příkazy

3. Příkazy

Date post: 25-Jan-2016
Category:
Upload: lilia
View: 35 times
Download: 0 times
Share this document with a friend
Description:
3. Příkazy. Příkazy dělíme na jednoduché a strukturované . Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu, skoku, procedury, prázdný - PowerPoint PPT Presentation
29
3. Příkazy 3. Příkazy Příkazy dělíme na Příkazy dělíme na jednoduché jednoduché a a strukturované strukturované . . Jednoduché příkazy Jednoduché příkazy - žádnou jejich dílčí - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu částí neni příkaz - přiřazovací, vstupu a výstupu, skoku, procedury, prázdný a výstupu, skoku, procedury, prázdný Strukturované příkazy Strukturované příkazy - skládají se z - skládají se z dílčích příkazů, předepisuje se jimi dílčích příkazů, předepisuje se jimi postupné, podmíněné a opakované postupné, podmíněné a opakované provádění dílčích příkazů - složený, provádění dílčích příkazů - složený, podmíněný (if, case), cyklu (repeat- podmíněný (if, case), cyklu (repeat- until, while-do, for), with until, while-do, for), with
Transcript
Page 1: 3. Příkazy

3. Příkazy3. Příkazy

Příkazy dělíme na Příkazy dělíme na jednoduchéjednoduché a a strukturovanéstrukturované.. Jednoduché příkazyJednoduché příkazy - žádnou jejich dílčí částí - žádnou jejich dílčí částí

neni příkaz - přiřazovací, vstupu a výstupu, neni příkaz - přiřazovací, vstupu a výstupu, skoku, procedury, prázdnýskoku, procedury, prázdný

Strukturované příkazyStrukturované příkazy - skládají se z dílčích - skládají se z dílčích příkazů, předepisuje se jimi postupné, příkazů, předepisuje se jimi postupné, podmíněné a opakované provádění dílčích podmíněné a opakované provádění dílčích příkazů - složený, podmíněný (if, case), cyklu příkazů - složený, podmíněný (if, case), cyklu (repeat-until, while-do, for), with(repeat-until, while-do, for), with

Page 2: 3. Příkazy

3.3.11 Jednoduché příkazy Jednoduché příkazy

Přiřazovací příkaz Přiřazovací příkaz

Definuje hodnotu proměnné (spolu s příkazem vstupu), Definuje hodnotu proměnné (spolu s příkazem vstupu), proměnná na levé straně musí být stejného typu jako proměnná na levé straně musí být stejného typu jako výraz na pravé straně (případně výraz může být typu výraz na pravé straně (případně výraz může být typu integer pro proměnnou typu real - dojde k automatické integer pro proměnnou typu real - dojde k automatické konverzi). Výraz musí být základního typu (integer, real, konverzi). Výraz musí být základního typu (integer, real, char, boolean), v TP může být ještě typu řetězec. char, boolean), v TP může být ještě typu řetězec. Přiřazovacím příkazem je možno také kopírovat Přiřazovacím příkazem je možno také kopírovat strukturovanou proměnnou (pole, záznam) do jiné strukturovanou proměnnou (pole, záznam) do jiné proměnné totožného (pojmenovaného) typu.proměnné totožného (pojmenovaného) typu.

přiřazovací příkaz

proměnná := výraz

Page 3: 3. Příkazy

3.3.11 Jednoduché příkazy Jednoduché příkazy Příkaz vstupuPříkaz vstupu

Většina programů provádí zpracování vstupních dat a vytváří Většina programů provádí zpracování vstupních dat a vytváří výstupní data. Pro komunikaci mezi počítačem a uživatelem slouží výstupní data. Pro komunikaci mezi počítačem a uživatelem slouží data, která mají formu posloupnosti znaků, členěné na řádky - data data, která mají formu posloupnosti znaků, členěné na řádky - data textového typu. Kromě nich se používají ještě data, která odsahují textového typu. Kromě nich se používají ještě data, která odsahují údaje ve vnitřní reprezentaci a která slouží pro komunikaci mezi údaje ve vnitřní reprezentaci a která slouží pro komunikaci mezi programy nebo částmi programů.programy nebo částmi programů.

Standardnímu vstupnímu textovému souboru Standardnímu vstupnímu textovému souboru inputinput je v každé je v každé implementaci přiřazeno určité vstupní zařízení, které umožňuje implementaci přiřazeno určité vstupní zařízení, které umožňuje vstup posloupnosti znaků, členěné na řádky - klávesnice, dříve vstup posloupnosti znaků, členěné na řádky - klávesnice, dříve štítky, děrná páska. Tento vstupní soubor se otevírá automaticky. štítky, děrná páska. Tento vstupní soubor se otevírá automaticky. Údaje se ze vstupního souboru čtou příkazem:Údaje se ze vstupního souboru čtou příkazem:

read(input, read(input, seznam proměnnýchseznam proměnných););

Page 4: 3. Příkazy

3.3.11 Jednoduché příkazy Jednoduché příkazyPříkaz vstupuPříkaz vstupu

Identifikátor input je v TP možno vynechat, způsob čtení je dán typem proměnné:Identifikátor input je v TP možno vynechat, způsob čtení je dán typem proměnné:typ chartyp char - přečte se jeden znak, je-li to oddělovač řádků,uloží se mezera (v TP se - přečte se jeden znak, je-li to oddělovač řádků,uloží se mezera (v TP se oddělovač oddělovač řádků čte jako dvojice znaků #13#10)řádků čte jako dvojice znaků #13#10)typ integertyp integer - čte se posloupnost znaků, tvořící dekadický zápis pčísla; číslu může - čte se posloupnost znaků, tvořící dekadický zápis pčísla; číslu může předcházet libovolný počet mezer a oddělovačů řádků, ale nesmí žádný jiný znakpředcházet libovolný počet mezer a oddělovačů řádků, ale nesmí žádný jiný znak

typ realtyp real - podobně jako u typu integer se čte desetinné číslo případně v - podobně jako u typu integer se čte desetinné číslo případně v exponenciálním tvaru - 1.234, 3e-2; čtení končí posledním znakem, který patří číslu, exponenciálním tvaru - 1.234, 3e-2; čtení končí posledním znakem, který patří číslu, následující znak se čte při příštím čtení.následující znak se čte při příštím čtení.

Př.: Př.: 25 25 -34.5-34.5 <<┘┘ var i,j : integer;var i,j : integer; +93 –27B+93 –27B < <┘┘ x,y : real;x,y : real; zn1,zn2 : char;zn1,zn2 : char;

read(i); {i=25}read(i); {i=25} read(j);{j=-27}read(j);{j=-27} read(x);read(x); {x=-34.5}{x=-34.5} read(zn1);{zn1='b'}read(zn1);{zn1='b'} read(zn1,zn2);{y=93.0}read(zn1,zn2);{y=93.0} read(zn2);{zn2=' '}read(zn2);{zn2=' '}

nebo read(i,x,y,j,zn1,zn2); - lze jediným příkazem.nebo read(i,x,y,j,zn1,zn2); - lze jediným příkazem.

Page 5: 3. Příkazy

3.3.11 Jednoduché příkazy Jednoduché příkazy Příkaz Příkaz readlnreadln přeskočí zbývající znaky do konce řádku, následující přeskočí zbývající znaky do konce řádku, následující

příkaz čtení bude číst ze začátku dalšího řádku. Příkaz je možno použít příkaz čtení bude číst ze začátku dalšího řádku. Příkaz je možno použít samostatně nebo se seznamem proměnných.samostatně nebo se seznamem proměnných.

Při čtení se rozeznávají dva stavy - Při čtení se rozeznávají dva stavy - konec řádkukonec řádku a a konec souborukonec souboru. . Konec řádkuKonec řádku je stav po přečtení posledního znaku na řádku. Příkaz je stav po přečtení posledního znaku na řádku. Příkaz read čte v tomto stavu mezeru odpovídající konci řádku (do prom. typu read čte v tomto stavu mezeru odpovídající konci řádku (do prom. typu char). char). Konec souboruKonec souboru je stav po přečtení posledního znaku - obvykle je stav po přečtení posledního znaku - obvykle je to znak konce řádku. Čtení v tomto stavu způsobí chybu. Pro indikaci je to znak konce řádku. Čtení v tomto stavu způsobí chybu. Pro indikaci těchto stavů existují standardní funkce eoln a eof. Eoln - logická funkce, těchto stavů existují standardní funkce eoln a eof. Eoln - logická funkce, ve stavu konec řádku vrací hodnotu true, jinak false. Eof - logická ve stavu konec řádku vrací hodnotu true, jinak false. Eof - logická funkce, ve stavu konec souboru vrací hodnotu true, jinak false.funkce, ve stavu konec souboru vrací hodnotu true, jinak false.

Př.:Př.: znzn eolneoln eofeof ab <ab <┘┘ read(zn)read(zn) ''aa'' ff ff c * c * 'b''b' tt ff ''__'' ff ff

''cc'' tt ff ''__'' ff tt

Page 6: 3. Příkazy

3.3.11 Jednoduché příkazy Jednoduché příkazy

Místo mezery při čtení konce řádku se čtou skutečné Místo mezery při čtení konce řádku se čtou skutečné oddělovače řádku - znaky #13, #10. Konec řádku je oddělovače řádku - znaky #13, #10. Konec řádku je vhodné přeskočit příkazem readln. vhodné přeskočit příkazem readln.

Konec vstupu (souboru) se z klávesnice zadává znakem Konec vstupu (souboru) se z klávesnice zadává znakem ctrl_z. Při použití unitu crt musí být v programu uveden ctrl_z. Při použití unitu crt musí být v programu uveden příkaz checkeof := true, za ctrl_z neni třeba mačkat enter, příkaz checkeof := true, za ctrl_z neni třeba mačkat enter, ctrl_z se nezobrazuje.ctrl_z se nezobrazuje.

Vstupní řádek, odeslaný z klávesnice klávesou ENTER se Vstupní řádek, odeslaný z klávesnice klávesou ENTER se ukládá do vstupního bufferu. Příkaz readln způsobí ukládá do vstupního bufferu. Příkaz readln způsobí vyprázdnění tohoto bufferu. Je-li buffer prázdný, příkaz vyprázdnění tohoto bufferu. Je-li buffer prázdný, příkaz eoln nebo eof vyvolá načtení dalšího řadku. Příznak konce eoln nebo eof vyvolá načtení dalšího řadku. Příznak konce řádku nebo souboru musí být v bufferu první, mají-li řádku nebo souboru musí být v bufferu první, mají-li funkce eof, eoln vrátit hodnotu true.funkce eof, eoln vrátit hodnotu true.

Page 7: 3. Příkazy

3.3.11 Jednoduché příkazy Jednoduché příkazy

Příkaz výstupuPříkaz výstupu

Standardnímu textovému souboru output je v každé Standardnímu textovému souboru output je v každé implementaci přiřazeno určité výstupní zařízení, které implementaci přiřazeno určité výstupní zařízení, které umožňuje výstup posloupnosti znaků, členěné na umožňuje výstup posloupnosti znaků, členěné na řádky - tiskárna, displej. Tento výstupní soubor se řádky - tiskárna, displej. Tento výstupní soubor se otevírá automaticky. Údaje se do výstupního souboru otevírá automaticky. Údaje se do výstupního souboru čtou příkazem:čtou příkazem:

write(output, write(output, seznam proměnnýchseznam proměnných););

Identifikátor output je v TP možno vynechatIdentifikátor output je v TP možno vynechat

Page 8: 3. Příkazy

3.3.11 Jednoduché příkazy Jednoduché příkazy

Příkaz výstupuPříkaz výstupu

Kromě vystupující hodnoty může být předepsán Kromě vystupující hodnoty může být předepsán celkový počet vystupujících znaků a u desetinných celkový počet vystupujících znaků a u desetinných čísel také počet desetinných míst. Je-li v parametru čísel také počet desetinných míst. Je-li v parametru určen větší počet znaků než je nutné, doplní se určen větší počet znaků než je nutné, doplní se vystupující hodnota zleva mezerami, je-li počet menší vystupující hodnota zleva mezerami, je-li počet menší než je nutné, vystoupí v případě čísel minimální nutný než je nutné, vystoupí v případě čísel minimální nutný počet znaků, u typu řetězec pouze zadaný počet počet znaků, u typu řetězec pouze zadaný počet znaků. Je-li u hodnoty typu real v parametru určen znaků. Je-li u hodnoty typu real v parametru určen počet desetinných míst, vystoupí číslo v desetinném počet desetinných míst, vystoupí číslo v desetinném tvaru, jinak v exponenciálním. Logické hodnoty tvaru, jinak v exponenciálním. Logické hodnoty vystupují jako řetězce true a false. Vytvářený řádek se vystupují jako řetězce true a false. Vytvářený řádek se ukončí příkazem ukončí příkazem writeln writeln případně s parametry.případně s parametry.

Page 9: 3. Příkazy

Příkaz výstupuPříkaz výstupuPř.:Př.: varvar i:integer;i:integer; write(i:4);write(i:4); -253-253 r:real;r:real; write(abs(i):5);write(abs(i):5); ~~253~~253 z:char;z:char; write(i:2);write(i:2); -253-253 b;boolean;b;boolean; write(r:8:3);write(r:8:3); ~345.670~345.670 write(r:5:2);write(r:5:2); 345.67345.67

i:=-253;i:=-253; write(r:12);write(r:12); ~~3.4567e+02~~3.4567e+02r:=345.67;r:=345.67; write(r:9);write(r:9); ~3.46e+02 ~3.46e+02 z:=z:=''a';a'; write(z);write(z); aab:=true;b:=true; write(z:5);write(z:5); ~~~~a~~~~a

write(b:5);write(b:5); ~true~true write(not (b):1);write(not (b):1); ff write('abcd');write('abcd'); abcdabcd write('abcd':6);write('abcd':6); ~~abcd~~abcd write('abcd':2);write('abcd':2); abab

U kladného čísla se místo znaménka nechává mezera. Specifikátor délky U kladného čísla se místo znaménka nechává mezera. Specifikátor délky může být konstanta nebo proměnná.může být konstanta nebo proměnná.

Page 10: 3. Příkazy

Př.:Př.:program tabelace;program tabelace;const radek='*****************************';{29x}const radek='*****************************';{29x}varvar dm,hm,kr,x,y : real;dm,hm,kr,x,y : real; pocet : integer;pocet : integer;beginbegin writeln('program tabelace funkce');writeln('program tabelace funkce'); writeln('zadej dm,hm,krok');writeln('zadej dm,hm,krok'); readln(dm,hm,kr);readln(dm,hm,kr); writeln;writeln; writeln(radek);writeln(radek); writeln('* tabulka funkce *');writeln('* tabulka funkce *'); writeln('* y=sqrt(abs(sin(x))) *');writeln('* y=sqrt(abs(sin(x))) *'); writeln(radek);writeln(radek); writeln('* x * y *');writeln('* x * y *'); writeln(radek);writeln(radek); x:=dm; pocet:=0;x:=dm; pocet:=0; while x<=hm do beginwhile x<=hm do begin pocet:=pocet + 1;pocet:=pocet + 1; y:=sqrt(abs(sin(x)));y:=sqrt(abs(sin(x))); writeln('*',x:10:2,' *',y:10:2,' *');writeln('*',x:10:2,' *',y:10:2,' *'); if pocet mod 5 = 0 then writeln(radek);if pocet mod 5 = 0 then writeln(radek); x:=x + kr;x:=x + kr; end;end; if pocet mod 5 <> 0 then writeln(radek);if pocet mod 5 <> 0 then writeln(radek); readln;readln;end.end.

Page 11: 3. Příkazy

3.3.11 Jednoduché příkazy Jednoduché příkazy

Prázdný příkaz - př.: if a>0 then ;Prázdný příkaz - př.: if a>0 then ;

Příkaz procedury - volá se jinde definovaná činnostPříkaz procedury - volá se jinde definovaná činnost

Příkaz skoku - způsob předání řízení v programu, v Příkaz skoku - způsob předání řízení v programu, v pascalu se používá jen ojediněle.pascalu se používá jen ojediněle.

Page 12: 3. Příkazy

3.3.22 Strukturované příkazy Strukturované příkazy Skládají se z dílčích příkazů, předepisuje se jimi postupné, Skládají se z dílčích příkazů, předepisuje se jimi postupné,

podmíněné nebo opakované provádění těchto dílčích příkazů.podmíněné nebo opakované provádění těchto dílčích příkazů.Složený příkazSložený příkaz

Nemá předepsán závazný formát: Nemá předepsán závazný formát: beginbegin re := -b/(2*a);re := -b/(2*a); begin p:=x; x:=y; y:=p end;begin p:=x; x:=y; y:=p end; disc := sqr(b)-4*a*c;disc := sqr(b)-4*a*c; im := sqrt(abs(discr))/(2*a);im := sqrt(abs(discr))/(2*a); end;end; Za posledním příkazem (před end) by neměl být středník. Je-li tam, Za posledním příkazem (před end) by neměl být středník. Je-li tam,

znamená to prázdný příkaz.znamená to prázdný příkaz. Používá se v podmíněném příkazu, v příkazu cyklu - tělo cyklu, Používá se v podmíněném příkazu, v příkazu cyklu - tělo cyklu,

procedura, celý program.procedura, celý program.

příkaz ;

begin end

Page 13: 3. Příkazy

podmínka if then else příkaz příkaz

3.3.22.1 Podmíněné příkazy.1 Podmíněné příkazy

příkaz ifpříkaz if

Příkaz if se provede tak, že se nejprve vyhodnotí Příkaz if se provede tak, že se nejprve vyhodnotí podmínka - logický výraz a má-li hodnotu true, podmínka - logický výraz a má-li hodnotu true, provede se příkaz za then. Má-li výraz hodnotu provede se příkaz za then. Má-li výraz hodnotu false, provede se příkaz za else, není-li else, false, provede se příkaz za else, není-li else, neprovede se nic.neprovede se nic.

Page 14: 3. Příkazy

příkaz ifpříkaz if

a := b

a<b

b := 0

a := b

a<b

b := 0

max := x p := 1

x>max

b := 0

if a < b then a := b;b := 0;

if a<b then begin a := b; b := 0;end;

if x > max then begin max := x; p := 1;endelse p := p + 1;

Page 15: 3. Příkazy

příkaz ifpříkaz ifPříkaz else se vztahuje k nejbližšímu předchozímu if:Příkaz else se vztahuje k nejbližšímu předchozímu if:

if if podm1podm1 then then if if podm1podm1 then begin then begin if if podm2podm2 then then prik1prik1 if if podm2podm2 then then prik1prik1

else else prik2prik2 else else prik2prik2 end;end;

if if podm1podm1 then begin then begin if if podm2podm2 then then prik1prik1endendelse else prik2prik2

Klíčovému slovu else nesmí předcháze středníkKlíčovému slovu else nesmí předcháze středník !!! !!!

Page 16: 3. Příkazy

Příkaz casePříkaz case VVětvení výpočtu do několika alternativ v závislosti ětvení výpočtu do několika alternativ v závislosti

na hodnotě výrazu ordinálního typu:na hodnotě výrazu ordinálního typu:

znak

v := x + y v := x - y v := x * y v := x / y

‘+’ ‘-’ ‘*’ ‘/’

var znak : char;case znak of ' + ' : v := x + y; ' - ' : v := x - y; ' * ' : v := x * y; ' / ' : v := x / y;end;'

Pokud je pro více hodnot stejný příkaz, oddělují se čárkou.

Page 17: 3. Příkazy

Př.: Výpočet jízdného v závislosti na vzdálenosti.

program vypocet_ jizdne;var pocetkm, jizdne, sazba : real; desitkykm : integer;begin readln(pocetkm); desitkykm := trunc(pocetkm) div 10; if desitkykm >= 6 then sazba := 2.2 else case desitkykm of 0,1 : sazba := 3; 2 : sazba := 2.5; 3,4,5 : sazba := 2.3; end; jizdne := pocetkm * sazba; writeln('jizdne za',pocetkm:6:1,' km je',jizdne:7:1,' kc'); end.

Page 18: 3. Příkazy

Př.: Výpočet jízdného v závislosti na vzdálenosti.

program vypocet_ jizdne;var pocetkm, jizdne, sazba : real; desitkykm : integer;begin readln(pocetkm); desitkykm := trunc(pocetkm) div 10; case desitkykm of 0,1 : sazba := 3; 2 : sazba := 2.5; 3,4,5 : sazba := 2.3; else sazba := 2.2; end; jizdne := pocetkm * sazba; writeln('jizdne za',pocetkm:6:1,' km je',jizdne:7:1,' kc'); end.

Page 19: 3. Příkazy

3.3.2 Příkazy cyklu 3.3.2 Příkazy cyklu

Předepisují opakované provádění příkazu nebo posloupnosti příkazů

Příkaz repeat until

příkaz ;

repeat until podmínka

TC

podm.

Postupně se provedou všechny příkazy, Postupně se provedou všechny příkazy, vyhodnotí se podmínka a je-li hodnota log. vyhodnotí se podmínka a je-li hodnota log. výrazu false, činnost se opakuje. výrazu false, činnost se opakuje. Provádění cyklu končí, když výraz má log. Provádění cyklu končí, když výraz má log. hodnotu true. Tělo tohoto cyklu se provede hodnotu true. Tělo tohoto cyklu se provede vždy alespoň jednou.vždy alespoň jednou.

Page 20: 3. Příkazy

Příkaz repeat untilPříkaz repeat until Př.: Program pro výpočet částečného součtu řady sn = 1 + x + xPř.: Program pro výpočet částečného součtu řady sn = 1 + x + x^̂2/2! + x2/2! + x^̂3/3! + ... 3/3! + ...

+ x+ x^̂n/n!, kde n je nejmenší takové, že xn/n! <eps.n/n!, kde n je nejmenší takové, že xn/n! <eps.

program soucet_rady;program soucet_rady;varvar soucet, clen, x, eps : real;soucet, clen, x, eps : real; i : integer;i : integer;beginbegin read(x,eps);read(x,eps); i := 0; clen := 1; soucet := clen;i := 0; clen := 1; soucet := clen; repeatrepeat i := i + 1;i := i + 1; clen := clen * x / i;clen := clen * x / i; soucet := soucet + clen;soucet := soucet + clen; until abs(clen) < eps;until abs(clen) < eps; writeln('soucet = ', soucet);writeln('soucet = ', soucet);end.end.

Page 21: 3. Příkazy

Příkaz while-doPříkaz while-do

příkaz while do podmínka

TC

podm.

Nejprve se vyhodnotí logický výraz, dávající podmínku opakování, a je-li jeho hodnota true, provede se příkaz za do a tato činnost se znovu opakuje. Opakování končí, když má váraz hodnotu false. Je-li hodnota výrazu false už na začátku, příkaz se neprovede ani jednou.

Page 22: 3. Příkazy

Příkaz while-doPříkaz while-do Př.: Výpočet faktoriáluPř.: Výpočet faktoriálu

program faktorial;program faktorial;varvar k,n : integer;k,n : integer; f : real;f : real;beginbegin read(n);read(n); k := 1; f := 1;k := 1; f := 1; while k <> n do beginwhile k <> n do begin k := k + 1;k := k + 1; f := f * k;f := f * k; end;end; writeln('n! = ',f:16:0);writeln('n! = ',f:16:0);end.end.

Page 23: 3. Příkazy

Eukleidův algoritmusEukleidův algoritmus - výpočet největšího společného dělitele dvou čísel - výpočet největšího společného dělitele dvou čísel

Věta: Věta: Největší společný dělitel dvou čísel je roven Největší společný dělitel dvou čísel je roven největšímu společnému děliteli menšího čísla a zbytku největšímu společnému děliteli menšího čísla a zbytku při dělení většího čísla menším číslem. při dělení většího čísla menším číslem.

(60,36)(60,36)

(36,24)(36,24)

(24,12)(24,12)

(12, 0)(12, 0)

Page 24: 3. Příkazy

Eukleidův algoritmusEukleidův algoritmus

program eukleiduv_algoritmus;var x,y,a,b,c : integer;begin read(x,y) ; if x<y then begin a:=y; b:=x end else begin a:=x; b:=y end; repeat c:=a mod b; a:=b; b:=c; until c=0; writeln('nsd(',x:5,',',y:5,')=',a:3);end.

a = y, b = x

START

ČTI x,y

c = a mod b, a = b, b = c

TISKNI a

STOP

x<y

a = x, b = y

c = 0

Page 25: 3. Příkazy

Eukleidův algoritmusEukleidův algoritmus

program eukleiduv_algoritmus;var x,y,a,b : integer;begin read(a,b) ; x:= a; y:=b; while x<>y do if x>y then x:=x-y else y:=y-x; writeln('nsd(',a:5,',',b:5,')=',x:3);end.

START

ČTI a,b

x = a, y = b

x<>y

x>y

x = x - y y = y -x

TISK x

STOP

Page 26: 3. Příkazy

Příkaz forPříkaz for

identif.prom. for výraz :=

to

downto

výraz do příkaz

for rp := vyraz1 to vyraz2 do příkaz;

Řídící proměnná cyklu for je ordinálního typu, v proceduře to musí být lokální proměnná. Výrazy musí být stejného typu jako řídící proměnná.

Page 27: 3. Příkazy

Příkaz forPříkaz for

Cyklus for provádí tuto činnost:

begin pom1:= vyraz1; pom2 := vyraz2; if pom1 <= pom2 then begin rp := pom1; prikaz; while rp <> pom2 do begin rp := succ(rp); prikaz; end endend;

Proměnné pom1, pom2 jsou pomocné, vytváří je překladač. Mezní hodnoty cyklu nemohou být uvnitř cyklu měněny. Nelze měnit ani hodnotu řídící proměnné. Po skončení cyklu není hodnota řídící proměnné definována.

Page 28: 3. Příkazy

Příkaz forPříkaz forprogram kody_znaku;var zn : char;begin writeln('cislice vzestupne:'); for zn := '0' to '9' do write(zn,' kod ',ord(zn),'; '); writeln; writeln('dale - enter'); readln; writeln('velka abeceda sestupne:'); for zn :='z' downto 'a' do write(zn,' kod ',ord(zn),'; '); writeln; writeln('konec - enter'); readln;end.

Page 29: 3. Příkazy

Příkaz forPříkaz forprogram faktorial;var k,n : integer; f : real; {pro integer do 13, pro int64 do 20}begin write('zadej n: '); readln(n); f := 1; for k := 2 to n do f := f * k; writeln(n,'! je ',f:12:0); writeln('konec - enter'); readln;end.


Recommended