Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
niki:beispiele [04.02.2018 21:27]
whupfeld [Entscheidungen]
niki:beispiele [06.02.2018 16:08] (aktuell)
whupfeld [Prozeduren]
Zeile 6: Zeile 6:
 ====== NIKI-Beispiele ====== ====== NIKI-Beispiele ======
  
- 
-NIKI-Beispiele 
 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 =====
- 
-Handsteuerung 
-Teach-in-Modus 
-Programm-Steuerung 
-Prozeduren 
-Entscheidungsanweisungen 
-Schleifen 
-Rekursion 
-Weitere Beispiele 
- 
-Lagerhalle 
-Müll 
-Tunnel 
-Schnitzeljagd 
-  
- 
-==== Die Grundaufgabe ==== 
  
 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 ​(2402 Byte)+{{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,​ sich nach links zu drehen. 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,​ sich nach links zu drehen.
Zeile 37: 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...+  ​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 ​=====
  
 Die Handsteuerung benötigt immer noch einen Menschen, der den Roboter steuert. Sinnvoller wäre es, NIKI könnte einen einmal durchgeführten Arbeitsauftrag erlernen und selbständig wiederholen. Dies ist mit Hilfe des Teach-in-Modus möglich. Die Handsteuerung benötigt immer noch einen Menschen, der den Roboter steuert. Sinnvoller wäre es, NIKI könnte einen einmal durchgeführten Arbeitsauftrag erlernen und selbständig wiederholen. Dies ist mit Hilfe des Teach-in-Modus möglich.
Zeile 56: 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.
  
---> ​Erstellen Sie eine Teachin-Sequenz für die Anfangsaufgabe und speichern Sie diese unter dem Namen Treppe0.tip ​auf Diskette oder Festplatte.+**Aufgabe**: ​Erstellen Sie eine Teachin-Sequenz für die Anfangsaufgabe und speichern Sie diese unter dem Namen Treppe0.tip.
  
-==== Programmsteuerung ====+===== Programmsteuerung ​=====
  
 Das Aufzeichnen von Arbeitssequenzen ist schon ein bedeutender Schritt zur Automatisierung. Allerdings kann NIKI hierbei noch nicht auf Veränderungen seiner Umgebung reagieren. Ein verändertes Arbeitsfeld,​ z.B. ein fehlender Gegenstand wird einen Fehler auslösen. Das Aufzeichnen von Arbeitssequenzen ist schon ein bedeutender Schritt zur Automatisierung. Allerdings kann NIKI hierbei noch nicht auf Veränderungen seiner Umgebung reagieren. Ein verändertes Arbeitsfeld,​ z.B. ein fehlender Gegenstand wird einen Fehler auslösen.
Zeile 91: Zeile 75:
 Aufgabe: Vervollständigen Sie das Programm mit den fehlenden Anweisungen. Aufgabe: Vervollständigen Sie das Programm mit den fehlenden Anweisungen.
  
-==== Prozeduren ====+===== Prozeduren ​=====
  
 Wenn man die Aufgabeid_ein als Programmsequenz eingibt, hat man relativ viel Schreibarbeit. Beim Programmtext fällt auf, daß häufig gleiche Programmsequenzen auftauchen. So muß sich NIKI, um sich einmal nach rechts zu drehen, dreimal nach links drehen. Wenn man die Aufgabeid_ein als Programmsequenz eingibt, hat man relativ viel Schreibarbeit. Beim Programmtext fällt auf, daß häufig gleiche Programmsequenzen auftauchen. So muß sich NIKI, um sich einmal nach rechts zu drehen, dreimal nach links drehen.
Zeile 99: Zeile 83:
 Das Formulieren neuer Befehle geschieht mit Hilfe von Prozeduren. In einer Prozedur werden NIKI-Befehle zu einer neuen Anweisung zusammengefaßt. Das Formulieren neuer Befehle geschieht mit Hilfe von Prozeduren. In einer Prozedur werden NIKI-Befehle zu einer neuen Anweisung zusammengefaßt.
  
-Beispiel für eine Prozedur;+Beispiel für eine Prozedur:
  
 <code pascal> <code pascal>
Zeile 123: Zeile 107:
   drehe_links   drehe_links
 End; End;
 +
 Begin Begin
   vor;​vor;​vor;​   vor;​vor;​vor;​
Zeile 132: Zeile 117:
 </​code>​ </​code>​
  
-==== Entscheidungen ====+===== Entscheidungen ​=====
  
 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 ​(2392 Byte)+{{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,​ ob er einen Gegenstand aufnehmen muß. Dies geschieht mit der Anweisung 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,​ ob er einen Gegenstand aufnehmen muß. Dies geschieht mit der Anweisung
Zeile 145: Zeile 130:
 **Aufgabe**:​ Verändern Sie das Programm für die oben gestellte Grundufgabe so, daß sich der Gegenstand an einer beliebigen Stelle auf der Treppe befinden kann. **Aufgabe**:​ Verändern Sie das Programm für die oben gestellte Grundufgabe so, daß sich der Gegenstand an einer beliebigen Stelle auf der Treppe befinden kann.
  
-==== Schleifen ====+===== Schleifen ​=====
  
 Das Arbeitsfeld wird jetzt so verändert, daß NIKI die Lage der Treppe und des Podestes nicht kennt. Treppe und Podest stehen hintereinander,​ aber weder der Abstand zur Treppe noch der Abstand zwischen Treppe und Podest sind bekannt. Das Arbeitsfeld wird jetzt so verändert, daß NIKI die Lage der Treppe und des Podestes nicht kennt. Treppe und Podest stehen hintereinander,​ aber weder der Abstand zur Treppe noch der Abstand zwischen Treppe und Podest sind bekannt.
  
-treppe1.gif ​(2435 Byte)+{{niki:treppe1.gif}}
  
 NIKI verfügt allerdings über einen Sensorid_Sensoren,​ mit dem er Hindernisse wahrnehmen kann. Dieser Sensor heißt vorne_frei. NIKI verfügt allerdings über einen Sensorid_Sensoren,​ mit dem er Hindernisse wahrnehmen kann. Dieser Sensor heißt vorne_frei.
Zeile 159: Zeile 144:
 Eine solche Anweisung heißt Wiederholungsanweisung oder Schleife. Eine solche Anweisung heißt Wiederholungsanweisung oder Schleife.
  
-Aufgabe: Veränderen Sie das Programm für die oben gestellte Aufgabe so, daß sich Treppe und Podest an einer beliebigen Stelle befinden können.+**Aufgabe**: Veränderen Sie das Programm für die oben gestellte Aufgabe so, daß sich Treppe und Podest an einer beliebigen Stelle befinden können.
  
-==== Rekursion ====+===== Rekursion ​=====
  
 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 ​(869 Byte)+{{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 185: Zeile 170:
 End; End;
 </​code>​ </​code>​
 +
 +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 193: Zeile 181:
   drehe_links   drehe_links
 End; End;
 +
 Procedure Zum_Hindernis_und_zurueck;​ Procedure Zum_Hindernis_und_zurueck;​
 Begin Begin
Zeile 205: Zeile 194:
     End;     End;
 End; End;
 +
 Begin Begin
   Zum_Hindernis_und_zurueck   Zum_Hindernis_und_zurueck
Zeile 210: Zeile 200:
 </​code> ​ </​code> ​
  
-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**: ​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:​
  
 <​code>​ <​code>​
Zeile 219: Zeile 209:
 gehe eine Stufe runter gehe eine Stufe runter
 </​code>​ </​code>​
-Aufgabe: Erweitern Sie die Grundaufgabe entsprechend,​ so daß NIKI über eine beliebig hohe Treppe gehen kann.+**Aufgabe**: Erweitern Sie die Grundaufgabe entsprechend,​ so daß NIKI über eine beliebig hohe Treppe gehen kann.
  
    
 +<​html><​div style="​background-color:#​eee;​padding:​3px;​text-align:​center;"></​html>​ 
 +[ [[niki:​home|Home]] ] [ [[niki:​menu|Das Niki - Menü]] ] [ [[niki:​programmiersprache|Die Programmiersprache]] ] [ [[niki:​syntax|Syntax]] ] [ [[niki:​aufgaben|Aufgaben]] ] [ **[[niki:​beispiele|NIKI-Beispiele]]** ] 
 +<​html></​div></​html>​