Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.

Ähnliche Präsentationen


Präsentation zum Thema: "PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit."—  Präsentation transkript:

1 PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit Gleichheit aller Vorkommen Änderungsfreundlichkeit Programmverkürzung

2 PKJ 2005/2 Stefan Dissmann Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste und Rumpf werden vereinbart mit diesen Angaben werden aufgerufen mit Namen und Parametern

3 PKJ 2005/3 Stefan Dissmann Methoden Vereinbarung: public static int mwstVonBetrag(int betrag) { return betrag*16/116; } Bezeichnung in Vereinbarung: formaler Parameter (hier: betrag ) Rückgabewert: return Sonderfälle: leere Parameterliste = leere Klammern: () kein Rückgabetyp: void

4 PKJ 2005/4 Stefan Dissmann Methoden Aufruf: int mwst=0, b=2450; mwst = mwstVonBetrag(b); mwst = mwstVonBetrag(7650); Bezeichnung in Vereinbarung: aktueller Parameter (hier: b und 7650) Sonderfälle: leere Parameterliste = leere Klammern: () kein Rückgabewert: keine Zuweisung möglich!

5 PKJ 2005/5 Stefan Dissmann Methoden (Parameter) Beispiel: public static void main(String[] args) { int p=5; m(p); System.out.println(p); } public static void m(int p) { p = p+1; } Was wird ausgegeben?

6 PKJ 2005/6 Stefan Dissmann Methoden (Parameter) Fortsetzung Beispiel 1: public static void m1(int p) { p = p+1; } Bei einfachen Typen als Parameter wird beim Aufruf ein Wert übergeben: Wertübergabe Daher wahlweise möglich: Übergabe einer Variablen: mwstVonBetrag(b) oder eines konstanten Wertes: mwstVonBetrag(7650)

7 PKJ 2005/7 Stefan Dissmann Methoden (Felder als Parameter) Beispiel (analog zu Beispiel 1): public static void main(String[] args) { int[] f={5,6,7}; m2(f); System.out.println(f[1]); } public static void m2(int[] f) { f[1] = 99; // gefährlich! } Was wird ausgegeben?

8 PKJ 2005/8 Stefan Dissmann Methoden (Felder als Parameter) Fortsetzung Beispiel 2: public static void m2(int[] f) { f[1] = 99; } Bei Feldern als Parameter wird beim Aufruf auf das Feld verwiesen (und keine Kopie übergeben): Referenzübergabe Daraus folgt: Methoden mit Feldern als Parameter können Seiteneffekte außerhalb der Methode erzeugen!

9 PKJ 2005/9 Stefan Dissmann Rekursive Methoden In allen Beispielen: Methoden rufen andere Methoden auf! Besonderer Fall: Eine Methode ruft sich selbst auf! 2 Fragen: Warum sollte man das tun? Was geschieht technisch?

10 PKJ 2005/10 Stefan Dissmann Rekursive Methoden Warum sollte man überhaupt mit rekursiven Methoden programmieren? Problemstellung ist vorgegeben! Lösungsidee löst Teilproblem und reduziert Restaufgabe auf genau die gleiche Problemstellung: dann kann die Restaufgabe genauso gelöst werden = erneutes Anwendung der Lösungsidee

11 PKJ 2005/11 Stefan Dissmann Rekursive Methoden Ein ernsthaftes Beispiel: Berechnung der Quersumme public static int quersumme(int z) { }

12 PKJ 2005/12 Stefan Dissmann Rekursive Methoden Berechnung der Quersumme: public static int quersumme(int z) { z%10 } Ermitteln der letzten Ziffer!

13 PKJ 2005/13 Stefan Dissmann Rekursive Methoden Berechnung der Quersumme: public static int quersumme(int z) { z%10 + quersumme(z/10); } Rekursion: Problemstellung auf verkleinertes Problem übertragen!

14 PKJ 2005/14 Stefan Dissmann Rekursive Methoden Berechnung der Quersumme: public static int quersumme(int z) { if (z>9) { return z%10 + quersumme(z/10); } } Festlegen, wann Berechnung erfolgen soll!

15 PKJ 2005/15 Stefan Dissmann Rekursive Methoden Berechnung der Quersumme: public static int quersumme(int z) { if (z>9) { return z%10 + quersumme(z/10); } else { return z; } Und festlegen, was bei Abbruch geschehen soll!

16 PKJ 2005/16 Stefan Dissmann Rekursive Methoden Aufruf der rekursiven Methode: System.out.println(quersumme(2971)); - Was wird ausgegeben? - Wie wird die Ausgabe ermittelt?


Herunterladen ppt "PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit."

Ähnliche Präsentationen


Google-Anzeigen