![nach oben](bugnorthsmall.gif)
Kara
benutzt Sensoren
Übungen zu Logischen Verknüpfungen
Syntax und Struktogramm der Verzweigung
(if-Anweisung)
![nach oben](bugnorthsmall.gif)
Karasensor1
import JavaKaraProgram;
/**
*<hr>
*Aufgabe für Kara: KARA steht vor einem Baum oder nicht. Wenn nicht, soll sie
einfach einen Schritt weitergehen, steht sie vor einem Baum, soll sie um den
einzelnen Baum herumgehen.
*<hr>
*@see <a href="Javakara.html">Alle Programme</a>
*@author Dorothea Steinhauer
*@version 1.0/ 21.1.2002
*/
public class KaraSensor1 extends JavaKaraProgram
{//Anfang von KaraSensor1
void geheUmBaumHerum()
{//Anfang von geheUmBaumHerum
kara.turnLeft();
kara.move();
kara.turnRight();
kara.move();
kara.move();
kara.turnRight();
kara.move();
kara.turnLeft();
}//Ende von geheUmBaumHerum
public void myProgram()
{//Anfang von myProgram
if (kara.treeFront())
{this.geheUmBaumHerum();
}
else
{kara.move();
}
}//Ende von myProgram
}//Ende von KaraSensor1
![Übungsaufgaben](uebung.gif) ![nach oben](bugnorthsmall.gif)
1) Karasensor2:
KARA steht vor einem einzelnen Baum oder nicht. Wenn sie
nicht vor einem Baum steht, soll sie einfach einen Schritt weitergehen. Im
anderen Fall prüft sie, ob sie auf einem Kleeblatt steht. Steht sie auf einem
Kleeblatt, hebt sie es auf und geht links um den einzelnen Baum herum. Im
anderen Fall legt sie ein Kleeblatt nieder und geht rechts um den Baum herum.
Lösung
2) Java-Struktogramm-Übung
Setze
die in der Programmiersprache Java vorgegebenen Programmläufe in
Struktogramme um: A0, ... ,A5 seien beliebige Anweisungen (z.B.
kara.move()) , B1, B2 seien beliebige Bedingungen (boolesche
Ausdrücke, z.B. !kara.treeFront())
a) if (B1) {
A1; A2; } else {
if (B2) {
A3; } else
{
A4; }; } A5;
Lösung
|
b) A0; if
(B1) { A1; } else {
A2; if
(B2) {
A3; } else {
A4; } A5; }
Lösung
|
3) Formuliere folgende Struktogramme
in Java-Anweisungen:
|
a)
![](strukto2.gif)
Lösung
|
b)
![](strukto3.gif)
Lösung
|
![Kontrolltests](kontroll.gif) ![nach oben](bugnorthsmall.gif)
Multiple-Choice-Test
zu Sensoren, Logik, Struktogrammen
![nach oben](bugnorthsmall.gif)
Karasensor3
Aufgabe: Kara prüft,
ob sie vor einem Pilz steht. Wenn sie vor einem Pilz steht, soll
sie um den Pilz herum gehen, prüfen, ob vor ihr ein Baum steht.
Falls dies möglich ist, schiebt sie den Pilz ein Feld weiter. Verhindert
ein Baum dies, legt sie ein Kleeblatt neben den (einzelnen) Baum.
Steht Kara zu Beginn nicht vor einem Pilz, soll sie ein Tänzchen
tanzen.
Programmiere zuerst die notwendigen Prozeduren.
Lösung
![](javalogo.gif)
Karasensor4
Aufgabe: Programmiere,
dass Kara genau dann keinen Schritt macht, wenn sie rechts und links
keinen Baum neben sich hat.
Lösung
![Zusatzinformationen/aufgaben](zusatzinfo.gif) ![nach oben](bugnorthsmall.gif)
1.
Wie lässt sich das Verhalten von Kara wie rechts angegeben in einem
Struktogramm bzw. in Form von Java-Anweisungen notieren?
2. In der Programmierung mit Kara als endlichem Automaten wurden
verschiedene Situationen durch die Sensorzustände (yes/no usw.)
gekennzeichnet. Überlege dir ein System, mit dem man einen beliebigen Kara-Zustand mit
beliebigen Sensoren und Karakommandos in ein Struktogramm und/oder
in Java-Anweisungen übertragen kann.
3. Informiere dich, welche Schreibweisen
es in der Mathematik für die logischen Verknüpfungen UND, ODER und NICHT
gibt.
4. Mathematiker, die sich grundlegend mit der
Logik beschäftigt haben, sind George Boole und de Morgan. Finde
etwas über sie heraus.
5. Auch Suchmaschinen bedienen sich der logischen
Operatoren. Finde heraus, wie man eine Suche bei einer bestimmten
Suchmaschine logisch durchdacht gestalten kann (Informationen: http://www.suchfibel.de/2kunst/boolesche_operatoren.htm)
|