Umíte pascalsky - 5.lekce ... |
Umíte pascalsky? 5.lekce |
Vytisknout |
|||||||||||||||||||||||||||||||||||||||||||||||||||
Základní příkazy - 2.část V dnešní lekci se budeme zabývat podmíněným příkazem case a cyklem for. Příkaz Case Umožňuje vybrat k realizaji jeden z více příkazů podle hodnoty výběrového výrazu (selektoru). Má tvar: case výraz of hodnota1: příkaz1; hodnota2: příkaz2; ... hodnotan: příkazn; else příkaz end Výraz za klíčovým slovem case se nazývá selektor větvení a je to výraz ordinálního typu, hodnot1, hodnota2, ... hodnotan jsou konstanty stejného typu jako selektor. příkaz1, příkaz2, ... příkazn jsou jednotlivé alternativní příkazy. Příkaz může předznamenávat více konstant oddělených čárkou. Realizace: Vyhodnotí se selektor a potom se vykoná ten příkaz, před nímž je uvedena stejná hodnote , jakou má selektor. Pokud se selektor nerovná žádné konstantě, provede se příkaz za klíčovým slovem else - tento řádek je nepovinný. Příklad: Je-li v proměnné poradi_dne ulozeno poradove cislo dne v tydnu, lze rozhodnout, zda se jedna o pracovni den ci vikendovy den takto: case poradi_dne of 1,2,3,4,5: writeln('pracovni den'); 6,7: writeln('vikendovy den'); end Příklady: Příklad1: 1.ledna 2001 bylo pondělí. Sestavte program, který po zadání pořadového dne v roce zjistí, který pracovní den to je (Po=1, Ut=2, ..., Pa=5). Myšlenka (hrubý algoritmus): 3.ledna - streda, 5.ledna - patek, 11.ledna - 11-7=4 tedy ctvrtek, 13.ledna - 13-7=6 tedy víkendový den atd. Zjistíme tedy zbytek po dělení pořadového čísla dne sedmi a ten rozhodne o dnu. Program tedy může vypadat takto:
Příkaz cyklu Příkazy cyklu umožňují opakování příkazů nebo posloupnosti příkazů vícekrát. V jazyce Pascal můžeme zadat počet opakování explicitně nebo implicitně - ve tvaru podmínky, která určuje, zda se má v opakování pokračovat nebo ho ukončit. Počet opakování je určen: a) explicitně - cyklus For b) implicitně (podmínkou) - cyklus While, Repeat Příkaz For Příkaz For slouží k zápisu cyklu se zadaným počtem opakování. Má tvar: for proměnná := dol to hor do příkaz proměnná - proměnná ordinálního typu - řídící proměnná (parametr cyklu), lze ji používat jen pasivně (není možné v příkazu měnit), po ukončení cyklu ztrácí svou hodnotu dol,hor - výrazy ordinálního typu příkaz - jediný příkaz, tělo cyklu Realizace: Řídící proměnné se přiřadí hodnota výrazu dol. Je-li tato hodnota menší nebo rovna hodnotě hor, provede se příkaz za slovem do (tělo cyklu). Potom je řídící proměnné přiřazena hodnota následovníka současné hodnoty - succ(proměnná). Je-li tato hodnota menší nebo rovna hor, opět se provede tělo cyklu, v opačném případě je cyklus ukončen. Je-li dol>hor , neprovede se příkaz (tělo cyklu) ani jednou. Je-li dol=hor , provede se příkaz (tělo cyklu) jednou. Příklad: for kolik:=1 to 5 do witeln(kolik,'. Ahoj'); Vytiskne pětkrát Ahoj s očíslováním řádků. Chceme-li, aby se při dalším průchodu cyklem řídící proměnná o jedničku zmenšila nebo měla hodnotu předchůdce - pred(proměnná), můžeme použit variantu: for proměnná := hor downto dol do příkaz Příklad: for kolik:=7 downto 2 do wite(kolik); Vytiskne 765432 . Příklady: Příklad1: Sestavte program pro výpočet faktoriálu zadaného přirozeného čísla. Např. faktoriál z pěti je 5! = 5.4.3.2.1 Myšlenka (hrubý algoritmus): Vynásobíme po sobě následující přirozená čísla od jedné až po dané číslo tolikríát, kolik udává toto číslo. Program tedy může vypadat takto:
Domácí úkol: Sestavte program pro nalezení největšího čísla ze zadaných deseti čísel. On-line účast na řešení úkolu
Pomocí volby Řešit můžete (po přihlášení) odeslat vaše řešení domácího úkolu (každý úkol smíte řešit jen jednou). Volbou Hodnocení si přečtete hodnocení a komentář od vyučujícího. Dotaz nebo připomínku můžete opakovaně zasílat pomocí tlačítka Dotazy, Komunikace (na levém okraji) zobrazuje příklad možné komunikace s vyučujícím. |