Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Počítače a programování 1

Podobné prezentace


Prezentace na téma: "Počítače a programování 1"— Transkript prezentace:

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)


Stáhnout ppt "Počítače a programování 1"

Podobné prezentace


Reklamy Google