Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Hamster-ProgrammierungSeite 38 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Auswahl n Auswahlanweisungen.

Ähnliche Präsentationen


Präsentation zum Thema: "Hamster-ProgrammierungSeite 38 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Auswahl n Auswahlanweisungen."—  Präsentation transkript:

1 Hamster-ProgrammierungSeite 38 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Auswahl n Auswahlanweisungen n Wiederholungsanweisungen n Boolesche Methoden n Strukturieren von Programmen n Hamster mit Gedächtnis (Boolesche Variablen) n Hamster mit Gedächtnis (Zahlen) n Integer-Methoden n Verallgemeinerungen von Daten und Methoden n Prozeduren und Methoden mit Parametern n Prozeduren und Methoden, die sich selbst aufrufen (Rekursion)

2 Hamster-ProgrammierungSeite 39 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Auswahl / Test-Befehle n 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. n 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.

3 Hamster-ProgrammierungSeite 40 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Boolesche Ausdrücke n Ziel: Verknüpfung von Testbefehlen – vornFrei() && maulLeer() n 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() n Boolesche Werte –Menge der Wahrheitswerte: { true, false } n Einfache (elementare) boolesche Ausdrücke –Boolesche Werte –Testbefehle

4 Hamster-ProgrammierungSeite 41 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Boolesche Ausdrücke n 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()

5 Hamster-ProgrammierungSeite 42 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Boolesche Ausdrücke / Eigenschaften n Priorität (Punkt vor Strich) –Wie wird der folgende boolesche Ausdruck abgearbeitet? »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() ) »maulLeer() || ! vornFrei() && kornDa()

6 Hamster-ProgrammierungSeite 43 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik 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) Beispiele: ( maulLeer() || vornFrei() ) || kornDa() !( !maulLeer() ) n 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.

7 Hamster-ProgrammierungSeite 44 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Bedingte Anweisung n 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. n Anweisung –Grundanweisung (Grundbefehl) – Prozeduraufruf – Bedingte Anweisung

8 Hamster-ProgrammierungSeite 45 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Bedingte Anweisung / Beispiele n Sichere Grundbefehle void sicheresVor() { if (vornFrei()) vor(); } void sicheresGib() { if (!maulLeer()) gib(); } void sicheresNimm() { if (kornDa()) nimm(); } n if (kornDa()) nimm(); linksUm(); // wird immer ausgeführt

9 Hamster-ProgrammierungSeite 46 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Blockanweisung n Blockanweisung –Zusammenfassung von mehreren Anweisungen zu einer Einheit { Anweisung 1... Anweisung n } –Semantik (Bedeutung) »Die in geschweifte Klammern eingeschlossenen Anweisungen werden in der angegebenen Reihenfolge ausgeführt. n Anweisung –Grundanweisung (Grundbefehl) – Prozeduraufruf – Bedingte Anweisung – Blockanweisung

10 Hamster-ProgrammierungSeite 47 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Blockanweisung / Beispiele if (kornDa() && vornFrei()) { nimm(); vor(); } linksUm(); // wird immer ausgeführt void sicheresGib() { if (!maulLeer()) { gib(); }

11 Hamster-ProgrammierungSeite 48 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Alternativanweisung n 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 ) Anweisung 1 else Anweisung 2 –Semantik (Bedeutung) »Zuerst wird der boolesche Ausdruck ausgewertet. »Falls die Auswertung den Wert true liefert, wird die Anweisung 1 ausgeführt, sonst die Anweisung 2. n Anweisung –Grundanweisung (Grundbefehl) – Prozeduraufruf – Blockanweisung – Bedingte Anweisung – Alternativanweisung Auswahlanweisung, Fallunterscheidung

12 Hamster-ProgrammierungSeite 49 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Alternativanweisung / Beispiele n if (vornFrei()) vor(); else if (kornDa()) nimm(); else if (!maulLeer()) gib(); else linksUm(); linksUm(); // wird immer ausgeführt n if (vornFrei()) if (kornDa()) nimm(); else vor(); if (vornFrei()) { if (kornDa()) nimm(); else vor(); } Zu welchem if gehört das else, d.h. was geschieht, wenn vornFrei() den Wert false liefert? Das else gehört immer zu dem letzten if, dem noch kein else zugeordnet ist.

13 Hamster-ProgrammierungSeite 50 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Auswahlanweisungen / Beispiel n 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. n Programm: void main() { if (!maulLeer()) gib(); laufeInDieNaechsteEcke(); if (!maulLeer()) gib(); laufeInDieNaechsteEcke(); if (!maulLeer()) gib(); laufeInDieNaechsteEcke(); if (!maulLeer()) gib(); } void laufeInDieNaechsteEcke() { vor(); vor(); vor(); vor(); linksUm(); }

14 Hamster-ProgrammierungSeite 51 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Aufgaben n Aufgabe 5: –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. n 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).

15 Hamster-ProgrammierungSeite 52 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Aufgaben n Aufgabe 7: –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.

16 Hamster-ProgrammierungSeite 53 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung n Auswahlanweisungen n Wiederholungsanweisungen n Boolesche Methoden n Strukturieren von Programmen n Hamster mit Gedächtnis (Boolesche Variablen) n Hamster mit Gedächtnis (Zahlen) n Integer-Methoden n Verallgemeinerungen von Daten und Methoden n Prozeduren und Methoden mit Parametern n Prozeduren und Methoden, die sich selbst aufrufen (Rekursion)

17 Hamster-ProgrammierungSeite 54 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung / Motivation n Aufgabe –Gegeben seien die beiden folgenden Hamster-Territorien: Der Hamster soll in Blickrichtung bis zur nächsten Wand laufen. n Programme void main() { vor(); } void main() { vor(); vor(); } Allgemeingültig: solange vornFrei() wiederhole vor();

18 Hamster-ProgrammierungSeite 55 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung / while-Anweisung n 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. n Anweisung –Grundanweisung (Grundbefehl) – Prozeduraufruf – Blockanweisung – Bedingte Anweisung – Alternativanweisung – while-Anweisung

19 Hamster-ProgrammierungSeite 56 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Korrekte Hamster-Programme Gegeben:eine Hamster-Aufgabe mit der Charakterisierung von Hamsterlandschaften, also i. a. kein spezielles Hamster-Territorium. n 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).

20 Hamster-ProgrammierungSeite 57 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung / Beispiel n 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. n Programm void main() { while (vornFrei()) vor(); }

21 Hamster-ProgrammierungSeite 58 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung / Beispiel n 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.

22 Hamster-ProgrammierungSeite 59 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung / Beispiel n 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. n Programm void main() { sammle(); laufeBisZurNaechstenWandUndSammle(); linksUm(); laufeBisZurNaechstenWandUndSammle(); } void sammle() { while (kornDa()) { nimm(); } } void laufeBisZurNaechstenWandUndSammle() { while (vornFrei()) { vor(); sammle(); }

23 Hamster-ProgrammierungSeite 60 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung / do-Anweisung n 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. n Anweisung –Grundanweisung (Grundbefehl) – Prozeduraufruf – Blockanweisung – Bedingte Anweisung – Alternativanweisung – while-Anweisung – do-Anweisung Schleifen

24 Hamster-ProgrammierungSeite 61 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung / Beispiel n Aufgabe –Der Hamster hat eine bestimmte Anzahl (>0) von Körnern im Maul, die er alle ablegen soll. n Programm void main() { do { gib(); } while (!maulLeer()); }

25 Hamster-ProgrammierungSeite 62 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung / Beispiel n 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.

26 Hamster-ProgrammierungSeite 63 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung / Beispiel n 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. n Programm void main() { // sammle(); laufeInDieNaechsteEckeUndSammle(); linksUm(); laufeInDieNaechsteEckeUndSammle(); legAb(); } void sammle() { do { nimm(); } while (kornDa()); }...

27 Hamster-ProgrammierungSeite 64 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung / Beispiel n 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. n Programm... void laufeInDieNaechsteEckeUndSammle(){ while (vornFrei()) { vor(); sammle(); } void legAb() { do { gib(); } while (!maulLeer()); }

28 Hamster-ProgrammierungSeite 65 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung geschachtelte Schleifen n 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. n Programm mit geschachtelten while-Schleifen void main() { while (vornFrei()) { // sammle while (kornDa()) nimm(); vor(); }

29 Hamster-ProgrammierungSeite 66 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung / Endlosschleife n Endlosschleife –die Schleifenbedingung hat immer den Wert true ergibt sich eine Endlosschleife. Beispiel: Bei der Ausführung des Programms void main() { while (vornFrei()) { while (kornDa()) nimm(); } mit dem Hamster-Territorium

30 Hamster-ProgrammierungSeite 67 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Aufgaben n Aufgabe 8: –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.

31 Hamster-ProgrammierungSeite 68 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Aufgaben n Aufgabe 9: –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.

32 Hamster-ProgrammierungSeite 69 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Aufgaben n Aufgabe 10: –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.

33 Hamster-ProgrammierungSeite 70 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Wiederholung n Auswahlanweisungen n Wiederholungsanweisungen n Boolesche Methoden n Strukturieren von Programmen n Hamster mit Gedächtnis (Boolesche Variablen) n Hamster mit Gedächtnis (Zahlen) n Integer-Methoden n Verallgemeinerungen von Daten und Methoden n Prozeduren und Methoden mit Parametern n Prozeduren und Methoden, die sich selbst aufrufen (Rekursion)

34 Hamster-ProgrammierungSeite 71 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Test-Methoden / Motivation n Prozeduren –definieren neue Befehle (Anweisungen) Beispiel: – rechtsUm(); n Test-Methoden –definieren neue Testbefehle (boolesche Methoden) –liefern als Ergebnis einen booleschen Wert Beispiele: – mauerDa() – linksFrei() – rechtsFrei() – fuenfKoernerDa()

35 Hamster-ProgrammierungSeite 72 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / return-Anweisung n 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. n Anweisung –Grundanweisung (Grundbefehl) – Prozeduraufruf – Blockanweisung – Bedingte Anweisung – Alternativanweisung – while-Anweisung – do-Anweisung – return-Anweisung

36 Hamster-ProgrammierungSeite 73 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / return-Anweisung / Beispiele n Beispiele für die Anwendung der booleschen return-Anweisung – return true; – return vornFrei(); – return maulLeer() || vornFrei(); – return (kornDa() && !vornFrei());

37 Hamster-ProgrammierungSeite 74 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik boolean MethodenName () { Anweisungsfolge } MethodenkopfMethodenrumpf Beispiel: boolean mauerDa() { return !vornFrei(); } Zusatzbedingung: »In jedem möglichen Weg durch den Methodenrumpf muß eine boolesche return-Anweisung stehen! Hamster-Modell / Boolesche Methoden / Deklaration n Boolesche Methodedeklaration: –Vereinbarung eines neuen Testbefehls

38 Hamster-ProgrammierungSeite 75 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Boolesche Methoden / Aufruf n Methodenaufruf: –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(); }

39 Hamster-ProgrammierungSeite 76 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Boolesche Methoden / Programm n Methoden: –Prozeduren –boolesche Methoden n 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.

40 Hamster-ProgrammierungSeite 77 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Boolesche Methoden / Beispiel n Programm void main() { if (linksFrei()) linksUm(); else { linksUm(); } boolean linksFrei() { linksUm(); return vornFrei(); } n Programm void main() { if (linksFrei()) linksUm(); if (!linksFrei()) { linksUm(); } boolean linksFrei() { linksUm(); return vornFrei(); }

41 Hamster-ProgrammierungSeite 78 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Boolesche Methoden / Seiteneffekt n 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. n 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.

42 Hamster-ProgrammierungSeite 79 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Boolesche Methoden / Beispiel Boolesche Methode linksFrei() ohne Seiteneffekt boolean linksFrei() { linksUm(); if (vornFrei()) { rechtsUm(); return true; } else { rechtsUm(); return false; }

43 Hamster-ProgrammierungSeite 80 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Aufgaben n Aufgabe 11: –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.

44 Hamster-ProgrammierungSeite 81 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Aufgaben n Aufgabe 12: –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.

45 Hamster-ProgrammierungSeite 82 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Aufgaben n Aufgabe 13: –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.

46 Hamster-ProgrammierungSeite 83 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Aufgaben n Aufgabe 14: –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.

47 Hamster-ProgrammierungSeite 84 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Ausblick n Auswahlanweisungen n Wiederholungsanweisungen n Boolesche Methoden n Strukturieren von Programmen n Hamster mit Gedächtnis (Boolesche Variablen) n Hamster mit Gedächtnis (Zahlen) n Integer-Methoden n Verallgemeinerungen von Daten und Methoden n Prozeduren und Methoden mit Parametern n Prozeduren und Methoden, die sich selbst aufrufen (Rekursion)


Herunterladen ppt "Hamster-ProgrammierungSeite 38 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik Hamster-Modell / Auswahl n Auswahlanweisungen."

Ähnliche Präsentationen


Google-Anzeigen