Umíte pascalsky - 9.lekce ... |
Umíte pascalsky? 9.lekce |
Vytisknout |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Podprogramy Při systematické tvorbě algoritmu určité úlohy - rozkladem úlohy na jednodušší podúlohy - často zjistíme, že: 1) Některá podúloha se bude opakovaně řešit s různými hodnotami. 2) Celá úloha je složitá, nepřehledná, málo srozumitelná. To jsou důvody pro vytvoření podprogramu. Algoritmus podúlohy rozepíšeme pouze jednou, přiřadíme mu jméno a při řešení ostatních podúloh se na toto jméno odvoláváme. Podprogram je posloupnost příkazů, které jsou někde popsány (v deklaraci) a které lze jinde (v těle programu) i opakovaně jednoduše použít. Zápis, kterým zavádíme (definujeme) podprogram se nazývá deklarace podprogramu. Použití podprogramu se provádí pomocí výzvy - volání podprogramu - na místě, kde se vyžaduje realizace odpovídajícího algoritmu. V Pascalu existují dvě formy podprogramů - procedury a funkce. Funkce je podprogram pro výpočet jedné hodnoty, hodnoty funkce. Procedura je podprogram, který vrací hlavnímu programu více hodnot nebo nějakým způsobem transformuje data. Procedura Deklarace procedury se skládá (podobně jako program) z hlavičky a těla procedury: procedure Jméno_procedury; deklarace lokálních objektů; begin příkazy; {tělo procedury} end; V deklarační části jsou deklarovány objekty platné pouze v těle procedury - lokální objekty, které existují pouze po dobu provádění této procedury. V těle procedury však můžeme používat i objekty deklarované v hlavním programu - globální objekty. Pomocí nich procedura komunikuje s okolím (hlavním programem), pokud nemá parametry - procedura s parametry bude na programu příště. Volání procedury - příkaz procedury - se skládá pouze ze jména procedury: Jméno_procedury; V místě volání procedury se budou realizovat příkazy obsažené v těle procedury. Příklad: Ukážeme si deklaraci procedury pro výměnu dvou proměnných a její vyvolání v hlavním programu.
Poznámky: 1) Procedury bez parametrů se volají v hlavním programu většinou poze jednou - používají se pro zvýšení přehlednosti 2) Nepoužívejte lokálních proměnných stejného jména jako je jméno globální proměmmé. V okamžiku realizace procedury existující lokální proměnná zastiňuje (činí nepřístupnou) odpovídající globální proměnnou stejného jména. Příklady: Příklad1: Sestavte program, který dvě zadaná celá čísla seřadí podle velikosti (vzestupně) a vytiskne. Řešte užitím procedur. Myšlenka (hrubý algoritmus): Úlohu rozložíme na tři podúlohy: Nacteni; Serazeni; Tisk; Stejně se budou jmenovat procedury, které budou řešit tyto podúlohy a jejichž postupným vyvoláním vyřešíme celou úlohu. Program by mohl vypadat takto:
Domácí úkol: Sestavte program Cas, který umožňuje zadat dva časy (první v sekundách, druhý v hodinách, minutách a sekundách) a vytisknout je podle velikosti sestupně poprvé v sekundách a podruhé v hodinách minutách a sekundách. Použijte procedury Na_sekundy (převod času na sekundy) a Na_hodiny (převod času na hodiny,minuty a sekundy). 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. |