Hamster-ProgrammierungSeite 38 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich...

47
Hamster-Programmierung Seite 1 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich Automatisierung und Informatik 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)

Transcript of Hamster-ProgrammierungSeite 38 Hochschule Harz © Prof. Dr. Bernhard Zimmermann Fachbereich...

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

Hamster-ProgrammierungSeite 1

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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)

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

Hamster-ProgrammierungSeite 2

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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.

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

Hamster-ProgrammierungSeite 3

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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– Boolesche Werte

– Testbefehle

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

Hamster-ProgrammierungSeite 4

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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()

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

Hamster-ProgrammierungSeite 5

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Boolesche Ausdrücke / Eigenschaften 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()

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

Hamster-ProgrammierungSeite 6

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Boolesche Ausdrücke / Eigenschaften

– Assoziativität» Auswertungsreihenfolge bei gleicher PrioritätBeispiele:

maulLeer() || vornFrei() || kornDa() !!maulLeer()

&&, || Linksassoziativ („von links nach rechts“)

! Rechtsassoziativ („von rechts nach links“)

Beispiele: ( 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.

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

Hamster-ProgrammierungSeite 7

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Bedingte Anweisung

Bedingte Anweisung (Abzweigung): – Ausführung einer Anweisung in Abhängigkeit von der Gültigkeit

eines booleschen Ausdrucksif ( 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

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

Hamster-ProgrammierungSeite 8

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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

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

Hamster-ProgrammierungSeite 9

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Blockanweisung

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

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

Hamster-ProgrammierungSeite 10

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Blockanweisung / Beispiele

if (kornDa() && vornFrei())

{ nimm(); vor();}linksUm(); // wird immer ausgeführt

void sicheresGib() { if (!maulLeer())

{ gib(); }}

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

Hamster-ProgrammierungSeite 11

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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

– AlternativanweisungAuswahlanweisung,

Fallunterscheidung

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

Hamster-ProgrammierungSeite 12

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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();

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.

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

Hamster-ProgrammierungSeite 13

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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(); laufeInDieNaechsteEcke();

if (!maulLeer()) gib(); laufeInDieNaechsteEcke();

if (!maulLeer()) gib();}void laufeInDieNaechsteEcke()

{ vor(); vor(); vor(); vor(); linksUm(); }

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

Hamster-ProgrammierungSeite 14

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Aufgaben 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.

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).

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

Hamster-ProgrammierungSeite 15

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Aufgaben 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örnerliegen. 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.

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

Hamster-ProgrammierungSeite 16

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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)

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

Hamster-ProgrammierungSeite 17

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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(); vor();}

void main(){ vor(); vor(); vor(); vor();}

Allgemeingültig: solange vornFrei() wiederhole vor();

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

Hamster-ProgrammierungSeite 18

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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

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

Hamster-ProgrammierungSeite 19

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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).

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

Hamster-ProgrammierungSeite 20

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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.

Programmvoid main(){

while (vornFrei()) vor();}

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

Hamster-ProgrammierungSeite 21

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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.

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

Hamster-ProgrammierungSeite 22

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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.

Programmvoid main() {

sammle(); laufeBisZurNaechstenWandUndSammle(); linksUm(); laufeBisZurNaechstenWandUndSammle();}

void sammle() { while (kornDa())

{ nimm(); }}void laufeBisZurNaechstenWandUndSammle() { while (vornFrei()) { vor(); sammle(); }}

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

Hamster-ProgrammierungSeite 23

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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-AnweisungSchleifen

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

Hamster-ProgrammierungSeite 24

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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());}

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

Hamster-ProgrammierungSeite 25

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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.

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

Hamster-ProgrammierungSeite 26

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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.

Programmvoid main() { // sammle(); laufeInDieNaechsteEckeUndSammle(); linksUm(); laufeInDieNaechsteEckeUndSammle(); linksUm(); laufeInDieNaechsteEckeUndSammle(); linksUm(); laufeInDieNaechsteEckeUndSammle(); legAb();}void sammle() { do { nimm(); } while (kornDa());}...

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

Hamster-ProgrammierungSeite 27

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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());}

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

Hamster-ProgrammierungSeite 28

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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-Schleifenvoid main() { while (vornFrei()) { // sammle while (kornDa()) nimm(); vor(); }}

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

Hamster-ProgrammierungSeite 29

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Wiederholung / Endlosschleife

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

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

Hamster-ProgrammierungSeite 30

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Aufgaben 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.

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

Hamster-ProgrammierungSeite 31

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Aufgaben 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.

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

Hamster-ProgrammierungSeite 32

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Aufgaben 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.

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

Hamster-ProgrammierungSeite 33

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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)

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

Hamster-ProgrammierungSeite 34

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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()

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

Hamster-ProgrammierungSeite 35

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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

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

Hamster-ProgrammierungSeite 36

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / return-Anweisung / Beispiele

Beispiele für die Anwendung der booleschen return-Anweisung– return true;

– return vornFrei();

– return maulLeer() || vornFrei();

– return (kornDa() && !vornFrei());

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

Hamster-ProgrammierungSeite 37

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

boolean MethodenName() { Anweisungsfolge }

Methodenkopf Methodenrumpf

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

Boolesche Methodedeklaration: – Vereinbarung eines neuen Testbefehls

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

Hamster-ProgrammierungSeite 38

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Boolesche Methoden / Aufruf 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();}

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

Hamster-ProgrammierungSeite 39

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Boolesche Methoden / Programm

Methoden: – 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.

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

Hamster-ProgrammierungSeite 40

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Boolesche Methoden / Beispiel

Programm

void main(){ if (linksFrei()) linksUm(); else { linksUm(); linksUm(); }}

boolean linksFrei(){ linksUm(); return vornFrei();}

Programmvoid main(){ if (linksFrei()) linksUm(); if (!linksFrei()) { linksUm(); linksUm(); }}

boolean linksFrei(){ linksUm(); return vornFrei();}

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

Hamster-ProgrammierungSeite 41

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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.

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

Hamster-ProgrammierungSeite 42

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Boolesche Methoden / Beispiel

Boolesche Methode linksFrei() ohne Seiteneffektboolean linksFrei() { linksUm(); if (vornFrei()) { rechtsUm(); return true; }

else { rechtsUm(); return false; }

}

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

Hamster-ProgrammierungSeite 43

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Aufgaben 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.

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

Hamster-ProgrammierungSeite 44

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Aufgaben 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.

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

Hamster-ProgrammierungSeite 45

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Aufgaben 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.

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

Hamster-ProgrammierungSeite 46

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

Hamster-Modell / Aufgaben 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.

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

Hamster-ProgrammierungSeite 47

Hochschule Harz © Prof. Dr. Bernhard ZimmermannFachbereich Automatisierung und Informatik

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)