JAVA - Methoden - Rekursion

Ähnliche Dokumente
JAVA - Methoden

JAVA - Rekursion

Klassenvariablen, Klassenmethoden

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Einstieg in die Informatik mit Java

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden und Wrapperklassen

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

2. Unterprogramme und Methoden

Elementare Konzepte von

4. Vererbung Die Klasse Object. Die Klasse Object

Objektorientierung (OO)

Algorithmen und Datenstrukturen II

Einstieg in die Informatik mit Java

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Einstieg in die Informatik mit Java

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

1 Klassen und Objekte

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Einführung in die Java- Programmierung

II.1.1. Erste Schritte - 1 -

Klassen mit Instanzmethoden

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Rekursive Funktionen

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Programmieren I + II Regeln der Code-Formatierung

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Programmieren I + II Regeln der Code-Formatierung

Java Einführung Methoden. Kapitel 6

3 Objektorientierte Konzepte in Java

Probeklausur: Programmierung WS04/05

Musterlösung Stand: 5. Februar 2009

Programmieren in Java

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Einstieg in die Informatik mit Java

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

II.3.1 Rekursive Algorithmen - 1 -

System.out.println("TEXT");

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Umsetzung einer Klassenkarte in einer Programmiersprache

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

FAKULTÄT FÜR INFORMATIK

Präzedenz von Operatoren

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Programmiertechnik Methoden, Teil 2

Objektorientierte Programmierung Studiengang Medieninformatik

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Java: Eine kurze Einführung an Beispielen

Arbeitsblatt zu Methoden

Primitive Datentypen

Programmieren 2 Java Überblick

Anweisungen zur Ablaufsteuerung

II.1.1. Erste Schritte - 1 -

7. Übung Informatik II - Objektorientierte Programmierung

1 Klassen anlegen und Objekte erzeugen

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Repetitorium Informatik (Java)

Javakurs für Anfänger

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Programmierkurs. Manfred Jackel

3. Anweisungen und Kontrollstrukturen

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Java Kurs für Anfänger Einheit 5 Methoden

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

Einstieg in die Informatik mit Java

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Javakurs für Anfänger

Die Klasse java.lang.object. Thorsten Treffer

5. Java Arrays und Strings

Objektorientierte Programmierung Studiengang Medieninformatik

Methoden (fortgeschritten) in C# - 1

Java Einführung Methoden in Klassen

Einstieg in die Informatik mit Java

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

Aufgabe 1 (12 Punkte)

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

1 Klassen anlegen und Objekte erzeugen

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Java I Vorlesung Imperatives Programmieren

Transkript:

Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1

Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen Methoden haben einen Namen und können unter diesem aufgerufen werden Syntax einer Methode: Modifikator - Return-Typ Name Parameter public static void hallo () return-type method-name (param-type1 param-name1,..., param-typen param-namen ){ // code Methodenaufruf: method-name (param1,..., paramn); Übungen Informatik 1 2

Methoden Zugriffsrechte Klassen, Attribute und Methoden können Zugriffsrechte erhalten. public: öffentliche Methode, d.h, die Mehtode kann in anderen Klassen verwendet werden. public static String hallo() private: Methode ist nur in der eigenen Klasse sichtbar und kann nur dort verwendet werden. private static String hallo() final, protected : relevant bei Vererbung kommt im 2. Semester final static String hallo() protected static String hallo() ohne Modifikatoren: Methode ist nur in der eigenen Klasse und im eigenen Paket sichtbar (package public) static: Klassenmethode, d.h. sie kann aufgerufen werden, ohne eine Instanz der Klasse erzeugen zu müssen, Die Methode gehört also zu einer Klasse und nicht zu einem Objekt static String hallo() void: die Methode liefert keinen Wert zurück public static void hallo() Übungen Informatik 1 3

Methoden formale Parameter Methoden können Werte als Parameter übernehmen. Parameter werden in der Deklaration als formale Parameter in runden Klammern festgelegt. - jeder formale Parameter muss separat als Variable mit Typ und Bezeichnung deklariert werden - formale Parameter sind innerhalb der Methode lokale Variablen static boolean gueltigesjahr (int minmumjahr, double maximumjahr) { if (minimumjahr>=1500 && maximumjahr<=2004) { return true; else { return false; Die Methode gueltigesjahr arbeitet mit dem integer-wert minimumjahr und dem double-wert maximumjahr minimumjahr und maximumjahr sind formale Parameter. Die Methode gueltigesjahr liefert einen boolschen Wert (Typ der Methode) zurück Das erfordert eine Zuweisung in der return-anweisung der Methode. der Rückgabewert der Methode steht hinter der return-anweisung gueltigesjahr (2,1800)? IO.print( ok ):IO.print( nein ); Übungen Informatik 1 4

Methoden Regeln Zusammenfassung Methoden müssen innerhalb einer Klasse definiert werden Eine Methode kann an beliebiger Stelle mit Hilfe der Anweisung return verlassen werden. Ist keine return-anweisung vorhanden, wird die Methode an der schließenden geschweiften Klammer verlassen. Liefert die Methode einen Wert zurück, wird return-anweisung nötig. Rückgabewert: hinter der return-anweisung. Argumente einer Methode stehen in der in Parameterliste (Variablendeklaration mit Typ und Name - für jeden Parameter). Hat die Methode keine Parameter, ist die Parameterliste leer Wird ein Teil eines Programmes mehr als einmal gebraucht, so ist dieser Programmteil als Methode auszulagern! (kein copy paste!) Übungen Informatik 1 5

Methoden Mathematische Berechnungen Klasse java.lang.math s. API: für Mathematische Berechnungen, für die kein Operator zur Verfügung steht z.b.: - Potenzrechnung - Bestimmung von Minimum und Maximum - Winkelfunktion - Quadratwurzelberechnung Übungen Informatik 1 6

Methoden mathematische Berechnung public class mathmethoden { static double kreisflaeche(int radius) { double flaeche; return flaeche = Math.pow(radius, 2) * Math.PI; public static void main(string[] args) { double wurzel2; System.out.println("Kreisfläche mit radius 10 = " + kreisflaeche(10)); System.out.println(Math.min( 300, kreisflaeche(100) )); wurzel2 = Math.sqrt(2); System.out.println( "Wurzel von 2 = " + wurzel2); System.out.println( "Wurzel von 2 (abgeschn.) = " + Math.floor(wurzel2)); verwendete Methoden: Math.pow Quadrat des Radius (Math.pow(a,b) = a hoch b) Math.max,Math.min Maximum, Minimum von 2 Zahlen bestimmen Math.abs Absolutwert (ohne Vorzeichen) einer Zahl Math.sqrt Quadratwurzel Math.floor schneidet die Nachkommastellen ab. Math.PI gibt den Wert von PI = 3.141592653589793 zurück Übungen Informatik 1 7

Rekursion Ein Objekt heißt rekursiv, wenn es sich selbst als Teil enthält. Rekursion ist ein alltägliches Phänomen: - Rückkopplung Mikrofon/Lautsprecher - Blick mit einem Spiegel in den Spiegel Übungen Informatik 1 8

Rekursion Beispiel: Eine kleine Wunsch-Funktion Auf dem Weg durch den Wald begegnet uns eine Fee. Sie spricht zu uns:»du hast drei Wünsche frei«. static void fee() { wunsch(); wunsch(); fee(); Durch den dauernden Aufruf der fee()-funktion haben wir unendlich viele Wünsche frei. Rekursion ist also das Aufrufen der eigenen Methode, in der wir uns befinden. direkte Rekursion Dies kann auch über einen Umweg funktionieren. indirekte Rekursion. Übungen Informatik 1 9

Abbruchbedingung einer Rekursion Eine Endlos-Rekursion: static void runter( int n ) { System.out.print( n + ", " ); runter( n - 1 ); Aufruf von runter(10) folgende Ausgabe: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2,... Rekursion ist prinzipiell etwas Unendliches. Abhilfe: 1. Abbruchbedingung wie bei Schleifen 2. und dann keinen Rekursionsaufruf mehr starten. Die Abbruchbedingung einer Rekursion static void runter( int n ) { if ( n == 0 ) // Rekursionsende return; System.out.print( n + ", " ); runter( n - 1 ); Die runter()-methode ruft jetzt nur noch so lange runter(n-1) auf, wie n ungleich Null ist. Übungen Informatik 1 10

Unterschiedliche Rekursionsformen Rekursionen, bei denen hinter dem Methodenaufruf keine Anweisungen stehen heißen Endrekursion. static void runter1( int n ){ if ( n == 0 ) // Rekursionsende return; System.out.print( n + ", " ); runter1( n - 1 ); Ausgabe von runter1(10) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 Rekursionen, bei denen hinter dem Methodenaufruf Anweisungen stehen (schwieriger zu verstehen): static void runter2( int n ){ if ( n == 0 ) // Rekursionsende return; runter2( n - 1 ); System.out.print( n + ", " ); runter1() gibt zuerst die Zahl n aus und ruft anschließend rekursiv runter1() auf. runter2() steigt jedoch erst immer tiefer ab, und die Rekursion muß beendet sein, bis es zum ersten print() kommt. Ausgabe von runter2(10) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, Der Trick bei der Sache ist nun darin zu sehen, dass jede Methode ihre eigene lokale Variable besitzt. Übungen Informatik 1 11

Rekursion Ausblick Ausblick Der niederländische Maler Maurits Cornelis Escher (1898-1972) machte die Rekursion auch in Bildern berühmt. Seiten mit Bildern und Vita finden sich zum Beispiel unter folgenden Webadressen: http://www.worldofescher.com/ http://www.etropolis.com/escher/ http://www.iproject.com/escher/escher100.html Übungen Informatik 1 12