Arbeitsblatt zu Methoden

Ähnliche Dokumente
Methoden-Expertin. Aufgabe 1. Das Neue. Lösung in JavaKara. Puzzle: Expertin D

Arbeiten mit JavaKara

Arbeitsblatt zur While Schleife

Grundlegende Programmierkonzepte: Anweisungen und Methoden

Grundlegende Programmierkonzepte: Variablen, Methoden-Parameter, Rückgabewerte

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

AUFGABE 1: REGULÄRE AUSDRÜCKE (5 PUNKTE)

Informatik 11: Einführung in Java. Lösungen zu den Rekursions-Aufgaben

Kurze Begründung, warum der Ausdruck korrekt ist oder jeweils zwei Gegenbeispiele, die zeigen, warum der Ausdruck nicht korrekt ist

Gestern: Kara. Steuerung: Endliche Automaten

Gierhardt. 1 import javakara. JavaKaraProgram ; 3 public class Playit1 extends JavaKaraProgram. 4 { // Anfang von Playit1. 6 void gehezumbaum ( ) 7 {

import JavaKaraProgram; public class Quadrat extends JavaKaraProgram { // Anfang von Quadrat void turnaround() { kara.turnleft(); kara.

pue13 January 28, 2017

Objektorientiertes Programmieren (Java)

Musterlösung Stand: 5. Februar 2009

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

Kapitel 2: Programmfluss steuern

Umsetzung einer Klassenkarte in einer Programmiersprache

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Einführung in die Programmierung 1

Prüfung Computation, Programming

Javakurs für Anfänger

Implementieren von Klassen

JavaKara. In JavaKara gibt es folgende Anweisungen: kara.move()

Die Klasse java.lang.object. Thorsten Treffer

Martin Unold INFORMATIK. Geoinformatik und Vermessung

JAVA - Methoden

System.out.println("TEXT");

JAVA für Nichtinformatiker - Probeklausur -

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

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

Elementare Konzepte von

Informatik I - Einstiegskurs

Greenfoot: Verzweigungen Nicolas Ruh und Dieter Koch

EINFÜHRUNG IN DIE PROGRAMMIERUNG

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

Java Kurs für Anfänger Einheit 5 Methoden

JAVA - Methoden - Rekursion

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

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

Grundlegende Programmierkonzepte: Abläufe mit Wiederholungen (Schleifen)

Greenfoot: Verzweigungen

Methoden und Wrapperklassen

Objektorientierte Programmierung Studiengang Medieninformatik

Einführung in die Programmierung für NF. Zuweisungen, main- Methode und Kommentare

Einführung in die Programmierung für NF. Zuweisungen, main- Methode und Kommentare

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Aufgaben: Gierhardt. 1 import javakara. JavaKaraProgram ; 3 public c l a s s Quadrat extends JavaKaraProgram 4 { 5 void turnaround ( )

Aufgabenblatt 3. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

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

Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1

EINFÜHRUNG IN DIE PROGRAMMIERUNG

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

Programmierung für Mathematik (HS13)

Kapitel 1: Die ersten Schritte Thema: Programmieren Seite: 1

Java Übung. Übung 3. Werner Gaulke. 2. Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

1 Klassen anlegen und Objekte erzeugen

Übungsblatt 2. Java Vorkurs (WS 2017)

1 Klassen anlegen und Objekte erzeugen

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

Übungsblatt 2. Java Vorkurs (WS 2015)

Probeklausur Informatik 2 Sommersemester 2013

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Welche Informatik-Kenntnisse bringen Sie mit?

Aufgabenblatt 5. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

Girls Day 2017 Programmierung

Methoden und Funktionen

Anweisungen zur Ablaufsteuerung

Probeklausur: Programmierung WS04/05

Übungsblatt 1. Java Vorkurs (WS 2017)

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kleines Java-Glossar zum Praktikum Einführung in das Programmieren

Aufgabe Total Punkte

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

5. Tutorium zu Programmieren

Objektorientierung (OO)

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

Java Einführung Methoden. Kapitel 6

Programmieren I + II Regeln der Code-Formatierung

Zentralübung Grundlagen der Programmierung

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

Einstieg in die Informatik mit Java

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Institut für Informatik

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

Einführung in das Programmieren Probeklausur Lösungen

Wie entwerfe ich ein Programm?

Javakurs für Anfänger

JAVA - Methoden,... T.Bosse

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Sprachkonstrukte Verzweigungen und Array-Strukturen

Einführung in C. EDV1-04C-Einführung 1

Programmieren I + II Regeln der Code-Formatierung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Klausur Software-Entwicklung März 01

Klausur Fachprüfung Wirtschaftsinformatik Dauer: 2 Stunden. Name:

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

Transkript:

Arbeitsblatt zu Methoden In den vorhergehenden Programmen haben wir bereits jede Menge Methoden benutzt: 1. kara.move(), kara.turnright(), kara.putleaf() Dies sind alles Methoden, die etwas ausführen, dazu aber keine weiteren Angaben benötigen. Das erkennt man daran, dass in den runden Klammern, die einen Methodenaufruf kennzeichnen, keine weiteren Angaben stehen. Man sagt es handelt sich um Methoden ohne Parameter! 2. tools.showmessage ( "Die Zahl lautet: " + zahl ) oder world.setsize( 20, 20 ) Dies sind Methoden, die etwas ausführen, dazu aber weitere Angaben benötigen (welche Nachricht soll dem Benutzer angezeigt werden bzw. die Breite und Höhe der Welt). Dies erkennt man daran, dass in den runden Klammern, die einen Methodenaufruf kennzeichnen, bestimmte Datentypen (Zeichenkette = String, Ganzzahlen = int) in einer bestimmten Anzahl stehen ( showmessage (String s) eine Zeichenkette, world.setsize( int x, int y) zwei Integer). Hierbei handelt es sich um Methoden mit einem oder mehreren Parametern! 3. kara.treefront() == true, int Zahl = tools.intinput( "Gebe eine Zahl ein:") Dies sind Methoden ohne oder mit Parametern, die etwas ausführen und ein Ergebnis mit einem bestimmten Datentyp zurückgeben (einen bool'schen Wert true oder false bei boolean kara.treefron(), bzw. eine Ganzzahl bei int tools.intinput ( String message ) ). Hierbei handelt es sich um Methoden mit einem Rückgabewert. Wir unterscheiden also drei Typen von Methoden: Methoden ohne Parameter, Methoden mit Parametern und Methoden (mit oder ohne Parameter), die ein Ergebnis in einem bestimmten Datentyp zurückgeben. Zwei Methoden haben wir schon selber programmiert, wobei deren Methodennamen fest vorgegeben war: public void mymainprogram () Dies ist eine Methode, die beim Aufruf keine Parameter benötigt, die runden Klammern sind leer () und die kein Ergebnis zurückliefert (erkennbar an dem Schlüsselwort void) public static void main (String[] args) Dies ist eine Methode, der beim Aufruf mehrere Zeichenketten übergeben werden können (Array von Strings) und die auch kein Ergebnis zurückliefert (erkennbar an dem Schlüsselwort void) Der Sinn von Methoden liegt darin, dass man gleichen Programmcode, den man an mehreren Stellen im Programm benutzt, nur einmal programmiert, mit einem sprechenden Namen versieht und ihn dann mehrmals an unterschiedlichen Stellen im Programm mit dem entsprechenden Namen aufrufen kann. Das kann zum einen den gesamten Programmcode verkürzen (wenn die Methode an mehreren Stellen aufgerufen wird), erhöht aber immer die Verständlichkeit eines Programms, wenn für die Methoden aussagekräftige Namen verwendet werden. Im folgenden wollen wir eigene Methoden programmieren zunächst ohne Parameter, dann mit Parametern und zum Schluß Methoden mit Rückgabewerten.

1. Beispiel: Methode ohne Parameter und Rückgabewert Kara sucht ein Kleeblatt um es aufzunehmen. Er weiss, dass eines geradeaus vor ihm liegt - er muss nur um die Bäume herumlaufen. Glücklicherweise stehen nie zwei Bäume nebeneinander. Schreibe ein Programm, das ihn bis zum Kleeblatt führt! Verwende eine Methode public void geheumbaumherum() package Methoden; public class FindeKleeblatt extends JavaKaraProgram{ // wir definieren eine eigene Methode, die keine Parameter () // und keinen Rückgabewert (void) hat void geheumbaumherum() { // kara soll laufen, bis er ein Kleeblatt findet while ( kara.onleaf() == false ) { if (kara.treefront() == false) { // kein Baum in Weg: gehe vorwärts else { // vor kara steht ein Baum // hier rufen wir unsere Methode auf. geheumbaumherum(); // wir stehen auf dem Kleeblatt und nehmen es auf kara.removeleaf(); public static void main(string[] args) { FindeKleeblatt meinprogramm = new FindeKleeblatt(); meinprogramm.run(); Lese sorgfältig ALLE Kommentare in obigem Programm. Beachte die Einrückungen nach öffnenden Klammern! Noch Fragen? a) Was würdest Du über die Verständlichkeit des Programms sagen, wenn wir keine eigene Methode geheumbaum() herum verwendet hätten? b) Benenne die Methode geheumbaumherum() um nach geheumbaeumeherum() und ändere sie so ab, dass kara auch in einer Welt, in der beleibig viele Bäume hintereinander stehen können, das Kleeblatt findet!

2. Beispiel: Methode mit Parameter Kara soll eine Linie der Länge l zeichnen und dabei die Methode void zeichnelinie( int l ) verwenden. package Methoden; public class ZeichneLinieMitMethode extends JavaKaraProgram{ // wir definieren eine eigene Methode, die den // FORMALEN PARAMETER int l und keinen Rückgabewert (void) hat void zeichnelinie (int l) { int aktlaenge; // die Variable aktlaenge ist NUR in der Methode // zeichnelaenge sichtbar. // In mymainprogram() kannst Du sie NICHT verwenden aktlaenge = 0; // Schleifen Initialisierung while (aktlaenge < l) { // der formale Parameter l wird bei der Ausführung der Methode // mit dem Wert ersetzt, der beim Aufruf der Methode angegeben // ist, also mit dem Aufrufparameter! kara.putleaf(); aktlaenge++; int laenge; laenge = tools.intinput("gebe die Länge der Linie an"); world.setsize(laenge+2, 3); kara.setposition(1,1); // wir rufen die Methode zeichnelaenge(int l) mit dem Wert laenge auf! zeichnelinie(laenge);// Der AUFRUFPARAMETER laenge ersetzt bei der // Ausführung den formalen Parameter l public static void main(string[] args) { ZeichneLinieMitMethode meinprogramm = new ZeichneLinieMitMethode(); meinprogramm.run(); Lese sorgfältig ALLE Kommentare in obigem Programm. Beachte die Einrückungen nach öffnenden Klammern! Noch Fragen? a) Programmiere das Programm Lege4Quadrate (1. Arbeitsblatt, 3b) so um, dass der Benutzer nach der Seitenlaenge und dem Abstand der Quadrate gefragt wird. Verwende dabei drei eigene Methoden. Die Methoden machen jeweils nur das, was ihr Name angibt!: void zeichnelinie ( int l ) void zeichnequadrat ( int seitenlaenge ), verwende dabei zeichnelinie! void zeichne4quadrate (int seitenlaenge, int abstand), verwende dabei zeichnequadrat. kara.setposition() darf nicht verwendet werden!

b) Programmiere das Programm ZeichneSpirale (1. Aufgabenblatt, 8c) so um, dass Du drei eigene Methoden verwendest. Der Benutzer wird zu Anfang nach der Startlänge der Spirale gefragt, nach dem Windungsabstand und nach der Anzahl der Windungen!: void zeichnelinie(int laenge) void zeichnewinkel(int seitenlaenge), verwende in der Methode zeichnelinie() void zeichnewindung(int startlaenge, int abstand), verwende in der Methode zeichnewinkel() 3. Beispiel: Methode mit Rückabewert In der in JavaKara eingebauten Methodensammlung "fehlen" einige Methoden. Es gibt treefront(), treeleft() und treeright() für Bäume, weil Kara dafür Sensoren besitzt. Für Kleeblätter gibt es nur den Sensor onleaf(). Wir können aber einen Sensor für Kleeblätter um Kara herum nachbilden, in dem wir Kara dort hinschicken, mit onleaf() nachsehen und zurück kehren lassen. Das Ergebnis seiner Erkundung (true oder false) soll Kara zurück liefern. Kara läuft an einer Kleeblattspur vorbei und soll jedesmal, wenn links ein Kleeblatt liegt, eine entsprechende Meldung ausgeben. Das Programm findest Du auf der folgenden Seite. a) Kann man die Verzweigung if () { else { in dem Programm durch folgende Anweisung ersetzen? Begründung! linksvorhanden = karaonleaf(); b) Kara soll einer Kleeblattspur folgen, die beliebige rechtwinklige Abzweigungen besitzt. Verwende in Deinem Programm drei eigene Methoden boolean leafleft () boolean leaffront () boolean leafright () die jeweils true zurückgeben, wenn links bzw. vor bzw. rechts von Kara ein Blatt liegt. c) Kara soll den Punktedurchschnitt der Klasse 11GD im Fach TW berechnen. Die Punkte jedes Schülers sind als Balkendiagramm gegeben. Die Anzahl der Schüler kann variabel sein! Verwende folgenden Methoden: int zaehleschuelerpunkte (), die die Punkte eines Schülers zurückgibt void laufezurück (int anzahlfelder), die Kara wieder zur y-achse des Diagramms zurücklaufen läßt. 4. Grundlagenverständnis Bitte folgende Kapitel in "Java ist eine Insel" lesen: (Buch herunterladen, falls noch nicht geschehen) Kapitel 1.3 bis 1.7 Grundlagen: JRE, Installation, erstes Programm, Eclipse Kapitel 2.2 bis 2.7 Anweisungem, Datentypen, Operatoren, Verzweigungen, Schleifen, Methoden Alternativ: Die Kapitel 2, 3.2, 4 bis 7, 8.2 und 8.3 in "Handbuch der Java Programmierung" (Buch herunterladen, falls noch nicht geschehen):

package Methoden; public class FolgeKleeblattSpur extends JavaKaraProgram{ // wir definieren eine eigene Methode, die den Rückgabewert boolean hat boolean leafleft() { // lokale Variable, nur in leafleft() sichtbar boolean linksvorhanden; // Linksdrehen und nachgucken if (kara.onleaf()){ linksvorhanden = true; else { linksvorhanden = false; // wieder zurück auf den Ausgangspunkt // hier geben wir das Ergebis unserer Erkundung zurück return linksvorhanden; int breite; breite = world.getsizex(); for (int i = 0; i < breite; i++) { // leafleft gibt den Wert true oder false zurück if ( leafleft() == true ) { tools.showmessage("links neben mir liegt ein Kleeblatt"); public static void main(string[] args) { FolgeKleeblattSpur meinprogramm = new FolgeKleeblattSpur(); meinprogramm.run("kleeblatt5");