Robot Karol: Schwimmbäder bauen: Unterschied zwischen den Versionen

Aus MINT.lentner.net
Zur Navigation springen Zur Suche springen
 
(44 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
===Version 1===
+
[[Robot Karol | >>> zurück zur Übersicht von Robot Karol]]
 +
 
 +
 
 +
 
 +
===Version 0: Alles per Hand selber machen. Auch das geht!===
 +
[[Datei: karolbad0.png |thumb|links|800px|Einfach nur alle Handgriffe kopieren]]
 +
 
 +
Mit den Knöpfen unter Deinem Grafikfenster kannst Du natürlich per Hand alles bauen. Das kannst Du unter ''"Welt speichern"'' auch '''aufheben''' und durch ''Öffnen Welt'' auch '''jederzeit wieder herholen'''. Das macht man auch, um '''einmalig mal eine Spielwelt''' (z.B. Ein Level für ein Computerspiel) '''zu entwerfen'''.
 +
 
 +
Mit ''Welt direkt festlegen'' (vorher in 2D-Modus wechseln!) geht das auch ganz fix.
 +
 
 +
'''Aber Roboter programmiert man aus anderen Gründen:''' Du möchtest Anweisungen so geben, dass Karol selber die Dinge baut - und zwar so baut, wie Du willst.
 +
 
 +
Stell' Dir vor, der Roboter Karol ist Dein Lehrjunge und '''Du lernst ihm, das Schwimmbad zu bauen'''.
 +
 
 +
 
 +
<br style="clear:left; ">
 +
 
 +
===Version 1: Gib Karol Deine Anweisungen im Anweisungsfenster links===
 +
 
 
[[Datei: karolbad1.png |thumb|links|250px|Einfach nur alle Handgriffe kopieren]]
 
[[Datei: karolbad1.png |thumb|links|250px|Einfach nur alle Handgriffe kopieren]]
Erklärung
+
 
 +
Im Programmierfenster links kannst Du Karol Anweisungen geben. Bist Du schnell im Schreiben, dann kannst Du einfach '''Schritt''' schreiben, '''LinksDrehen''', u.s.w. und ein Knopfdruck auf den ''Playbutton'' startet Karol. Karol baut jetzt für Dich nach Deinen Anweisungen. Du kannst auch mit der ''rechten Maustaste'' Befehle auswählen und einfügen, ohne sie zu schreiben.
 +
 
 +
Jetzt kannst Du immer wieder ''starten'' und Karol bei der ''selbstständigen Arbeit'' zusehen.
 +
 
 +
Mit den '''Short-Cuts <Strg>+<X>, <Strg>+<C> und <Strg>+<V>''' kannst Du ganze Textblöcke einfach kopieren und sparst Dir viel Schreibarbeit.
 +
 
 +
'''Tipp:''' Probier' mal, den ganzen Textblock des Programms unten nochmal 5x zu kopieren, dann baut Karol ein '''5 Reihen hohes Schwimmbad'''!
 +
 
 +
'''Aber:''' Du sagst ja Deinem Lehrling auch nicht 100x '''"Gehe einen Schritt!"''' (eher sagst Du genervt, ''"Das hab ich Dir doch schon 100x gesagt"''. Sondern Du sagst, '''"Gehe 100 Schritte!"''' Kann man Karol auch sagen, dass er etwas 100x machen soll?
 +
 
 
<br style="clear:left; ">
 
<br style="clear:left; ">
  
Zeile 44: Zeile 73:
 
  Schritt
 
  Schritt
 
  LinksDrehen
 
  LinksDrehen
 +
 
<br style="clear:left; ">
 
<br style="clear:left; ">
===Version 2===
+
 
 +
===Version 2: Mit Wiederholungen alles einfacher, flexibler und übersichtlicher gestalten===
 
[[Datei: karolbad2.png |thumb|links|250px|Mit Wiederholungen alles einfacher, flexibler und übersichtlicher gestalten]]
 
[[Datei: karolbad2.png |thumb|links|250px|Mit Wiederholungen alles einfacher, flexibler und übersichtlicher gestalten]]
 
[[Datei: karolbad3.png |thumb|links|250px|Wie kann ich Karol lernen, dass er sich an die Raumgröße anpasst?]]
 
[[Datei: karolbad3.png |thumb|links|250px|Wie kann ich Karol lernen, dass er sich an die Raumgröße anpasst?]]
Erklärung
+
 
 +
Sieh' Dir mal das Programm unten genau an! Es hat dieselbe Wirkung, wie der ''"irre"'' Befehlstext oben. Ist er nicht 10x einfacher zu verstehen, 10x übersichtlicher? Du kannst offensichtlich auch Befehle hintereinander schreiben statt nur immer untereinander. Dadurch werden auch Sinn-zusammenhängende ''"Codeschnipsel"'' leichter erkennbar.
 +
 
 +
Außerdem musst Du '''nur eine Zahl ändern''', wenn Karol die Strecke nicht 4x sondern vielleicht 10x oder 200x gehen und ziegeln soll.
 +
 
 +
'''Aber:''' Karol geht immer stur 4x nach vorne, Kann also nur 5x5 Schwimmbäder bauen. Wenn man aber vorher nicht weiß, wie groß das Grundstück des Kunden ist, sollte man sagen können: Gehe und ziegle sooft wie nötig - also bis zur gegenüber liegenden Wand ...!!!
 +
 
 
<br style="clear:left; ">
 
<br style="clear:left; ">
 +
 
  wiederhole 4 mal
 
  wiederhole 4 mal
 
   Hinlegen Schritt
 
   Hinlegen Schritt
Zeile 58: Zeile 96:
 
  *wiederhole
 
  *wiederhole
  
===Version 3===
+
<br style="clear:left; ">
 +
 
 +
===Version 3: Wiederholungen an veränderte Bedingungen anpassen + Mit Anweisungen Karol zur Selbstständigkeit erziehen===
 
[[Datei: karolbad4.png |thumb|links|800px|Mit Wiederholungen alles einfacher, flexibler und übersichtlicher gestalten]]
 
[[Datei: karolbad4.png |thumb|links|800px|Mit Wiederholungen alles einfacher, flexibler und übersichtlicher gestalten]]
Erklärung
+
 
 +
Karol kann mit Bedingungen die Umgebung abfragen. Zum Beispiel gibt es die Bedingung '''IstWand'''. Schreibt man diesen Ausdruck im Programmtext, dann schaut Karol, ob vor ihm eine Wand ist. Die Bedingung '''NichtIstWand''' schaut, ob vor ihm '''keine Wand''' - also frei ist.
  
 
<br style="clear:left; ">
 
<br style="clear:left; ">
 +
 +
Die Wiederholung:
 +
 +
solange NichtIstWand tue
 +
    Schritt
 +
*solange
 +
 +
wiederholt dann den Befehl '''Schritt''', solange vor ihm frei ist! - Bingo! :-)
 +
 +
'''Nicht alles immer wieder sagen - Anweisungen definieren:'''<br>
 +
Man sollte Karol nicht immer wieder anschaffen müssen, was es heißt, bis zur Wand zu gehen. Wir lernen ihm '''einmal''', wie das geht, '''bis zur Wand zu gehen''', wir erstellen sozusagen '''einen eigenen neuen Befehl''':
  
 
  Anweisung GeheBisZurWand
 
  Anweisung GeheBisZurWand
Zeile 69: Zeile 121:
 
   *solange
 
   *solange
 
  *Anweisung
 
  *Anweisung
 +
 +
Und schon weiß Karol, was es heißt: '''GeheBisZurWand'''. Ab da kann man den neuen Befehl benutzen und muss '''nicht immer alles 100x sagen'''.
  
 
  Anweisung GeheRundherum
 
  Anweisung GeheRundherum
Zeile 76: Zeile 130:
 
  *Anweisung
 
  *Anweisung
  
 +
Am Ende müssen wir Karol nur noch sagen: GeheRundherum
 +
 +
'''Das komplette Programm lautet dann:'''
 +
 +
Anweisung GeheBisZurWand
 +
  solange NichtIstWand tue
 +
    Schritt
 +
  *solange
 +
*Anweisung<br>
 +
Anweisung GeheRundherum
 +
  wiederhole 4 mal
 +
    GeheBisZurWand LinksDrehen
 +
  *wiederhole
 +
*Anweisung<br>
 
  GeheRundherum
 
  GeheRundherum
  
===Version 4===
+
'''Aber:''' Karol baut ja noch nix ...
[[Datei: karolbad5.png |thumb|links|250px|Mit Anweisungen Karol zur Selbstständigkeit erziehen]]
+
 
Erklärung
+
'''Aber:''' Karol muss ja nur noch einen Stein ablegen, bevor er in der Anweisung GehBisZurWand weitergeht ...
 +
 
 
<br style="clear:left; ">
 
<br style="clear:left; ">
 +
 +
===Version 4: Ein beliebig hohes Schwimmbad in einem beliebig großen Raum bauen (lassen)...===
 +
[[Datei: karolbad5.png |thumb|links|250px|Bingo]]
 +
 +
 +
 +
<br style="clear:left; ">
 +
 
  Anweisung ZiegleBisZurWand
 
  Anweisung ZiegleBisZurWand
 
   solange NichtIstWand tue
 
   solange NichtIstWand tue
 
       Hinlegen Schritt
 
       Hinlegen Schritt
 
   *solange
 
   *solange
  *Anweisung
+
  *Anweisung<br>
 
 
 
  Anweisung ZiegleRundherum
 
  Anweisung ZiegleRundherum
 
   wiederhole 4 mal
 
   wiederhole 4 mal
 
       ZiegleBisZurWand LinksDrehen
 
       ZiegleBisZurWand LinksDrehen
 
   *wiederhole
 
   *wiederhole
  *Anweisung
+
  *Anweisung<br>
 
 
 
  //Hauptprogramm
 
  //Hauptprogramm
 
  wiederhole 5 mal
 
  wiederhole 5 mal
 
     ZiegleRundherum
 
     ZiegleRundherum
 
  *wiederhole
 
  *wiederhole

Aktuelle Version vom 3. Mai 2021, 07:44 Uhr

>>> zurück zur Übersicht von Robot Karol


Version 0: Alles per Hand selber machen. Auch das geht!

Einfach nur alle Handgriffe kopieren

Mit den Knöpfen unter Deinem Grafikfenster kannst Du natürlich per Hand alles bauen. Das kannst Du unter "Welt speichern" auch aufheben und durch Öffnen Welt auch jederzeit wieder herholen. Das macht man auch, um einmalig mal eine Spielwelt (z.B. Ein Level für ein Computerspiel) zu entwerfen.

Mit Welt direkt festlegen (vorher in 2D-Modus wechseln!) geht das auch ganz fix.

Aber Roboter programmiert man aus anderen Gründen: Du möchtest Anweisungen so geben, dass Karol selber die Dinge baut - und zwar so baut, wie Du willst.

Stell' Dir vor, der Roboter Karol ist Dein Lehrjunge und Du lernst ihm, das Schwimmbad zu bauen.



Version 1: Gib Karol Deine Anweisungen im Anweisungsfenster links

Einfach nur alle Handgriffe kopieren

Im Programmierfenster links kannst Du Karol Anweisungen geben. Bist Du schnell im Schreiben, dann kannst Du einfach Schritt schreiben, LinksDrehen, u.s.w. und ein Knopfdruck auf den Playbutton startet Karol. Karol baut jetzt für Dich nach Deinen Anweisungen. Du kannst auch mit der rechten Maustaste Befehle auswählen und einfügen, ohne sie zu schreiben.

Jetzt kannst Du immer wieder starten und Karol bei der selbstständigen Arbeit zusehen.

Mit den Short-Cuts <Strg>+<X>, <Strg>+<C> und <Strg>+<V> kannst Du ganze Textblöcke einfach kopieren und sparst Dir viel Schreibarbeit.

Tipp: Probier' mal, den ganzen Textblock des Programms unten nochmal 5x zu kopieren, dann baut Karol ein 5 Reihen hohes Schwimmbad!

Aber: Du sagst ja Deinem Lehrling auch nicht 100x "Gehe einen Schritt!" (eher sagst Du genervt, "Das hab ich Dir doch schon 100x gesagt". Sondern Du sagst, "Gehe 100 Schritte!" Kann man Karol auch sagen, dass er etwas 100x machen soll?


//Westseite
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
LinksDrehen
//Südseite
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
LinksDrehen
//Ostseite
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
LinksDrehen
//Nordseite
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
LinksDrehen


Version 2: Mit Wiederholungen alles einfacher, flexibler und übersichtlicher gestalten

Mit Wiederholungen alles einfacher, flexibler und übersichtlicher gestalten
Wie kann ich Karol lernen, dass er sich an die Raumgröße anpasst?

Sieh' Dir mal das Programm unten genau an! Es hat dieselbe Wirkung, wie der "irre" Befehlstext oben. Ist er nicht 10x einfacher zu verstehen, 10x übersichtlicher? Du kannst offensichtlich auch Befehle hintereinander schreiben statt nur immer untereinander. Dadurch werden auch Sinn-zusammenhängende "Codeschnipsel" leichter erkennbar.

Außerdem musst Du nur eine Zahl ändern, wenn Karol die Strecke nicht 4x sondern vielleicht 10x oder 200x gehen und ziegeln soll.

Aber: Karol geht immer stur 4x nach vorne, Kann also nur 5x5 Schwimmbäder bauen. Wenn man aber vorher nicht weiß, wie groß das Grundstück des Kunden ist, sollte man sagen können: Gehe und ziegle sooft wie nötig - also bis zur gegenüber liegenden Wand ...!!!


wiederhole 4 mal
  Hinlegen Schritt
  Hinlegen Schritt
  Hinlegen Schritt
  Hinlegen Schritt
  LinksDrehen
*wiederhole


Version 3: Wiederholungen an veränderte Bedingungen anpassen + Mit Anweisungen Karol zur Selbstständigkeit erziehen

Mit Wiederholungen alles einfacher, flexibler und übersichtlicher gestalten

Karol kann mit Bedingungen die Umgebung abfragen. Zum Beispiel gibt es die Bedingung IstWand. Schreibt man diesen Ausdruck im Programmtext, dann schaut Karol, ob vor ihm eine Wand ist. Die Bedingung NichtIstWand schaut, ob vor ihm keine Wand - also frei ist.


Die Wiederholung:

solange NichtIstWand tue
   Schritt
*solange

wiederholt dann den Befehl Schritt, solange vor ihm frei ist! - Bingo! :-)

Nicht alles immer wieder sagen - Anweisungen definieren:
Man sollte Karol nicht immer wieder anschaffen müssen, was es heißt, bis zur Wand zu gehen. Wir lernen ihm einmal, wie das geht, bis zur Wand zu gehen, wir erstellen sozusagen einen eigenen neuen Befehl:

Anweisung GeheBisZurWand
 solange NichtIstWand tue
    Schritt
 *solange
*Anweisung

Und schon weiß Karol, was es heißt: GeheBisZurWand. Ab da kann man den neuen Befehl benutzen und muss nicht immer alles 100x sagen.

Anweisung GeheRundherum
 wiederhole 4 mal
    GeheBisZurWand LinksDrehen
 *wiederhole
*Anweisung

Am Ende müssen wir Karol nur noch sagen: GeheRundherum

Das komplette Programm lautet dann:

Anweisung GeheBisZurWand
 solange NichtIstWand tue
    Schritt
 *solange
*Anweisung
Anweisung GeheRundherum wiederhole 4 mal GeheBisZurWand LinksDrehen *wiederhole *Anweisung
GeheRundherum

Aber: Karol baut ja noch nix ...

Aber: Karol muss ja nur noch einen Stein ablegen, bevor er in der Anweisung GehBisZurWand weitergeht ...


Version 4: Ein beliebig hohes Schwimmbad in einem beliebig großen Raum bauen (lassen)...

Bingo



Anweisung ZiegleBisZurWand
  solange NichtIstWand tue
     Hinlegen Schritt
  *solange
*Anweisung
Anweisung ZiegleRundherum wiederhole 4 mal ZiegleBisZurWand LinksDrehen *wiederhole *Anweisung
//Hauptprogramm wiederhole 5 mal ZiegleRundherum *wiederhole