Pascal – strukturované příkazy Mgr. Lenka Švancarová
Úvod do problematiky U předchozích programů jsme vždy vykonávali všechny příkazy jeden po druhém. Pokud budeme chtít, aby se některé příkazy vykonaly jen za určité podmínky a nebo se opakovaly jen za určité podmínky, budeme muset v programech využít strukturované příkazy. Strukturované příkazy řídí chod programu na základě toho, zda je podmínka v nich obsažená splněna (vrací hodnotu true) či nikoliv (vrací hodnotu false).
Vysvětlíme si na příkladech Pascal – větvení Vysvětlíme si na příkladech
úplné větvení Start Stop Určí, zda je zadané číslo uživatelem záporné nebo kladné. Start Zadej číslo Je číslo záporné? + - Vypiš zadané číslo je záporné Vypiš zadané číslo je kladné Stop
if úplné větvení Start Doplň: Program po vypsání výsledku vypíše text nashledanou a skončí. readln(x) Podmínka Je zadané číslo záporné? x < 0 + - writeln(x, ’ je zaporne’) writeln(x, ’ je kladne’) Stop
Pascal – úplné větvení Nakresli vývojový diagram. Uživatel zadá dvě čísla. Určí, zda jsou zadaná čísla stejná (vypíše „jsou stejná“) či nikoliv (vypíše „nejsou stejná“).
if úplné větvení Start Podmínka readln(x) readln(y) Podmínka Jsou zadaná čísla stejná (tj. rovnají se)? x = y + - writeln(’Jsou stejná ’) writeln(’Nejsou stejná ’) Stop
Pascal – úplné větvení Nakresli vývojový diagram. Uživatel zadá dvě čísla. Jestliže nebude druhé zadané číslo nula, čísla se vydělí, jinak se vypíše „nulou dělit nelze“ a toto tvrzení se podtrhne.
úplné větvení Start readln(x) readln(y) V podmínce se mohou vyskytnout logické spojky (not, and, or). Podmínka Není druhé zadané číslo nula? Not(y = 0) + - writeln(’Nulou delit nelze ’) writeln (’______________ ’) writeln(x/y:0:2) Stop
úplné větvení Start Podmínka Je druhé zadané číslo nula? Stop readln(x) readln(y) Podmínka Je druhé zadané číslo nula? (y = 0) + - writeln(’Nulou delit nelze ’) writeln (’______________ ’) writeln(x/y:0:2) Stop
Pascal – úplné větvení Nakresli vývojový diagram. Uživatel zadá celé číslo. Vypíše se, zda je zadané číslo liché nebo sudé.
úplné větvení Start Podmínka Je zadané číslo liché? (odd(a)=true) readln(a) Podmínka Je zadané číslo liché? (odd(a)=true) V podmínce se může vyskytnout funkce. odd(a) + - writeln(a, ’ je liche.’) writeln(a, ’ je sude.’) Stop
úplné větvení Start Podmínka Je zadané číslo liché? (Je zbytek po celočíselném dělení 1?) readln(a) V podmínce lze porovnávat i výsledky výpočtů. (a mod 2)=1 + - writeln(a, ’ je liche.’) writeln(a, ’ je sude.’) Stop
Pascal – větvení Teorie a zápis větvení
Úplné větvení Vývojový diagram Sémantika Jestliže je splněna podmínka (vrací hodnotu true), vykonají se příkazy pravdivé větve, když není (vrací hodnotu false), vykonají se příkazy nepravdivé větve. Vždy se tedy vykonají příkazy jen v jedné větvi a pokračuje se dál v programu. Podmínka + - Příkaz(y) Příkaz(y)
Úplné větvení syntaxe if (podmínka) then begin jeden nebo více příkazů pravdivé větve end else begin jeden nebo více příkazů nepravdivé větve end; Před else nesmí být středník (Pro lepší zapamatování: „V if před else nelze“). Pokud je v pravdivé či nepravdivé větvi jeden příkaz, je na nás, zda použijeme begin end či nikoliv. V případě více příkazů jsou begin end povinné.
Pascal – úplné větvení Napiš zdrojové kódy k předchozím vývojovým diagramům. Nakresli vývojový diagram a napiš zdrojový kód. Jestliže uživatel zadá písmeno s nebo S, program vypočítá obsah čtverce, jinak vypočítá obsah obdélníku. (Je samozřejmé, že uživatel bude zadávat také rozměry zvoleného rovinného obrazce.)
Pascal – úplné větvení Nakresli vývojový diagram a napiš zdrojový kód. Uživatel zadá číslo a program vypíše buď je to známka (pro čísla 1, 2, 3, 4, 5) nebo není to známka. Program určí, zda uživatelem zadané číslo leží v intervalu (2,7>. Uživatel zadá tři kladná čísla – třetí největší. Vypište Je to trojúhelník nebo Není to trojúhelník.