Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision | ||
niki:beispiele [04.02.2018 21:32] – whupfeld | niki:beispiele [06.02.2018 16:08] – [Prozeduren] whupfeld | ||
---|---|---|---|
Zeile 8: | Zeile 8: | ||
Mit Hilfe einer kleinen Einführungssequenz lernen Sie die Möglichkeiten der NIKI-Programmierumgebung kennen. Im folgenden werden bei allen Beispielen die englischen Schlüsselwörter verwendet. | Mit Hilfe einer kleinen Einführungssequenz lernen Sie die Möglichkeiten der NIKI-Programmierumgebung kennen. Im folgenden werden bei allen Beispielen die englischen Schlüsselwörter verwendet. | ||
- | |||
- | |||
- | |||
- | |||
===== Die Grundaufgabe ===== | ===== Die Grundaufgabe ===== | ||
Zeile 17: | Zeile 13: | ||
NIKI befindet sich auf einem Arbeitsfeld mit einer Treppe und einem Podest. NIKI soll den Gegenstand von der obersten Stufe der Treppe auflesen und zum Podest transportieren und anschließend vor dem Podest stehenbleiben. | NIKI befindet sich auf einem Arbeitsfeld mit einer Treppe und einem Podest. NIKI soll den Gegenstand von der obersten Stufe der Treppe auflesen und zum Podest transportieren und anschließend vor dem Podest stehenbleiben. | ||
- | treppe0.gif | + | {{niki:treppe0.gif}} |
Nikis Möglichkeiten sind sehr eingeschränkt. Der Roboter kann Gegenstände aufnehmen und abgeben, er kann sich in Pfeilrichtung nach vorne bewegen und er hat die Möglichkeit, | Nikis Möglichkeiten sind sehr eingeschränkt. Der Roboter kann Gegenstände aufnehmen und abgeben, er kann sich in Pfeilrichtung nach vorne bewegen und er hat die Möglichkeit, | ||
Zeile 23: | Zeile 19: | ||
- | Handsteuerung | + | ==== Handsteuerung |
Zunächst soll NIKI mit der Hand gesteuert werden. Hierzu bietet sich die Eingabe der Befehle über Tastatur an: | Zunächst soll NIKI mit der Hand gesteuert werden. Hierzu bietet sich die Eingabe der Befehle über Tastatur an: | ||
- | v gehe einen Schritt nach vorne | + | |v |gehe einen Schritt nach vorne| |
- | d Drehung um 90° nach links | + | |d |Drehung um 90° nach links| |
- | n nimm einen Gegenstand auf | + | |n |nimm einen Gegenstand auf| |
- | g gib einen Gegenstand ab | + | |g |gib einen Gegenstand ab| |
Eine entsprechende Eingabesequenz könnte dann folgendermaßen aussehen: | Eine entsprechende Eingabesequenz könnte dann folgendermaßen aussehen: | ||
- | vvvvdvdddvdvdddv... | + | |
- | Aufgabe: Führen Sie jetzt die oben gestellte Aufgabe mit Hilfe der Handsteuerung durch. | + | **Aufgabe**: Führen Sie jetzt die oben gestellte Aufgabe mit Hilfe der Handsteuerung durch. |
===== Teachin-Modus ===== | ===== Teachin-Modus ===== | ||
Zeile 42: | Zeile 40: | ||
Wenn man im Menü Teach-inid_teachin den Eintrag Sequenz aufzeichnen anwählt, werden alle nachfolgenden Arbeitsanweisungen aufgezeichnet. Die Aufzeichnung wird durch Anwahl des gleichen Menüeintrags beendet. Mit Sequenz starten kann NIKI jeweils den gleichen Arbeitsauftrag beliebig oft wiederholen. | Wenn man im Menü Teach-inid_teachin den Eintrag Sequenz aufzeichnen anwählt, werden alle nachfolgenden Arbeitsanweisungen aufgezeichnet. Die Aufzeichnung wird durch Anwahl des gleichen Menüeintrags beendet. Mit Sequenz starten kann NIKI jeweils den gleichen Arbeitsauftrag beliebig oft wiederholen. | ||
- | Mit Speichern sichert man Sequenzen auf Diskette oder Festplatte. | + | Mit Speichern sichert man Sequenzen auf Festplatte. |
- | --> | + | **Aufgabe**: |
===== Programmsteuerung ===== | ===== Programmsteuerung ===== | ||
Zeile 109: | Zeile 107: | ||
drehe_links | drehe_links | ||
End; | End; | ||
+ | |||
Begin | Begin | ||
vor; | vor; | ||
Zeile 122: | Zeile 121: | ||
NIKI bekommt eine neue Aufgabe. Er soll von der Treppe einen Gegenstand auflesen. Es ist aber nicht bekannt, an welcher Stelle auf der Treppe dieser Gegenstand liegt. Ein Arbeitsfeld könnte folgendermaßen aussehen: | NIKI bekommt eine neue Aufgabe. Er soll von der Treppe einen Gegenstand auflesen. Es ist aber nicht bekannt, an welcher Stelle auf der Treppe dieser Gegenstand liegt. Ein Arbeitsfeld könnte folgendermaßen aussehen: | ||
- | treppe3.gif | + | {{niki:treppe3.gif}} |
Um entscheiden zu können, wo sich ein Gegenstand befindet, benötigt NIKI Sensoren, mit denen er seine Umgebung abtasten kann. NIKI verfügt über mehrere Sensorenid_sensoren. Der Sensor für Gegenstände heißt Platz_belegt. Niki kann diesen Sensor abfragen und dann entscheiden, | Um entscheiden zu können, wo sich ein Gegenstand befindet, benötigt NIKI Sensoren, mit denen er seine Umgebung abtasten kann. NIKI verfügt über mehrere Sensorenid_sensoren. Der Sensor für Gegenstände heißt Platz_belegt. Niki kann diesen Sensor abfragen und dann entscheiden, | ||
Zeile 135: | Zeile 134: | ||
Das Arbeitsfeld wird jetzt so verändert, daß NIKI die Lage der Treppe und des Podestes nicht kennt. Treppe und Podest stehen hintereinander, | Das Arbeitsfeld wird jetzt so verändert, daß NIKI die Lage der Treppe und des Podestes nicht kennt. Treppe und Podest stehen hintereinander, | ||
- | treppe1.gif | + | {{niki:treppe1.gif}} |
NIKI verfügt allerdings über einen Sensorid_Sensoren, | NIKI verfügt allerdings über einen Sensorid_Sensoren, | ||
Zeile 151: | Zeile 150: | ||
Da NIKI keine Variablen kennt, läßt sich die folgende Aufgabe nur schwer realisieren: | Da NIKI keine Variablen kennt, läßt sich die folgende Aufgabe nur schwer realisieren: | ||
- | rekurs.gif | + | {{niki:rekurs.gif}} |
NIKI soll bis zum Hindernis gehen, sich umdrehen und dann exakt die gleiche Anzahl von Schritten wieder zurückgehen. | NIKI soll bis zum Hindernis gehen, sich umdrehen und dann exakt die gleiche Anzahl von Schritten wieder zurückgehen. | ||
Zeile 171: | Zeile 170: | ||
End; | End; | ||
</ | </ | ||
+ | |||
+ | Hier folgt die Umsetzung in Niki-Pascal: | ||
<code Pascal> | <code Pascal> | ||
Program Gehe_zum_Hindernis_und_zurueck; | Program Gehe_zum_Hindernis_und_zurueck; | ||
+ | |||
Procedure drehe_um; | Procedure drehe_um; | ||
Begin | Begin | ||
Zeile 179: | Zeile 181: | ||
drehe_links | drehe_links | ||
End; | End; | ||
+ | |||
Procedure Zum_Hindernis_und_zurueck; | Procedure Zum_Hindernis_und_zurueck; | ||
Begin | Begin | ||
Zeile 191: | Zeile 194: | ||
End; | End; | ||
End; | End; | ||
+ | |||
Begin | Begin | ||
Zum_Hindernis_und_zurueck | Zum_Hindernis_und_zurueck | ||
Zeile 196: | Zeile 200: | ||
</ | </ | ||
- | Die Grundaufgabe wird nun dahingehend erweitern, daß NIKI über eine beliebig hohe Treppe geht. Man kann den Lösungsweg für eine rekursive Prozedur gehe_über_die_Treppe so beschreiben: | + | **Aufgabe**: |
< | < | ||
Zeile 208: | Zeile 212: | ||
+ | < | ||
+ | [ [[niki: | ||
+ | < |