Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Hartmut Weiskopf Geändert vor über 11 Jahren
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?
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.