Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Počítače a programování 1
5.přednáška
2
Obsah přednášky Dekompozice algoritmu – podprogramy
Podprogramy – funkce, procedury Podprogramy v jazyku Java – metody Statické metody Parametry formální a skutečné Aktivace podprogramů Rekurzivní metody Metody s více parametry, metody přetížené
3
Podprogramy - procedury a funkce
Základní pojmy Podprogram pojmenovaná část algoritmu reprezentující určitý logický celek. Obecně podprogramy dvojího druhu: Procedury podprogramy, hlavním výsledkem je provedení nějaké činnosti. Funkce podprogramy, hlavním výsledkem je získání určité hodnoty.
4
Podprogramy – procedury a funkce
Volání (aktivace) procedury příkaz procedury. Volání funkce zápis funkce. Deklarace procedury (funkce) část textu programu, která definuje činnost provedenou při volání procedury (funkce). Standardní neboli předdefinované, knihovní) procedury (funkce) (matematické funkce či algoritmy běžných operací týkající se vstupu a výstupu programu, ovládání periferií)
5
Aktivace podprogramů Aktivace procedury příkaz procedury
Aktivace funkce se provádí ve výrazu zápis funkce Funkce vždy představuje hodnotu!
6
Parametry Činnost programu lze ovlivnit parametry
Parametrem může být výraz: hodnotou ovlivňuje činnost podprogramu (počáteční hodnota), prostor pro zápis výsledné hodnoty (tvořen pouze zápisem proměnné).
7
Parametry skutečné a formální
Parametry uvedené při volání podprogramu skutečné. Parametry uvedené v deklaraci podprogramu formální. Pořadí, počet a typ skutečných parametrů musí přesně odpovídat pořadí a typu formálních parametrů.
8
Metody Podprogram– v objektově orientovaném programování (OOP) je nahrazen pojmem metoda – způsob „jak čeho dosáhnout“ (poznámka: často užívaný termín funkce není v tomto případě přesný, jdná se více o syntaktický rozdíl, nikoli sémantický) Program zapsaný v jazyce Java – vždy obsahuje minimálně jednu metodu (funkci – podprogram), který se musí jmenovat main() Zpracování programu začíná voláním metody main() a končí opuštěním této metody
9
Metody Elementární a nezbytné části metody: Základní podoba definice:
Název Argumenty Typ návratové hodnoty Tělo metody Základní podoba definice: typNávratovéHodnoty názevMetody (/* seznam argumentů*/) { /* tělo metody*/ }
10
Metody Název metody a seznam argumentů metodu jednoznačně určují
Návratový typ je typ návratové hodnoty, která je získána zavoláním metody Seznam argumentů ( v podstatě parametrů podprogramu) určuje typy a názvy jednotlivých položek, jejichž prostřednictvím jsou metodě předávány určité informace Název metody a seznam argumentů metodu jednoznačně určují
11
Metody Metody v Javě: Metody třídy (statické metody) Metody instance
Poznámka: na rozdíl od jazyků typu Pascal nemohou být metody vnořovány (tj. jedna metoda nemůže ve svém těle obsahovat deklaraci další metody).
12
Metody Cíl metody – provedení jedné, jasně definované činnosti
Délka kódu metody – ne delší než 20 řádek Název metody – výstižný, krátký V celém programu jednotná konvence zápisu identifikátorů, především u metod
13
Deklarace metody Hlavička metody – jméno, typ návratové hodnoty, popř. typy a jména jejích formálních parametrů Tělo metody – (program) – je uzavřeno do složených závorek { }, může obsahovat příkazy i deklarace proměnných Výstupní hodnota metody je předávána příkazem return
14
Příkaz return return (výraz) nebo return výraz
Je vypočtena hodnota výrazu a přiřazena jako návratová hodnota metody, metoda je ukončena Statické metody jsou uvnitř jedné třídy volány použitím běžné konvence: x = min(3*a,b-c*d)
15
Metoda bez parametrů Metoda musí být deklarována i volána stejným způsobem jako metoda s parametry Příklad: static int nasob ( ) { int a,b; a=ctiInt(); b=ctiInt(); return (a*b); } Volání: i = nasob ( );
16
Metoda bez návratového typu - procedura
V podstatě nelze zapsat metodu bez návratového typu, lze však použít návratový typ void (tj.prázdný) Metoda musí být deklarována i volána stejným způsobem jako v předchozím případě Příklad: static void tiskVysledku(int cas) { System.out.println(„hod:“ +cas+“hod.“); } Volání: tiskVysledku(t); tiskVysledku(2);
17
Metoda bez návratového typu - procedura
Poznámka: U procedur není příkaz return povinný, není-li uveden, je nahrazen běžným ukončením metody, tj. složenou závorkou } Příkaz return se pak používá pouze pro nucené ukončení metody před dosažením běžného konce na základě nějaké podmínky
18
Procedura bez parametrů
Nejjednodušší typ metody Použití – především pro různé výstupy (tisky) Příklad: static void tisk() { System.out.println(„KONEC“); }
19
Metoda s více parametry různých typů
Větší počet formálních parametrů – vypisují se jednotlivě včetně svých typů a oddělují se čárkami V deklaraci lze volit pořadí parametrů libovolně, při volání je nutno zvolené pořadí dodržet Pozor - na rozdíl od Pascalu nelze uvést seznam parametrů určitého typu, v OOP je počet parametrů nižší než ve strukturovaném programování Doporučení – není vhodné volit větší počet parametrů (cca 5 parametrů, ne více)
20
Rekurze Podprogram volá sám sebe přímá rekurze
Podprogram X volá podprogram Y a ten opět volá podprogram X nepřímá rekurze Podprogramy existují ve všech programovacích jazycích; rozdílný je způsob deklarace, konkrétní způsob realizace a možnost použití rekurze
21
Rekurzivní metody Rekurze – v těle metody volá metoda sama sebe
Public class Faktor { public static void main }String [] args{ System.out.println(“20!” + fakt (20)); } Public static long fakt (long n){ if (n>1) return n * fakt (n-1); else return 1;
22
Konverze skutečných parametrů a návratové hodnoty
Není-li typ návratové hodnoty shodný s návratovým typem metody: Je provedena implicitní konverze (zúžení) Není-li možný předchozí krok, je nutno provést explicitní rozšiřující typovou konverzi Obdobný postup platí v případě typové rozdílnosti pro skutečné a formální parametry
23
Mechanismus volání podprogramu
Volání podprogramu programový skok s uchováním návratové adresy (adresa následující instrukce za voláním procedury) (funkce). Uchování návratové adresy na jeden a ten samý podprogram mohou vést odkazy z různých míst programu.
24
Mechanismus volání podprogramu
Instrukce vyvolání podprogramu zajistí uchování návratové adresy do speciální části paměti. Paměť typu LIFO (Last In First Out zásobník
25
Způsoby předávání parametrů
Parametry (obecně u jazyků typu Pascal): volané hodnotou volané odkazem s udáním typu bez udaného typu
26
Mechanismus předávání
1. parametry volané hodnotou a) v okamžiku volání se v zásobníku (STACK) vyhradí místa pro všechny parametry volané hodnotou a označí se jmény formálních parametrů. hodnoty skutečných parametrů se do takto alokovaných míst zkopírují 2. parametry volané odkazem Místo kopie do stacku (zásobníku) se pouze ztotožní adresy skutečného a formálního parametru (nealokuje se nové paměťové místo).
27
Předávání skutečných parametrů metod
Java umožňuje pouze předávání hodnotou (call by value), skutečné parametry mohou být v metodě pouze čteny Možnost volání odkazem je na rozdíl od jazyka C řešeno pomocí OOP
28
Přetížené metody Overloaded
Metody mající stejná jména, ale různé hlavičky Formální parametry se musí lišit počtem nebo typem nebo pořadím Pozor – nelze přetížit pouze změnou návratové hodnoty Příklad – metoda print ()
29
Globální a lokální proměnné
Nelokální proměnné – „globální“ – nesprávná terminologie Lokální proměnné – deklarace v těle metody (řešeno v problematice tříd – oblast viditelnosti) Zastínění nelokálních proměnných lokálními – v případě stejných jmen (na typu nezáleží) je nelokální proměnná zastíněna – existuje však možnost přístupu k zastíněné proměnné pomocí plně kvalifikovaného jména (full qualified name – jméno třídy a jména proměnné oddělené tečkou)
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.