Karel der Roboter

Wir gehen  einen Schritt  weiter nach vorn und werden mit der Programmierung beginnen...

Als Erstes , was bedeutet dieses? Programmierung in Karel Sprache bedeutet eine oder mehrere Prozeduren zu schreiben. Prozedur ist eine Sequenz von Befehlen, etwas  Sinnvolles zu tun. Ein Befehl ist entweder eine einfache Anweisung für Karel (Sie kennen sie bereits aus Lektion 2), so genannte Kontrollstruktur (Schleifen und bedingte Anweisungen) oder eine Ausführung einer anderen Prozedur. 

Die übliche Vorgehensweise bei der Programmierung (und nicht nur für Karel) ist, komplexe Probleme auf eine Reihe von mehreren einfachen Problemen zu unterteilen. Dann wird jedes Problem von ihnen noch einfacher und so weiter, bis die Teilprobleme so einfach sind, dass man sie durch einfache Prozeduren mit einigen Anweisungen lösen kann. Dies wird normalerweise als eine Analyse bezeichnet. Dann können Sie eine Prozedur erstellen, welche komplexere Probleme löst. Wiederholen Sie diesen Vorgang, bis Sie das gesamte komplexe Problem gelöst haben. Dies wird normalerweise als Entwicklung bezeichnet. Nach der Entwicklung folgt das Testen und für die Programmierer der  schmerzhafteste Teil: Dokumentation schreiben über das, was sie getan haben.

Lassen Sie es uns anhand eines einfachen Beispiels darstellen: Karel steht in der Mitte der Welt. Die Welt ist leer. Die Aufgabe ist, eine Mauer so hoch wie möglich  um die Welt herum zu bauen. Auf den ersten Blick kann es wie ein komplexes Problem aussehen, so dass wir als erstes mit einer Analyse zu tun haben. Wir wollen nicht mit dem Bau der Mauer in der Mitte der Welt und auch nicht von der Mitte des Randes anfangen, sondern wir müssen in einer Ecke beginnen. Dann können wir jetzt mit dem Bau anfangen. Wir müssen aber uns entscheiden, ob wir sie nebeneinder und jede Seite für sich Schicht für Schicht oder Schicht für Schicht ringsherum und jede Ebene nebeneinder bauen wollen. Warten Sie , aber wir haben in der früheren Lektion gelernt, dass Karel nach oben oder unten nicht mehr als eine Ebene einen Schritt machen kann. Deshalb müssen wir Schicht für Schicht bauen. Wir haben festgestellt, dass wir einige einfache Probleme haben:

1. wir müssen an den Rand der Welt kommen

2. wir müssen in die Ecke der Welt kommen

3. wir müssen die Mauer bauen

4. wir müssen Schicht für Schicht bauen

5. wir müssen jede Ebene nebeneinander bauen.                                                                                                            

Wir können beginnen eine Prozedur zu schreiben, um die Probleme zu lösen.

Die erste Prozedur nennen wir  GehenSieZumRand: Bewegung wiederholen, bis Karel den Rand der Welt erreicht. Wir wissen bereits aus der vorherigen Lektion was bedeutet, sich zu bewegen. Aber bisher noch nicht, wie man es wiederholt? Es ist eine Konstruktion von Programmiersprachen, die man Schleife nennt. In Karel gibt es zwei Arten von Schleifen: Die erste kann verwendet werden, um eine gewisse Anzahl von Zeiten zu wiederholen (wir werden sie später verwenden und nennen sie  wiederkehrende Schleife). Die zweite kann verwendet werden,  um etwas zu wiederholen, während eine bestimmte Bedingung erfüllt wird (wir nennen sie während Schleife).

Und was ist die Bedingung? Es gibt einige vordefinierte Bedingungen in Karel, von denen jede eine positive und negative Version hat. Z.B. KannBewegen (es ist wahr, wenn Karel sich zum nächsten Feld bewegt und ansonsten ist es falsch) und KannNichtBewegen (es ist wahr, wenn Karel sich  nicht zum nächsten Feld bewegt oder ansonsten falsch). Es gibt auch IstBaustein (es ist wahr, wenn Karel auf dem Feld mit einem oder mehreren Bausteinen steht) oder IstPieper (es ist wahr, wenn Karel auf dem Feld mit Piepser steht) oder Nordblick (es ist wahr, wenn Karels Blick nach Norden ist, der oben rechts von der Welt ist). Sie haben jetzt auf jeden Fall verstanden, was Ostblick, Südblick und Westblick oder KeinBaustein, KeinPieper, KeinNordblick, KeinOstblick, KeinSüdblick oder KeinWestblick bedeuten.

Also, was wir auf Ihrem iPad schreiben wollen, ist eine Prozedur in Karels Programmiersprache wie diese:

Prozedur GehenSieZumRand

  Während KannBewegen

    Bewegen

  EndeWährend

EndeProzedur

Zuerst erstellen Sie die Prozedur-tippen Sie auf die Bearbeiten-Taste auf dem Bedienfeld „Bibliothek“, dann tippen Sie auf  +Zeichen, tippen Sie auf Bearbeiten-Taste auf dem Bedienfeld „Prozedur“. Benennen Sie die Prozedur von "Neu Prozedur" auf "GehenSieZumRand" um. Klicken Sie wieder auf +Zeichen und wählen Sie den Befehl Während. Wählen Sie Bedingung KannBewegen. So haben wir den ersten Karel-Befehl eingegeben, in diesem Fall leere während Schleife. 

Jetzt müssen wir einen Körper dieser Schleife hinzufügen, in diesem Fall den Befehl Bewegen. Klicken Sie auf grün + Zeichen links von dem EndeWährend Befehl,  wählen Sie den Befehl Bewegen. So wir sind zurück in der Prozedur Körper und es ist abgeschlossen. Klicken Sie auf Fertig. Wenn Sie keine Fehler gemacht haben, sollte es so aussehen:

Es ist Zeit jetzt zu versuchen, ob die Prozedur das macht, was sie tun soll. Löschen Sie die Welt, indem Sie auf das Papierkorb-Symbol in dem rechten Fenster und dann auf den Ausführen-Button unten in der Prozedur Fenster klicken. Karel sollte nun ein paar Schritte machen und am Rand der Welt enden.

Jetzt müssen wir die nächste Prozedur schreiben, um Karel in die Ecke zu bewegen. Was bedeutet das? Er sollte links drehen, warten, einen Schritt machen, den Schritt wiederholen, solange bis er wieder den Rand der Welt erreicht hat. Es klingt als wenn wir die Prozedur Gehen Sie zum Rand  wieder verwenden, nicht wahr? Also schreiben wir es:

Prozedur GehenSieZurEcke

  Ausführen GehenSieZumRand

  RechtsHerum

  Ausführen GehenSieZumRand  

EndeProzedur

Wie wir es in Ihrem iPad aufnehmen? Klicken Sie auf die Bibliothek-Taste um zum Bibliothek-Bildschirm zurückzukehren.  Klicken Sie auf + Zeichen um eine andrere Prozedur zu erstellen. Klicken Sie auf Bearbeiten, nennen Sie es „Prozedur GehenSiezurEcke“. Klicken Sie auf +Zeichen, wählen Sie den Befehl Ausführen. Wählen Sie die Prozedur GehenSieZumRand. Klicken Sie wieder auf +Zeichen, wählen Sie den Befehl Links herum. Klicken Sie wieder auf + Zeichen. Wählen Sie den Befehl Ausführen, dann wählen Sie die Prozedur GehenSieZumRand. Klicken Sie auf Fertig und das war es.

Wir haben eine komplexe Prozedur versucht. Löschen Sie die Welt wieder und führen Sie die Prozedur aus. Wenn Sie keinen Fehler gemacht haben, ist Karel  in der unteren Ecke der Welt. Wir sind bereit mit dem Bau der Mauer anzufangen.

Wir werden es durch das Schreiben von zwei Prozeduren tun. In der ersten Prozedur werden wir die erste Schicht der Mauer einer Seite bauen.  In der zweiten Prozedur werden wir die Erste 4 Mal wiederholen, bis auch die Schicht der zweiten, dritten und vierten Seite, also ringsherum um Karels Welt gebaut ist.

Prozedur SeiteBauen

  RechtsHerum

  Während KannBewegen

    Bewegen

    BausteinSetzen

  EndeWährend

EndeProzedur

Prozedur SchichtBauen

  Wiederholen 4x

    Ausführen SeiteBauen

  EndeWiederholen

EndeProzedur

Wie Sie sehen, haben wir eine neue Konstruktion in den letzten zwei Prozeduren verwendet: Repeat-Schleifen mit der Anzahl der Iteration anstatt der Bedingung. Jetzt ist es Zeit, die Stücke zusammen zu setzen und die letzte Prozedur – die Hauptprozedur - dieses Programmes zu schreiben:

Procedure MauerBauen

  Ausführen GehenSieZurEcke

  Wiederholen 9x

    Ausführen SchichtBauen

  EndeWiederholen

EndeProzedur

Setzen Sie nun alle Prozeduren in Ihr iPad und führen Sie die letzte Prozedur aus. Mal sehen, was passieren wird... Wenn Sie keinen Fehler gemacht haben, sollten Sie wie abgebildet beenden:

Nun, so sieht es aus, wenn sie alles richtig gemacht haben. Aber was im Fall, wenn Sie nicht alles richtig gemacht haben oder wenn Sie einfach etwas ändern möchten? Zum Glück können Sie es leicht korrigieren. Öffnen Sie einfach den Vorgang mit dem Fehler und tippen Sie auf die Bearbeiten -Taste. Sie können etwas hinzufügen, entfernen oder die Anweisungen korrigieren  so wie Sie  es benötigen. Wenn Sie den Bearbeitungsmodus verlassen möchten, klicken Sie auf Fertig-Taste. Sie können  auch die Anweisungen  selbst ändern: Klicken Sie auf > Zeichen rechts  vom Befehl, den Sie ändern möchten. Es öffnet sich nun die Liste der Befehle und Sie können einen anderen Befehl wählen. 

Um es zu versuchen, ändern wir das obige Beispiel ein wenig. Karel sollte die Mauer nur im Fall bauen, wenn in der Ecke kein Piepser ist.

Öffnen Sie die Prozedur MaueBauen, tippen Sie auf Bearbeiten, tippen  Sie auf + Zeichen, wählen Sie denn Befehl Wenn und  wählen Sie die Option  KeineMarke. Ziehen Sie nun die zweite Zeile (Wiederholen 9x) durch den Handgriff auf der rechten Seite (drei Linien) zwischen Wenn-KeineMarke und EndeIf-Befehle.

Und das war es. Wir haben das Programm geändert. Jetzt wird Karel zu einer Ecke gehen. Aber machen Sie in diesem Fall mit dem Bau der Mauer nur weiter, wenn keine Piepser in der Ecke sind.

Leicht ist es nicht.  Es ist die Zeit gekommen, es mit Ihren Freunden zu teilen. Fahren Sie nun mit der Lektion 4 fort....