270 likes | 467 Views
Pascal – řízení programu. cykly. Opakování – if-then. Seřaďte dva řetězce podle abecedy (stačí je porovnat) Všechna velká písmena jsou v ASCII tabulce před malými!!! (každý znak má v této tabulce svůj kód – číselnou hodnotu). Opakování – if-then. Program Retezce; Var R1,R2 : string;
E N D
Pascal – řízení programu cykly
Opakování – if-then • Seřaďte dva řetězce podle abecedy (stačí je porovnat) • Všechna velká písmena jsou v ASCII tabulce před malými!!! • (každý znak má v této tabulce svůj kód – číselnou hodnotu)
Opakování – if-then Program Retezce; Var R1,R2 : string; Begin Writeln('Zadej dva retezce (malymi pismeny): '); Readln(R1); Readln(R2); Writeln; If R1 < R2 then Writeln(R1, ' stoji v abecede pred ', R2); If R1 = R2 then Writeln('Oba retezce jsou identicke'); If R1 > R2 then Writeln(R2, ' stoji v abeceda pred ',R1); Readln; End.
Pascal – příkazy a cykly • další možností řízení programu jsou tzv. cykly a) s pevným počtem opakování for Proměnná:=DelejOd to DelejDo do Příkaz;
počet opakování cyklu určíme řídící proměnnou, dolní a horní mezí (řídící proměnná bude postupně nabývat hodnoty mezi dolní a horní mezí včetně) • před započetím provádění cyklu je znám počet opakování • používá se, chceme-li několikrát po sobě zopakovat stejnou činnost
Pascal – příkazy a cykly i – řídící proměnná d – dolní mez h – horní mez for i:= dolní mez to horní mez do příkaz
Pascal – příkazy a cykly • obsah proměnné zvětšují od DelejOd do DelejDo a pokaždé provedou Příkaz Příklad: ProgramAbeceda; Var c:char; Begin for c:='a' to 'z' doWriteln(c); Readln; End.
Pascal – příkazy a cykly Vytvořte program, který zaplní celou obrazovku nápisem Ahoj (NIKDE nesmí zůstat mezera).
Pascal – příkazy a cykly Program AhojVsude; Var I:Integer; Begin Writeln('Kecy'); For I:=1 to 980 do Write('Ahoj'); Readln; End.
Pascal – příkazy a cykly • Řešený příklad “Součet”: • na vstupu jsou dvě přirozená čísla a, b (a < b). • vytiskněte, kolik je součet všech přirozených čísel v intervalu <a, b> (budou-li např. na vstupu čísla 4 a 7, chceme vytisknout číslo 22, protože 4+5+6+7=22)
Pascal – příkazy a cykly Řídící proměnnou cyklu necháme nabývat hodnot 4, 5, 6 a 7 (v našem konkrétním případě) a vždy ji přičteme do proměnné SOUCET, kde bude hledaný součet
Pascal – příkazy a cykly Program SCITANI; var ODKUD, KAM, SOUCET, I: integer; begin write (´Od ktereho cisla mam zacit scitat ?´); readln (ODKUD); write (´Do ktereho cisla mam scitat ?´); readln (KAM); SOUCET := 0; for I:= ODKUD to KAM do SOUCET := SOUCET + I; write (´Hledany soucet cisel je:´, SOUCET); readln; end.
Najděte všechna řešení rovnice a2+b2=c2 v oboru přirozených čísel menších jak 100
Řešený příklad – for – to -do • Zadejte číslo n a najděte všechny jeho dělitele. program delitel; var i:byte; n,m:word; begin writeln('Zadej cislo:'); readln(n); for i:=1 to n do begin m:=n mod i; if m=0 then writeln('Cislo ',i,' je delitelem cisla ',n); end; readln; end. ?
Pascal – příkazy a cykly Program Pythagoras; Var A,B,C : Integer; Begin For A:=1 to 100 do For B:=1 to 100 do For C:=1 to 100 do if A*A +B*B = C*C then Write(a:3,' ',b:3,' ',c:4,' '); Readln; End.
Pascal – příkazy a cykly b) Cyklus s podmínkou na konci příkaz REPEAT … UNTIL REPEAT Příkaz A; Příkaz B; UNTIL Podm; Jediná výjimka, kdy není třeba Begin a End.
Příkaz A Příkaz B Podm. Ne Ano Pascal – příkazy a cykly Opakuj Akci 1 a Akci 2, dokudneplatí Podmínka Opakuj tak dlouho, až nastane splnění podmínky (až začne platit podmínka)
Příklad pro repeat - until • Spočítejte počet studentů na škole. Počty se zadávají po jednotlivých třídách. Na konci zadávající stiskne 0.
Řešení příkladu program skola; var soucet,pocet:word; begin soucet:=0; repeat writeln('Zadej pocet studentu ve tride'); readln(pocet); soucet:=soucet+pocet; until pocet=0; writeln('Pocet studentu na skole je ',soucet); readln; end.
Řešený příklad repeat-until • Vytvořte program pro výpočet faktoriálu. program faktorial; var a,f:integer; begin f:=1; repeat writeln('Zadej celé číslo od 1 do 12.'); readln(a); until (a>=1) and (a<=12); write('Faktorial cisla ',a,' je '); while a<>0 do begin f:=f*a; a:=a-1; end; writeln(f,'.'); readln; end.
Pascal – příkazy a cykly c) cyklus s podmínkou na začátku příkaz WHILE …DO WHILE Podm DO Begin Příkaz X; Příkaz Y; End;
Podm. Ne Ano Příkaz X Příkaz Y Pascal – příkazy a cykly Dokud platí podmínka, dělej Příkazy X a Y Pokud platí Podmínka, Prováděj Akci
Sčítání n čísel S:=0; I:=1; while I <=10 do S:=S+I • příkaz cyklu se bude provádět do nekonečna, neboť obsah proměnné I je stále stejný (obsah proměnné S se neustále zvyšuje o 1)
Sčítání n čísel • požadujeme-li však sečíst pouze1+2+…+10 a výsledek tohoto součtu uložit do proměnné S, pak algoritmus musí být ve tvaru: S:=0; I:=1; while I <=10 do begin S:=S+I; I:=I+1 end
Zadání příkladu – while-do • Spočítejte průměrnou známku studentů. Učitel do programu zadává známky a program spočítá průměr ze všech zadaných známek. Při ukončení zadávání stiskne učitel 0.
Řešení příkladu: program prumer; var a,soucet,i:integer; begin soucet:=0; i:=0; writeln('Zadej znamku'); readln(a); while (a>0) and (a<6) do begin soucet:=soucet+a; i:=i+1; writeln('Zadej znamku'); readln(a); end; if soucet=0 then writeln('Zadnou znamku jsi nezadal') else writeln('Prumerna znamka je', soucet/(i-1)); readln; end.