Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
132 KAPITEL 11. BOOLESCHE FUNKTIONEN<br />
11.6.1 Beispielprogramm 1<br />
Aufgabe:<br />
In einem rechteckigen geschlossenen Raum unbekannter Gro e ohne innere Mauern sind wahllos<br />
eine unbekannte Anzahl an Kornern verstreut (siehe Beispiele in Abbildung 11.8). Der Hamster,<br />
der sich zu Anfang in der linken unteren Ecke des Hamster-Territoriums mit Blickrichtung Ost<br />
be ndet, soll alle Korner aufsammeln und dann stehenbleiben.<br />
#<br />
#<br />
#<br />
#<br />
#<br />
#<br />
############<br />
o<br />
o #<br />
o o o o o #<br />
o o o o o #<br />
> o<br />
o o #<br />
########### #<br />
#<br />
#<br />
#<br />
#<br />
#<br />
#######<br />
o o #<br />
o o #<br />
><br />
o #<br />
###### #<br />
Abbildung 11.8: Typische Hamsterlandschaften zu Beispielprogramm 1<br />
#<br />
#<br />
#<br />
###<br />
> o #<br />
###<br />
Dieses Beispielprogramm hatten wir bereits in Kapitel 10.4.1 als Beispielprogramm 1 gelost;<br />
dort allerdings ohne den Einsatz von booleschen Funktionen. Dieses Mal losen wir das Problem<br />
mit Hilfe boolescher Funktionen. Sie werden feststellen, da der Algorithmus so verstandlicher<br />
und besser nachvollziehbar ist.<br />
Losung:<br />
void main()<br />
{<br />
ernte_eine_reihe_und_laufe_zurueck();<br />
while (weitere_reihe_existiert())<br />
{<br />
begib_dich_in_naechste_reihe();<br />
ernte_eine_reihe_und_laufe_zurueck();<br />
}<br />
}<br />
boolean weitere_reihe_existiert() {<br />
rechts_um();<br />
if (vorn_frei()) {<br />
// Achtung: der Hamster muss sich wieder in seine<br />
// Ausgangsstellung begegeben<br />
links_um();<br />
return true;<br />
} else {<br />
links_um();<br />
return false;<br />
}<br />
}<br />
void ernte_eine_reihe_und_laufe_zurueck()