Umíte pascalsky - 12.lekce ... |
Umíte pascalsky? 12.lekce |
Vytisknout |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Funkce s parametry Pokud potřebujeme několikrát provádět týž algoritmus, který počítá hodnotu určitého typu, ale pokaždé pro jiné proměnné, použijeme funkci s parametry. Stejně jako u procedur, skutečné parametry požíváme při volání funkce a formální prametry při deklaraci funkce.Specifikace parametrů a způsob náhrady formálních parametrů skutečnými se se řídí stejnými pravidly jako u procedur s parametry s jediným rozdílem - náhrada se provádí (až na vyjímky) hodnotou. Připomínáme ještě, že tělo funkce musí obsahovat přiřazovací příkaz, kterým se vypočtená hodnota přiřazuje identifikátoru funkce. Deklarace funkce s parametry má tedy tvar: function Jméno_funkce (specifikace_form_param1; specifikace_form_param2; specifikace_form_param3):typ funkce; deklarace lokálních objektů; begin příkazy; {výpočet hodnoty} Jméno_funkce := vypočtená hodnota; {povinné přiřazení} end; Specifikaci formálního parametru (až na vyjímky neobsahuje var) vypadá: jmeno_parametru : typ parametru; Příklad: function Soucet (cislo1,cislo2:integer): integer {dva vstupní parametry cislo1 a cislo2} begin Soucet := cislo1 + cislo2; {vypočte součet zadaných číse} end; Volání funkce - zápis funkce - se skládá ze jména funkce a seznamu skutečných parametrů. Připomínáme. že volání funkce představuje hodnotu, která je výsledkem provedení těla funkce a proto může být použito vždy v nějaké konstrukci, která předepisuje, co se s výslednou funkční hodnotou provede - v příkazu přiřazení, příkazu tisku, ve výrazu apod. (ne samostatně na řádku jako volání procedury!!!) Tedy například: cislo := Jméno_funkce(( skutečný_parametr1, skutečný_parametr2, skutečný_parametr3 ); write{Jméno_funkce (skutečný_parametr1, skutečný_parametr2, skutečný_parametr3)); Příklad: Sestavte program Dalsi_obdelnik, který po zadání stran dvou obdélníků vypočítá jejich obsahy a zjistí, zda tyto obsahy patří do zadaného otevřeného intervalu. Myšlenka (hrubý algoritmus): Načteme meze intervalu Načteme délky stran dvou obdélníků Vypočteme jejich obsah (Obsah) Otestuje (patří do intervalu? - Test) a vytiskneme zprávu
Příklad1: Sestavte program Kalkulačka, který opakovaně podle volby uživatele umožňuje zadat přirozené číslo a potom vypočítat jeho faktoriál, zadanou celou mocninu a ciferný součet. Řešte užitím procedur a funkcí s parametry. Myšlenka (hrubý algoritmus): Úlohu můžeme rozložit na čtyři podúlohy: Nacteni Faktorial Mocnina Cifr_soucet které nadeklarujeme formou procedur a funkcí s parametry a pak se budou opakovaně vyvolávat podle volby uživatele v hlavním programu: opakuj nabídka činností výběr činnosti provedení zvolené činností (Nacteni , Faktrorial , Mocnina, Cifr_soucet) Výsledný program může vypadat takto:
Domácí úkol: Sestavte program Uhel, který opakovaně podle volby uživatele umožňuje zadat úhel v radiánech (procedura s parametrem Nacti_rad), zjistit jeho základní velikost (funkce s parametrem Zakl_rad), převést na stupňovou míru (funkce s parametrem Na_stupne), zadat úhel ve stupňové míře (procedura s par.Nacti_stupne) , zjistit jeho základní velikost (procedura Zakl_stupne) a převést na radiány (funkce s par. Na_rad). 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. |