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

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Zusammenfassung der Vorwoche
Kritische Betrachtung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Rekursion Was ist Rekursion? Was sind rekursive Methoden?
Java: Objektorientierte Programmierung
Indirekte Adressierung
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Einführung in die Programmierung mit Java
Programmieren mit JAVA
Programmieren mit JAVA
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Typen (z.B. int, char, boolean) Zusammengesetzte Typen (Felder, auch String) Operatoren.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0);
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Einführung in die Programmierung Klassendefinition und Objekte
Thema: Fibonacci-Zahlen
Verzweigung.
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Rekursive Funktionen (Fakultät)
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
2.4 Rekursion Klassifikation und Beispiele
Die Grundidee Funktionsaufruf Funktionsname (Kopf) Code der Funktion
Unterprogramme in JAVA
Aufruf einer Methode eines Objektes vom Typ „Bruch“
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Programmiervorkurs WS 2014/15 Instanzmethoden
Natürliches Programmieren
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Unterprogramme / Methoden
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Tutorium Software-Engineering SS14 Florian Manghofer.
Von Cem, Maurice und lars
Implementieren von Klassen
 Präsentation transkript:

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

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

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

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!

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?

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)

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?

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!

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?

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

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

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

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!

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!

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!

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