Abschnittsübersicht


    • Vorstellen

      Mein Name ist Katrin Gerling und ich bin eure Trainerin in diesem Kurs der Webakademie. Ich habe in Magdeburg Ingenieurinformatik studiert und habe anschließend als Softwareentwicklerin gearbeitet. Seit meiner Studienzeit gebe ich Kurse zum Thema Robotik und Programmieren und betreue Teams in der Vorbereitung auf Robotik-Wettbewerbe.

    • Kursdauer

      25.08. - 29.09.2022

    • Fragen & Antworten

      Wenn Du während des Kurses Fragen haben solltest, kannst du mir gern eine Nachricht schicken über die Sprechblase (Mitteilungen). Oder nutze das Forum. Ich werde dir so schnell wie möglich antworten.

    • Es gibt so viele Programmiersprachen auf der Welt und wer Interesse am Programmieren hat, fragt sich sicher mit welcher Programmiersprache fange ich an?

      Viele Programmiersprachen sind textbasiert, welche meistens englische Befehle verwenden. Es gibt aber auch grafische Programmierung mit Programmblöcken.

      Mit dem TurtleCoder möchte ich dir eine Programmierumgebung vorstellen, die das Prinzip des visuellen Programmierens verwendet. 

      Diese Programmierumgebung, TurtleCoder, beruht auf der Programmiersprache LOGO und wir werden einer Schildkröte das Zeichnen beibringen.

      Zum Kursablauf:

      Der Kurs ist aufgeteilt ich 6 Lektionen. Die Lektionen werden jeweils donnerstags veröffentlicht, so dass du immer eine Woche Zeit zur Bearbeitung der Lektion hast.

      Wenn du Fragen hast:

      Deine Fragen kannst du jederzeit im Forum stellen. Ich werde dir schnellstmöglich antworten.


    • Was steckt hinter TurtleCode?

      Mit TurtleCode wird das Programm bezeichnet, das im TurtleCoder erzeugt wird. Der TurtleCoder ist eine Entwicklungsumgebung, die von der Initiative "Code your Life" und Microsoft entwickelt wurde und auf der Programmiersprache LOGO basiert. Es wird das Prinzip des visuellen Programmierens verwendet, wobei du aber die Befehle in englischer Sprache kennenlernst. Eine Vorschlagliste von Befehlen sorgt dabei für die Fehlervermeidung. 

      Der TurtleCoder kann sowohl über den Webbrowser als auch offline als App verwendet werden. Der Vorteil der Offline-App ist, dass alle Programme auf der lokalen Festplatte gespeichert werden. Falls du die App installieren möchtest, findest du hier den Link zum Download.

    • Programmierumgebung - TurtleCoder

      Ich stelle dir anhand der Offline-App den TurtleCoder vor.

      TurtleCoder_Startseite

      In der rechten oberen Ecke befindet sich eine Schaltfläche unter der verschiedene Einstellungen möglich sind. Die wichtigsten kurz erklärt:

      Wenn du die Anwendung startest, bist du bereits mit dem Standard-Login angemeldet. Wenn du den TurtleCoder alleine nutzt, brauchst du dich nicht ausloggen und verwendest den Standardnutzer. Anderenfalls legst du einen anderen Benutzer an, vergibst einen Login-Namen und ein Profilbild. Daraufhin loggst du dich aus und kommst zur Übersicht aller Benutzer und wählst deinen Benutzer aus.

      Im Eingabefeld links wird ein Dateiname bzw. Script Name für die einzelnen Progamme eingegeben. Mit einen Dateinamen, der ausdrückt, was in dem Programm passiert, können verschiedene Programme leichter von einander unterschieden werden. Mit dem Plus daneben wird das Programm angelegt und geöffnet.

      Die Liste darunter zeigt dir eine Auswahl von Programmbeispielen, die du ausprobieren kannst.

      Die Programmieroberfläche sieht dann wie folgt aus.

      Programmieroberfläche_TurtleCoder

      Die Programmieroberfläche teilte sich in die Menüleiste (oben), den Programmierbereich (links) und den Ausgabebereich (rechts).

      Zu den Schaltflächen in der Menüleiste:

      Menueleiste

      Startseite: zurück zur Startseite, um zum Beispiel ein neues Programm anzulegen oder zwischen Programmen zu wechseln.

      Ausführen: Starten des Programms

      Abbrechen: Stoppen eines laufenden Programms

      Rückgängig: Programmierschritte zurückgehen

      Wiederholen: Falls man zu weit "Rückgängig" geklickt hat, kann man hiermit Programmierschritte vorgehen.

      Modus: Wechsel zwischen dem Programmiermodus blockbasiert oder textbasiert. Um Programmcode zu kopieren, empfehle ich den textbasierten Modus. Dieser lässt sich leicht kopieren bzw. auch dort einfügen.

      Drucken: öffnen des Druckdialogs.

      Einstellungen: 

      • Turtle ein-/ausblenden
      • Sprachausgabe aktivieren/deaktivieren: Beim Ausführen des Programms wird der jeweilige Befehl, den die Turtle ausführt vorgelesen.
      • Assistenz aktivieren/deaktivieren: Jede Schaltfläche wird mit einer Taste der Tastatur verknüpft, so dass ein Befehl per Tastendruck eingefügt werden kann. Dies soll jene unterstützen, die mit der Mausführung Schwierigkeiten haben.
      • Benutzer anlegen
      • Über: Version des TurtleCoders
      • Impressum: Herausgeber und Entwicklerteam
      • Admin Login
      • Logout

      Der Programmierbereich links sieht wie folgt aus:

      blockbasiert textbasiert
      Programmierbereich_blockbasiert Programmierbereich_textbasiert

      Ich empfehle die blockbasierte Darstellung zu verwenden, um Schreibfehler beim Programmieren zu vermeiden. 

      Die textbasierte Darstellung, die durch einen Moduswechsel angezeigt werden kann, nutze ich zum Kopieren/Einfügen des Programmcodes und dadurch kann ich Programme leichter mit anderen Teilen.

      Im Ausgabebereich führt die Schildkröte/Turtle den Programmcode aus, sobald die Schaltfläche Ausführen betätigt wurde. Mit + und - kann noch in den Bereich hinein oder heraus gezoomt werden.

      Ausgabebereich

    • Programmieren

      Das Programm baut sich so auf, dass es eine Hauptfunktion, die function main() gibt, die die auszuführenden Befehle beinhaltet. Zu Beginn ist dort ein grüner Block in dem do nothing steht. Auf deutsch heißt es "nichts tun". Sobald dieser Block angeklickt wird, erscheinen die Programmierblöcke, die eingefügt werden können.

      Programmierbloecke

      Damit die Turtle sich bewegt, muss diese angesprochen werden mit dem Befehl turtle. Dafür wird der Block einfach angeklickt und statt do nothing steht dort turtle-> und es erscheinen weitere Befehle.

      Befehle_turtle

      Diese Auswahl von Befehlen sind direkte Anweisungen betreffend der Turtle. Um nun die Turtle vorwärts laufen zu lassen, muss der Befehl forward ausgewählt werden.

      Befehl_turtle_forward

      Was noch fehlt ist die Anzahl der Schritte, die die Turtle vorwärts laufen soll. Die Schritte werden in Pixel angeben. Das Programm und die Ausgabe sehen dann wie folgt aus:

      Befehl_turtle_forward_100 Ausgabe_turtle_forward_100

      Die Befehle sind zwar alle auf Englisch, aber darunter steht immer eine deutsche Beschreibung.

    • Tipp: Farben

      Die Turtle kann neben der Farbe schwarz noch in 23 weiteren Farben zeichnen.

      Zur Übersicht dient folgendes Farbschema:

      Farbschema

      Der Befehl für blau wäre zum Beispiel:

      turtle->setPenColor(blue) oder turtle->setPenColor(5)

      Beides ist möglich.

    • Ausblick

      In der nächsten Woche lernen wir die for-Schleife kennen.

    • Was ist eine for-Schleife?

      Welchen Nutzen hat eine Schleife?

      Viele Programmiersprachen definieren eine for-Schleife als eine Kontrollstruktur, mit der Programmabläufe gesteuert werden. Die for-Schleife beinhaltet dabei eine Gruppe von Anweisungen (in unserem Fall Befehlsblöcke) mit einer bestimmten Anzahl von Wiederholungen, die ausgeführt werden sollen.

      Schleifen helfen uns Befehle zu gruppieren und das Programm übersichtlicher zu gestalten. In manchen Programmiersprachen wird durch die Kürzung des Programmcodes Speicherplatz eingespart und in den meisten Fällen kann die Maschine die Daten schneller verarbeiten.

    • Im Folgenden siehst du ein Beispielprogramm für ein Quadrat, dass eine Schleife verwendet.


    • Ausblick

      In der nächsten Woche lernen wir Variablen kennen.

    • Was sind Mäander?

      Mäander sind Flussschlingen oder Ornamente mit einem Muster, das sich wiederholt. In der Natur sieht es ähnlich wie im folgenden Bild aus.

      Mäandern-Natur


      Kurvenreiche, verschlungene Muster siehst du in folgendem Bild.

      Mäander-Zeichnung

      Die Turtle soll in dieser Lektion das Mäandern lernen und wir unterstützen sie mit unserem Programm.

    • Einführung von Variablen

      Mit deinem bisher erstellten Mäander kannst du die Anzahl der Schlingen über die for-Schleife variieren. Aber wenn du nun die Länge der Seiten einstellen willst, müsstest du 4 Werte ändern. Damit du effektiver wirst und nur einen Wert einstellen musst, werden wir eine Variable einfügen.

    • Tipp: Geschwindigkeit

      Wenn du größer Bilder von der Turtle zeichnen lässt und nicht so lange warten möchtest bis die Turtle fertig ist, kannst du mit folgendem Befehl zu Beginn deines Programms die Geschwindigkeit einstellen: 

      turtle->setSpeed(1000)

      Als Wert können Zahlen von 5 (langsam) bis 5000 (schnell) eingestellt werden. In diesem Beispiel sind es 1000, aber probiere dich einfach aus.

    • Ausblick

      In der nächsten Lektion werden wir uns weiter mit Variablen beschäftigen und lernen dabei den Zuweisungsoperator kennen.

    • Zuweisungsoperator

      Die Programmierung mit Variablen unterstützt uns bereits sehr gut, so dass das Programm mit nur einer Anpassung leicht geändert werden kann. Der Zuweisungsoperator hilft uns dagegen eine Variable mitten im Programm zu ändern.

      Ein kleines Beispiel:

      Zu Beginn unseres Programms definieren wir eine Seitenlänge einer eckigen Spirale:

      var laenge := 10

      Im Programm soll die Seitenlänge nach jedem Schleifendurchlauf um 10 erhöht werden. Das heißt aus der Variablen laenge soll laenge+10 werden. Damit die Variable für den nächsten Schleifendurchlauf den neuen Wert hat, muss der Variablen diese Addition zugewiesen werden. Im Programmcode heißt es dann laenge := laenge+10

      Du kannst folgendes Programmbeispiel gerne kopieren und im TurtleCoder ausprobieren.

      function main() {
          turtle->setSpeed(2000)
          var laenge := 10
          for(var j < 40) {
              turtle->forward(laenge)
              turtle->leftTurn(85)
              laenge := laenge+10
          }
      }

    • Ausblick

      In der folgenden Lektion werden Unterprogramme erklärt und programmiert.

    • Unterprogramme

      Ebenso wie eine echte Blume können wir auch unsere Turtle-Blume in einzelne Bausteine zerlegen und beliebig neu zusammensetzen. Dazu schreiben wir im TurtleCoder Unterprogramme und können der Turtle sogar neue Worte beibringen. So erweitern wir den Wortschatz der Turtle.

      Unser erstes Ziel wird sein, dass die Turtle ein Blatt zeichnet, wenn wir sagen: Turtle -> myBlatt()

      Zum Erstellen eines Unterprogramms klickt man auf die pink hinterlegte Hauptfunktion „function main()“ und dann auf eines der beiden "+"-Zeichen. Nun bekommt man zwei Optionen angezeigt.

      Wir arbeiten im Folgenden mit der Option Ein neues "Word", da wir der Turtle neue Worte beibringen möchten. Nun kannst du deinen bisher erstellten Code für das einzelne Blatt in myBlatt() reinziehen, dort wo momentan noch do nothing steht. Sobald dies geschehen ist, beherrscht die Turtle ein neues Wort. Um das Blatt von der Turtle zeichnen zu lassen, braucht es in der Hauptfunktion (function main) nur noch den Befehl: Turtle -> myBlatt()

      Hinweis: Die Turtle kann beliebig viele Wörter lernen. Aus diesem Grund solltest du neue Wörter immer mit "my" und einem neuen Wort bilden. Das "my" stellt sicher, dass keine Wörter aus dem originären Wortschatz (also vordefinierte Befehle) der Turtle verwendet werden.

      Hast du der Turtle ein Wort beigebracht, ist es innerhalb deines Programmes verwendbar, indem du das Unterprogramm erstellt hast.

    • Variablen in Unterprogrammen

      Wie dir vielleicht aufgefallen ist, gibt es die Möglichkeit seinem Unterprogramm einen Parameter zu übergeben z.B. myBlatt(Parameter). So können wir unserem Unterprogramm eine Variable übergeben, die in der Hauptfunktion function main() definiert ist.

      Dadurch können wir zum Beispiel die Größe der Blume variieren, indem du eine Variable definierst und im Programm an die entsprechenden Stellen weitergibst.

      Hier ein Beispiel, wie es aussehen könnte.

      Programm_Blume

      Probiere es auch in deinem Blumen-Programm aus.

    • Gern kannst du nun deine verschiedenen Sterne jeweils als ein Unterprogramm anlegen und in der function main aufrufen und so einen Sternenhimmel zaubern.

    • Ausblick

      Die nächste Lektion beschäftigt sich mit dem Thema Bedingungen und das Rechnen mit Rest.

  • Hervorgehoben
    • Modulo - Division mit Rest

      Wir schauen uns die Division mit Rest etwas genauer an und wie wir diese beim Programmieren anwenden.

      Zum besseren Verständnis schauen wir uns folgende Tabelle an:

      Modulo

      Die Spalte Zahl ist die Zahlenreihe von 0 bis 9, diese soll einmal durch 2 und einmal durch 3 dividiert werden. Die Spalte :2 und :3 liefern dabei den Wert nach dem Dividieren. Die darauffolgende Spalte Rest gibt jeweils immer den Rest nach der Division an. Z.B. 3:2=1 Rest 1 oder 3:3 = 1 Rest 0 

      Allgemein wird es in der Programmierwelt als mod(Zahl, Teiler) geschrieben. In unserem Beispiel von eben ist es mod(3, 2) oder mod(3, 3).

      Hinweis: Wenn du dir die Spalten für den Rest ansiehst, fällt auf, dass es für die Division durch 2 zwei verschiedene Werte gibt und bei der Division durch 3 drei verschiedene Werte gibt.

    • Verwendung von mod() und if-else-Bedingung

      Bei der Erstellung deines Programms fallen dir sicher Wiederholungen für das Zeichnen der Striche auf. Der Unterschied ist immer die wechselnde Farbe.

      Also unser Ziel wird es sein eine Schleife zu haben, die 6-mal einen Strich zeichnet, dessen Farbe sich im Wechsel ändert.

      Wenn wir an die Tabelle denken für die Division mit Rest, wurden die Werte für mod(i, 2) farblich hervorgehoben. Diesen Wechsel wollen wir auch für unsere gestrichelte Linie.

      Um mit modulo zu rechnen, benötigen wir eine Variable z.B. myRest := mod(i, 2)

      i ist dabei die Laufvariable deiner for-Schleife. Also füge die die neue Variable innerhalb der for-Schleife ein.

      Im Anschluss daran wollen wir prüfen, ob der Rest 0 oder 1 ist.

      Wenn der Rest 0 ist soll die Farbe pink (21) werden.

      Wenn der Rest 1 ist soll die Farbe blau (7) werden.

      Beim Programmieren können wir solche Bedingungen erstellen, sie werden if-else-Bedingung genannt. Bevor wir diese Bedingung programmieren, benötigen wir noch eine weitere Variable für die Farbe. Diese Variable soll am Anfang unseres Programms erstellt werden. Sie kann z.B. myFarbe heißen und der Wert zu Beginn unseres Programms kann 0 sein. 

      var myFarbe := 0

      Nun wenden wir uns der for-Schleife wieder zu, in der du die Variable myRest stehen hast. Darunter folgt nun die if-Bedingung, in der du prüfst, ob myRest == 0 ist. Wenn die Prüfung den Wert wahr liefert, soll nun die Variable myFarbe := 21 werden. Sonst soll myFarbe := 7 werden.

      Der ProgrammCode könnte zum Beispiel wie folgt aussehen:

      function main() {
          var myFarbe := 0
          for(var i < 6) {
              var myRest := mod(i,2)
              if(myRest == 0) {
                  myFarbe := 21
              }else {
                  myFarbe := 7
              }
              turtle->setPenColor(myFarbe)
          }
      }

      Was fehlt ist noch der Strich, den die Turtle zeichnen soll.

    • In meinem Programm für einen Sternenhimmel arbeite ich mit zufälligen Zahlen. Die Anzahl der Zacken eines Sterns soll zufällig vom Computer gewählt werden. Da man beim Zeichnen meines Sterns aber eine ungerade Anzahl Zacken benötigt, muss ich zwischen ungerade und geraden Zahlen unterscheiden. Dafür verwende ich die Funktion modulo und Teile die Anzahl der Zacken durch 2. So erhalte ich bei einer geraden Anzahl 0 und bei einer ungerade Anzahl eine 1. Die Werte kann ich mit einer Bedingung prüfen und, wenn der Wert 0 ist, soll der Anzahl Zacken eine 1 hinzu addiert werden, sonst passiert nichts.

      function main() {
          turtle->setSpeed(5000)
          for(var j < 10) {
              var Zufall := random(10)
              var Spitzen := Zufall+5
              if(mod(Spitzen,2)==0) {
                  Spitzen :=Spitzen+1
              }
              else {
              }
              var winkelSpitze := 180/Spitzen
              var winkel := 180-winkelSpitze
              turtle->penUp()
              turtle->rightTurn(random(360))
              turtle->forward(random(200))
              turtle->penDown()
              var farbe := random(24)
              var groesse := random(200)
              turtle->setPenColor(farbe)
              for(var i < Spitzen) {
                  turtle->forward(groesse)
                  turtle->rightTurn(winkel)
              }
          }
      }
                                                                                    
    • Abschluss

      Du hast nun die wichtigsten Grundlagen und Funktionen für die Verwendung und Programmierung mit dem TurtleCoder kennengelernt. Denk dir eigene Projekte aus oder Formen, die du zeichnen möchtest.

      Viel Spaß dabei.

      Katrin Gerling