Slides:



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

der Universität Oldenburg
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Prof. Dr. Bernhard Zimmermann
Zusammenfassung der Vorwoche
Einführung in JavaScript II
Telefonnummer.
Imperative Programmierung
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Java- Syntax.
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Imperative Programmierung
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
Differentielles Paar UIN rds gm UIN
Prof. Dr. Bernhard Wasmayr
Thema des Informatikkurses der Klasse 8
Das Java-Hamstermodell
DVG Ablaufsteuerung
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
DVG Klassen und Objekte
Bedingte Wiederholung (Buch S119)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Programmierung Anweisungen und Datentypen
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
AWA 2007 Natur und Umwelt Natürlich Leben

Grundkonzepte Java - Klassendefinition
Prof. Dr. Günter Gerhardinger Soziale Arbeit mit Einzelnen und Familien Übersicht über die Lehrveranstaltung Grundlegende Bestimmungsfaktoren der Praxis.
Java programmieren mit JavaKara
Zusatzfolien zu B-Bäumen
Wenn Programme Entscheidungen fällen müssen, dann …
Eine Einführung in die CD-ROM
Dokumentation der Umfrage
Wir üben die Malsätzchen
Syntaxanalyse Bottom-Up und LR(0)
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmierung
Wiederholte Programmausführung
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Retuschen.ppt Die folgende Schau zeigt die Möglichkeiten, mit PhotoDraw Digitalbilder zu retuschieren. Vergleichen Sie jeweils zwei Bildpaare durch fleissiges.
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
PHP: Operatoren und Kontrollstrukturen
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Forschungsprojekt Statistik 2013 „Jugend zählt“ – Folie 1 Statistik 2013 „Jugend zählt“: Daten zur Arbeit mit Kindern und Jugendlichen.
Folie Einzelauswertung der Gemeindedaten
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Schleifen
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
Das Java-Hamster-Modell
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
JavaKara programmieren: Verzweigungen
 Präsentation transkript:

Hamster-Modell / Auswahl Auswahlanweisungen Wiederholungsanweisungen Boolesche Methoden Strukturieren von Programmen Hamster mit Gedächtnis (Boolesche Variablen) Hamster mit Gedächtnis (Zahlen) Integer-Methoden Verallgemeinerungen von Daten und Methoden Prozeduren und Methoden mit Parametern Prozeduren und Methoden, die sich selbst aufrufen (Rekursion)

Hamster-Modell / Auswahl / Test-Befehle 3 Testbefehle, u. a. zur Vermeidung von Laufzeitfehlern vornFrei() liefert den Wert true (wahr), falls sich in Blickrichtung direkt vor dem Hamster keine Mauer befindet, false (falsch) sonst. maulLeer() liefert den Wert false, falls der Hamster mindestens ein Korn im Maul hat, true sonst. kornDa() liefert den Wert true, falls auf der Kachel, auf der der Hamster sich gerade befindet, mindestens ein Korn liegt, false sonst. Sinn und Zweck nur wenn der Testbefehl vornFrei() den Wert true liefert, darf der Befehl vor(); ausgeführt werden. nur wenn der Testbefehl maulLeer() den Wert false liefert, darf der Befehl gib(); ausgeführt werden. nur wenn der Testbefehl kornDa() den Wert true liefert, darf der Befehl nimm(); ausgeführt werden.

Hamster-Modell / Boolesche Ausdrücke Ziel: Verknüpfung von Testbefehlen vornFrei() && maulLeer() Aussage der Aussagenlogik Satz, dem eindeutig ein Wahrheitswert wahr (true) oder falsch (false) zugeordnet werden kann „Ein Tisch ist ein Möbelstück“, "die Sonne scheint" „Geh nach Hause“ (keine Aussage) vornFrei(), maulLeer(), kornDa() Boolesche Werte Menge der Wahrheitswerte: { true, false } Einfache (elementare) boolesche Ausdrücke Testbefehle

Hamster-Modell / Boolesche Ausdrücke Verknüpfung von booleschen Ausdrücken durch logische Operatoren zu booleschen Ausdrücken Negation „nicht“ („!“) ! A liefert true, wenn der boolesche Ausdruck A den Wert false hat, false sonst. Beispiel: !vornFrei() Konjunktion „und“ („&&“) A1 && A2 liefert true, wenn die booleschen Ausdrücke A1 und A2 den Wert true haben, false sonst. Beispiel: vornFrei() && !maulLeer() Disjunktion „oder“ („||“) A1 || A2 liefert true, wenn mindestens einer der beiden booleschen Ausdrücke A1 und A2 den Wert true hat, false sonst. Beispiel: !kornDa() || vornFrei()

Hamster-Modell / Boolesche Ausdrücke / Eigenschaften Priorität („Punkt vor Strich“) Wie wird der folgende boolesche Ausdruck abgearbeitet? maulLeer() || ! vornFrei() && kornDa()   maulLeer() || ! vornFrei() && kornDa()  ! vor && vor || Durch Klammerung kann die Priorität beeinflusst werden: Ein in runde Klammern eingeschlossener boolescher Ausdruck wird immer zuerst ausgeführt. Beispiele: ( maulLeer() || !vornFrei() ) && kornDa() !( kornDa() && maulLeer() )

Hamster-Modell / Boolesche Ausdrücke / Eigenschaften Assoziativität Auswertungsreihenfolge bei gleicher Priorität Beispiele: maulLeer() || vornFrei() || kornDa() !!maulLeer()  &&, || Linksassoziativ („von links nach rechts“)  ! Rechtsassoziativ („von rechts nach links“) ( maulLeer() || vornFrei() ) || kornDa() !( !maulLeer() ) Auswertungsreihenfolge („Der Hamster ist ein faules Tier“) Boolescher Ausdruck A1 && A2 Der Wert des booleschen Teilausdrucks A2 wird nur dann ermittelt, wenn der Teilausdruck A1 den Wert true liefert. Boolescher Ausdruck A1 || A2 Der Wert des booleschen Teilausdrucks A2 wird nur dann ermittelt, wenn der Teilausdruck A1 den Wert false liefert.

Hamster-Modell / Bedingte Anweisung Bedingte Anweisung (Abzweigung): Ausführung einer Anweisung in Abhängigkeit von der Gültigkeit eines booleschen Ausdrucks if ( Boolescher Ausdruck ) Anweisung Semantik (Bedeutung) Zuerst wird der boolesche Ausdruck ausgewertet. Falls die Auswertung den Wert true liefert, wird die Anweisung ausgeführt, sonst nicht. Anweisung Grundanweisung (Grundbefehl) Prozeduraufruf Bedingte Anweisung

Hamster-Modell / Bedingte Anweisung / Beispiele Sichere Grundbefehle void sicheresVor() { if (vornFrei()) vor(); } void sicheresGib() { if (!maulLeer()) gib(); void sicheresNimm() { if (kornDa()) nimm(); if (kornDa()) nimm(); linksUm(); // wird immer ausgeführt

Hamster-Modell / Blockanweisung Zusammenfassung von mehreren Anweisungen zu einer Einheit { Anweisung1 ... Anweisungn } Semantik (Bedeutung) Die in geschweifte Klammern eingeschlossenen Anweisungen werden in der angegebenen Reihenfolge ausgeführt. Anweisung Grundanweisung (Grundbefehl) Prozeduraufruf Bedingte Anweisung Blockanweisung

Hamster-Modell / Blockanweisung / Beispiele if (kornDa() && vornFrei()) { nimm(); vor(); } linksUm(); // wird immer ausgeführt void sicheresGib() { if (!maulLeer()) gib();

Hamster-Modell / Alternativanweisung Alternativanweisung (Verzweigung): Von 2 gegebenen Anweisungen wird genau eine Anweisung in Abhängigkeit von der Gültigkeit bzw. Nichtgültigkeit eines booleschen Ausdrucks ausgeführt if ( Boolescher Ausdruck ) Anweisung1 else Anweisung2 Semantik (Bedeutung) Zuerst wird der boolesche Ausdruck ausgewertet. Falls die Auswertung den Wert true liefert, wird die Anweisung1 ausgeführt, sonst die Anweisung2. Anweisung Grundanweisung (Grundbefehl) Prozeduraufruf Blockanweisung Bedingte Anweisung Alternativanweisung Auswahlanweisung, Fallunterscheidung

Hamster-Modell / Alternativanweisung / Beispiele if (vornFrei()) vor(); else if (kornDa()) nimm(); else if (!maulLeer()) gib(); else linksUm(); linksUm(); // wird immer ausgeführt if (vornFrei()) if (kornDa()) nimm(); else vor(); Zu welchem if gehört das else, d.h. was geschieht, wenn vornFrei() den Wert false liefert?  if (vornFrei()) { if (kornDa()) nimm(); else vor(); } Das else gehört immer zu dem letzten if, dem noch kein else zugeordnet ist. 

Hamster-Modell / Auswahlanweisungen / Beispiel Aufgabe: Gegeben sei das folgende Hamster-Territorium. Der Hamster weiß nicht, wieviele Körner er im Maul hat. Falls möglich, soll er in jeder Ecke seines Territoriums genau ein Korn ablegen. Programm: void main() { if (!maulLeer()) gib(); laufeInDieNaechsteEcke(); if (!maulLeer()) gib(); } void laufeInDieNaechsteEcke() { vor(); vor(); vor(); vor(); linksUm(); }

Hamster-Modell / Aufgaben Gegeben sei das folgende Hamster-Territorium. Der Hamster weiß nicht, wieviele Körner er im Maul hat. Falls möglich, soll er in jeder Ecke seines Territoriums genau ein Korn ablegen. Wenn er keine Körner mehr im Maul hat, soll er nicht weiterlaufen. Aufgabe 6: Gegeben sei das folgende Hamster-Territorium. Auf jeder Kachel liegen ein oder zwei Körner. Der Hamster soll dafür sorgen, dass auf jeder Kachel genau ein Korn liegt (mit Feld aufg6a.ter und aufg6b.ter testen).

Hamster-Modell / Aufgaben Gegeben sei das folgende Hamster-Territorium. In den Eckfeldern liegen jeweils 1, 2 oder 3 Körner. Der Hamster weiß nicht, wieviele Körner er im Maul hat. Nach der Ausführung des Programms sollen in der unteren linken Ecke 1 Korn, in der unteren rechten Ecke 2 Körner, in der oberen rechten Ecke 3 Körner und in der oberen linken Ecke 4 Körner liegen. Außerdem soll der Hamster, sobald er feststellt, daß er kein Korn mehr ablegen kann oder nachdem er in der oberen linken Ecke das 4. Korn abgelegt hat, zurück in die Ausgangsposition laufen.

Hamster-Modell / Wiederholung Auswahlanweisungen  Wiederholungsanweisungen Boolesche Methoden Strukturieren von Programmen Hamster mit Gedächtnis (Boolesche Variablen) Hamster mit Gedächtnis (Zahlen) Integer-Methoden Verallgemeinerungen von Daten und Methoden Prozeduren und Methoden mit Parametern Prozeduren und Methoden, die sich selbst aufrufen (Rekursion)

Hamster-Modell / Wiederholung / Motivation Aufgabe Gegeben seien die beiden folgenden Hamster-Territorien: Der Hamster soll in Blickrichtung bis zur nächsten Wand laufen. Programme void main() { vor(); } void main() { vor(); vor(); } Allgemeingültig: solange vornFrei() wiederhole vor();

Hamster-Modell / Wiederholung / while-Anweisung while-Anweisung (while-Schleife): Wiederholte Ausführung einer Anweisung (Iterationsanweisung) in Abhängigkeit von der Gültigkeit eines booleschen Ausdrucks while ( Boolescher Ausdruck ) Anweisung Semantik (Bedeutung) 1. Zuerst wird der boolesche Ausdruck ausgewertet. 2. Falls die Auswertung den Wert true liefert, wird die Anweisung ausgeführt. Anschließend werden die Punkte 1 und 2 ein weiteres Mal ausgeführt. 3. Wenn die Auswertung den Wert false liefert, ist die Ausführung der while-Anweisung beendet. Anweisung Grundanweisung (Grundbefehl) Prozeduraufruf Blockanweisung Bedingte Anweisung Alternativanweisung while-Anweisung

Hamster-Modell / Korrekte Hamster-Programme Gegeben: eine Hamster-Aufgabe mit der Charakterisierung von Hamsterlandschaften, also i. a. kein spezielles Hamster-Territorium. Ein Hamster-Programm ist korrekt, wenn es alle folgenden Bedingungen erfüllt: Es muß syntaktisch korrekt sein. Es muß die Aufgabenstellung für alle sich aus der Landschaftscharakterisierung ergebenden möglichen Ausgangssituationen korrekt und vollständig lösen. Das Programm verursacht keine Laufzeitfehler und hält nach endlicher Zeit an (terminiert).

Hamster-Modell / Wiederholung / Beispiel Aufgabe Der Hamster befindet sich auf einer beliebigen Kachel in einem durch Mauern abgeschlossenen Hamster-Territorium unbekannter Größe. Typische Hamsterlandschaften: Der Hamster soll in Blickrichtung bis zur nächsten Wand laufen. Programm void main() { while (vornFrei()) vor(); }

Hamster-Modell / Wiederholung / Beispiel Aufgabe Der Hamster befindet sich auf einer beliebigen Kachel in einem durch Mauern abgeschlossenen ansonsten aber mauerlosen Hamster-Territorium unbekannter Größe. Typische Hamsterlandschaften: Der Hamster soll in eine Ecke laufen und dabei alle Körner einsammeln.

Hamster-Modell / Wiederholung / Beispiel Aufgabe (Fortsetzung) Der Hamster befindet sich auf einer beliebigen Kachel in einem durch Mauern abgeschlossenen ansonsten aber mauerlosen Hamster-Territorium unbekannter Größe. Der Hamster soll in eine Ecke laufen und dabei alle Körner einsammeln. Programm void main() { sammle(); laufeBisZurNaechstenWandUndSammle(); linksUm(); laufeBisZurNaechstenWandUndSammle(); } void sammle() { while (kornDa()) { nimm(); } void laufeBisZurNaechstenWandUndSammle() { while (vornFrei()) { vor(); sammle();

Hamster-Modell / Wiederholung / do-Anweisung do-Anweisung (do-Schleife): die Iterationsanweisung wird mindestens einmal ausgeführt do Anweisung while ( Boolescher Ausdruck ); Semantik (Bedeutung) 0. Ausführung der Anweisung 1. Der boolesche Ausdruck wird ausgewertet. 2. Falls die Auswertung den Wert true (!) liefert, wird die Anweisung ausgeführt. Anschließend werden die Punkte 1 und 2 ein weiteres Mal ausgeführt. 3. Wenn die Auswertung den Wert false liefert, ist die Ausführung der do-Anweisung beendet. Anweisung Grundanweisung (Grundbefehl) Prozeduraufruf Blockanweisung Bedingte Anweisung Alternativanweisung while-Anweisung do-Anweisung Schleifen

Hamster-Modell / Wiederholung / Beispiel Aufgabe Der Hamster hat eine bestimmte Anzahl (>0) von Körnern im Maul, die er alle ablegen soll. Programm void main() { do { gib(); } while (!maulLeer()); }

Hamster-Modell / Wiederholung / Beispiel Aufgabe Der Hamster befindet sich mit Blickrichtung Ost in der linken unteren Ecke eines durch Mauern abgeschlossenen ansonsten aber mauerlosen Hamster-Territoriums unbekannter Größe. Auf jeder Kachel innerhalb der Mauern befindet sich mindestens ein Korn. Typische Hamsterlandschaften: Der Hamster soll entlang der Mauern laufen und dabei alle Körner einsammeln. Alle Körner, die er im Maul hat, soll er anschließend in der linken unteren Ecke ablegen.

Hamster-Modell / Wiederholung / Beispiel Aufgabe (Fortsetzung) Der Hamster ... . Auf jeder Kachel innerhalb der Mauern befindet sich mindestens ein Korn. Der Hamster soll entlang der Mauern laufen und dabei alle Körner einsammeln. Alle Körner, die er im Maul hat, soll er anschließend in der linken unteren Ecke ablegen. Programm void main() { // sammle(); laufeInDieNaechsteEckeUndSammle(); linksUm(); laufeInDieNaechsteEckeUndSammle(); legAb(); } void sammle() { do { nimm(); while (kornDa()); ...

Hamster-Modell / Wiederholung / Beispiel Aufgabe (Fortsetzung) Der Hamster ... . Auf jeder Kachel innerhalb der Mauern befindet sich mindestens ein Korn. Der Hamster soll entlang der Mauern laufen und dabei alle Körner einsammeln. Alle Körner, die er im Maul hat, soll er anschließend in der linken unteren Ecke ablegen. Programm ... void laufeInDieNaechsteEckeUndSammle(){ while (vornFrei()) { vor(); sammle(); } void legAb() { do { gib(); while (!maulLeer());

Hamster-Modell / Wiederholung geschachtelte Schleifen Aufgabe Der Hamster befindet sich auf einer beliebigen Kachel in einem durch Mauern abgeschlossenen ansonsten aber mauerlosen Hamster-Territorium unbekannter Größe. Der Hamster soll in Blickrichtung bis zur nächsten Wand laufen und dabei alle Körner einsammeln, ausgenommen die Körner auf der letzten Kachel vor der Mauer. Programm mit geschachtelten while-Schleifen void main() { while (vornFrei()) { // sammle while (kornDa()) nimm(); vor(); }

Hamster-Modell / Wiederholung / Endlosschleife die Schleifenbedingung hat immer den Wert true Beispiel: Bei der Ausführung des Programms void main() { while (vornFrei()) { while (kornDa()) nimm(); } mit dem Hamster-Territorium ergibt sich eine Endlosschleife.

Hamster-Modell / Aufgaben In einem rechteckigen, geschlossenen Raum unbekannter Größe ohne innere Mauern sind wahllos eine unbekannte Anzahl an Körnern verstreut. Typische Hamsterlandschaften: Der Hamster, der sich zu Anfang in der linken unteren Ecke des Hamster-Territoriums mit Blickrichtung Ost befindet, soll alle Körner aufsammeln und dann stehenbleiben.

Hamster-Modell / Aufgaben Der Hamster steht vor einer regelmäßigen Mulde unbekannter Tiefe. Es liegen keine Körner im Hamster-Territorium. Typische Hamsterlandschaften: Der Hamster, der anfangs genau ein Korn im Maul hat, soll bis zur tiefsten Stelle der Mulde hinabsteigen, sich umdrehen, wieder hinaufsteigen und an seiner Anfangsposition stehenbleiben.

Hamster-Modell / Aufgaben Der Hamster befindet sich in der unteren Ecke eines gleichmäßigen rautenförmigen Territoriums beliebiger Größe. Er schaut gen Norden. Das Territorium ist durch Mauern abgeschlossen; ansonsten existieren jedoch keine Mauern. In dem Territorium befindet sich genau ein Korn. Typische Hamsterlandschaften: Der Hamster soll sich auf die Suche nach dem Korn machen und es schließlich fressen.

Hamster-Modell / Wiederholung Auswahlanweisungen  Wiederholungsanweisungen  Boolesche Methoden Strukturieren von Programmen Hamster mit Gedächtnis (Boolesche Variablen) Hamster mit Gedächtnis (Zahlen) Integer-Methoden Verallgemeinerungen von Daten und Methoden Prozeduren und Methoden mit Parametern Prozeduren und Methoden, die sich selbst aufrufen (Rekursion)

Hamster-Modell / Test-Methoden / Motivation Prozeduren definieren neue Befehle (Anweisungen) Beispiel: rechtsUm(); Test-Methoden definieren neue Testbefehle (boolesche Methoden) liefern als Ergebnis einen booleschen Wert Beispiele: mauerDa() linksFrei() rechtsFrei() fuenfKoernerDa()

Hamster-Modell / return-Anweisung Boolesche return-Anweisung: liefern des Wertes einer booleschen Methode return Boolescher Ausdruck; Semantik (Bedeutung) 1. Der Wert des Booleschen Ausdrucks wird berechnet. 2. Die Ausführung der booleschen Methode, die diese return-Anweisung enthält, wird beendet. 3. Der Wert des Booleschen Ausdrucks wird als Ergebnis der booleschen Methode zurückgegeben. Anweisung Grundanweisung (Grundbefehl) Prozeduraufruf Blockanweisung Bedingte Anweisung Alternativanweisung while-Anweisung do-Anweisung return-Anweisung

Hamster-Modell / return-Anweisung / Beispiele Beispiele für die Anwendung der booleschen return-Anweisung return true; return vornFrei(); return maulLeer() || vornFrei(); return (kornDa() && !vornFrei());

Hamster-Modell / Boolesche Methoden / Deklaration Boolesche Methodedeklaration: Vereinbarung eines neuen Testbefehls boolean MethodenName() { Anweisungsfolge } Methodenkopf Methodenrumpf Zusatzbedingung: In jedem möglichen Weg durch den Methodenrumpf muß eine boolesche return-Anweisung stehen! Beispiel: boolean mauerDa() { return !vornFrei(); }

Hamster-Modell / Boolesche Methoden / Aufruf Aufruf einer booleschen Methode MethodenName() Zusatzbedingung: Boolesche Methodenaufrufe dürfen überall dort auftreten, wo auch die 3 vordefinierten Testbefehle aufgerufen werden dürfen, nämlich in booleschen Ausdrücken. Semantik (Bedeutung) Ausführung des Methodenrumpfs Der zurückgegebene Wert wird bei der weiteren Auswertung des booleschen Ausdrucks an der Stelle verwendet, an der der Methodenaufruf stand. Beispiel: void main(){ if (mauerDa()) linksUm(); }

Hamster-Modell / Boolesche Methoden / Programm Prozeduren boolesche Methoden Programm mit Methoden void main() { Anweisungsfolge } Methodendeklaration ... Methodendeklaration Dabei müssen die folgenden Bedingungen gelten: Die Methodennamen sind paarweise verschieden. Innerhalb der Methodenrümpfe werden nur Methoden aufgerufen, die auch deklariert sind. Es spielt keine Rolle, ob die aufgerufene Methode vor oder nach dem Aufruf deklariert wird! Die Methodendeklarationen sind nicht geschachtelt.

Hamster-Modell / Boolesche Methoden / Beispiel Programm void main() { if (linksFrei()) linksUm(); else { } boolean linksFrei() { linksUm(); return vornFrei(); Programm void main() { if (linksFrei()) linksUm(); if (!linksFrei()) { } boolean linksFrei() { linksUm(); return vornFrei();

Hamster-Modell / Boolesche Methoden / Seiteneffekt Seiteneffekt einer booleschen Methode nach Beendigung des Methodenaufrufs ist nicht nur der Ergebniswert berechnet, sondern auch der Zustand des Hamsters oder der Hamsterlandschaft verändert. Boolesche Methoden sollten in der Regel wegen des besseren Verständnisses der Reduzierung der Komplexität der geringeren Fehleranfälligkeit keine Seiteneffekte hervorrufen.  Die von einer booleschen Methode bewirkten Zustandsänderungen müssen von dieser vor der Beendigung wieder rückgängig gemacht werden.

Hamster-Modell / Boolesche Methoden / Beispiel Boolesche Methode linksFrei() ohne Seiteneffekt boolean linksFrei() { linksUm(); if (vornFrei()) { rechtsUm(); return true; } else { return false;

Hamster-Modell / Aufgaben Der Hamster steht mit Blickrichtung Ost vor einer unregelmäßigen und mit Körnern gefüllten Mulde (ohne Überhänge!). Er weiß nicht, wie breit und tief die Mulde ist. Typische Hamsterlandschaften: Der Hamster soll alle Körner einsammeln und anschließend auf einer beliebigen Kachel der tiefsten Ebene sitzen bleiben.

Hamster-Modell / Aufgaben Der Hamster, der genau ein Korn im Maul hat, sitzt in einem geschlossenen, körnerlosen Raum unbekannter Größe. Rechts von ihm befindet sich eine Wand; das Feld vor ihm ist frei. Typische Hamsterlandschaften: Der Hamster soll solange an der Wand entlang laufen, bis er wieder sein Ausgangsfeld erreicht.

Hamster-Modell / Aufgaben Der Hamster ist zum Skifahrer mutiert. Vor ihm befindet sich ein Slalom-Parcours mit einem Korn am Ende, das das Ziel markiert. Typische Hamsterlandschaft mit Wegbeschreibung: Der Hamster soll den Slalom-Parcours bewältigen und das Korn fressen.

Hamster-Modell / Aufgaben Der Hamster steht in der linken unteren Ecke eines Labyrinths. Dieses besteht aus Gängen, die jeweils so breit sind, wie eine Mauer. Die Gänge können verzweigen, es gibt jedoch keine Rundgänge. Typische Hamsterlandschaft: Der Hamster „riecht“ das einzige Korn im Labyrinth. Da er Hunger hat, versucht er natürlich, das Korn zu finden und zu fressen.

Hamster-Modell / Ausblick Auswahlanweisungen  Wiederholungsanweisungen  Boolesche Methoden  Strukturieren von Programmen Hamster mit Gedächtnis (Boolesche Variablen) Hamster mit Gedächtnis (Zahlen) Integer-Methoden Verallgemeinerungen von Daten und Methoden Prozeduren und Methoden mit Parametern Prozeduren und Methoden, die sich selbst aufrufen (Rekursion)