Befehlsübersicht zu Miki, dem kleinen Roboter

Transcrição

Befehlsübersicht zu Miki, dem kleinen Roboter
Stephan Rave, Kathrin Smetana
10./17. September 2012
Matlab - Kompakturs
Kurzübersicht zu Miki, Niki der Roboter für Matlab
Befehlsreferenz
Niki akzeptiert folgende Befehle:
vor
drehe_links
drehe_rechts
nimm_auf
gib_ab
abschalten
gehe ein Feld vorwärts
mache Vierteldrehung gegen den Uhrzeigersinn
mache Vierteldrehung im Uhrzeigersinn
nehme eine Scheibe auf und lege sie in den Vorrat
lege eine Scheibe aus dem Vorrat auf das aktuelle Feld ab
schalte dich ab
Niki kann folgende Tests durchführen:
vorne_frei
links_frei
rechts_frei
platz_belegt
hat_vorrat
true (wahr), falls Niki vor keiner Wand steht, sonst false (falsch)
true, falls links von Niki keine Wand ist
true, falls rechts von Niki keine Wand ist
true, falls Niki auf einem Feld mit mindestens einer Scheibe steht
true, falls mindestens eine Scheibe in Nikis Vorrat ist
Ist Niki abgeschaltet, führt jeder weitere Befehl zu einem Fehler. Außerdem gerät Niki in den
folgenden Situationen in einen Fehlerzustand. Ist er in einem Fehlerzustand, kann er keine
weiteren Befehle mehr ausführen.
- vor, jedoch nicht vorne_frei
- nimm_auf, jedoch nicht platz_belegt
- gib_ab, jedoch nicht hat_vorrat
- gib_ab, jedoch befidet sich bereits die Maximalzahl von 9 Scheiben auf dem Feld
Der Befehl miki_init(’dateiname’) lädt das in dateiname gespeicherte Feld und stellt es dar.
miki_edit startet einen Editor, mit dem das Feld bearbeitet werden kann. Mit dem Befehl
miki_save(’dateiname’) wird das Feld abgespeichert. miki_pause hält das Programm an.
Matlab-Skripte
Ein Matlab-Skript (m-File) ist eine Abfolge von Befehlen, die von Matlab der Reihe nach abgearbeitet werden, bis das Ende des Skripts erreicht ist:
% Das i s t e i n m− f i l e .
% Kommentare b e g i n n e n mit % und werden von Matlab i g n o r i e r t .
Befehl1 ;
Befehl2 ;
.
.
% Hier i s t d i e D a t e i zu ende
Statt eines Befehls kann an jeder Stelle ein if-Block folgen, der nur ausgeführt wird, wenn die
nach dem Schlüsselwort if folgende Bedingung zutrifft. Der optionale else-Block wird andernfalls
ausgeführt. Soll ein Block von Befehlen wiederholt werden so lange die Bedingung zutrifft, wird
ein while-Block verwendet:
i f Bedingung
Befehl1 ;
Befehl2 ;
.
.
end
i f Bedingung
Befehl1 ;
Befehl2 ;
.
.
else
Befehla ;
Befehlb ;
.
.
end
while Bedingung
Befehl1 ;
Befehl2 ;
.
.
end
Als Bedingung können die Abfragen vorne_frei, platz_belegt, etc. eingesetzt werden. Einfache Bedingungen B1, B2 können zu komplizierteren Bedingungen mit Hilfe logischer Operatoren
zusammengesetzt werden:
∼B1
B1 & B2
B1 | B2
ist true genau dann, wenn B1 false ist.
ist true genau dann, wenn B1 und B2 beide true sind.
ist true genau dann, wenn B1 oder B2 oder sowohl B1 als auch B2 true sind.
Ein Beispiel für formal korrekte Matlab-Syntax
% Anfang d e s B e i p s i e l s
vor ;
drehe links ;
if vorne frei
drehe rechts ;
vor ;
while ∼p l a t z b e l e g t & v o r n e f r e i
nimm auf ;
gib ab ;
if hat vorrat & platz belegt & vorne frei
drehe rechts ;
vor ;
else
drehe links ;
vor ;
end
end
end
nimm auf ;