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 ;