# Programmreferenz für &turtlescript;

Dies ist die Referenz der in &kturtle; verwendeten Sprache &turtlescript;. Im ersten Abschnitt dieses Kapitels werden einige Grundzüge der grammatischen Regeln des Sprache &turtlescript; vorgestellt. Der zweite Abschnitt behandelt ausschließlich mathematische Operatoren, boolesche Operatoren (wahr/falsch) und Vergleichs-Operators.Im dritten Abschnitt finden Sie eine große Liste aller Befehle, die einzeln erklärt werden. Abschnitt vier behandelt die Zuweisung von Werten and Variablen. Zum Schluss wird im Abschnitt fünf die Steuerung des Programms mit Kontrollanweisungen und dann im Abschnitt sechs erläutert, wie eigene Befehle oder Funktionen mit lerne erzeugt werden.

## Die grammatischen Regeln der Sprache &turtlescript;

Wie in jeder Sprache gibt es in &turtlescript; verschiedene Arten von Wörtern und Symbolen. Englisch zum Beispiel unterscheidet zwischen Verben wie gehen oder singen und Substantiven wie Schwester oder Haus. Diese verschiedene Arten von Wörtern und Symbolen werden für verschiedene Zwecke benutzt. &turtlescript; ist eine Programmiersprache, die dazu benutzt wird, &kturtle; Anweisungen zu geben.

In diesem Abschnitt werden einige der verschiedenen Arten von Wörtern und Symbolen in &turtlescript; kurz erklärt. In &turtlescript; gibt es Kommentare, Befehle und die drei verschiedenen Arten von echten Werten: Zahlen, Zeichenketten und boolesche Werte (wahr/falsch).

### Kommentare

Ein Programm besteht aus Befehlen, die beim Ablauf ausgeführt werden, und sogenannten Kommentaren. Kommentare werden nicht ausgeführt, &kturtle; ignoriert sie beim Starten des Programms. Kommentare werden benutzt, damit andere Programmierer den Quelltext besser verstehen. Jeder Text nach einem `#`-Zeichen wird in &turtlescript; als Kommentar betrachtet. Dieses kleine Programm zum Beispiel tut nichts:

    # dieses kleine Programm tut nichts, das ist nur ein Kommentar

Das Programm ist natürlich nutzlos, erklärt aber gut die Wirkung von Kommentaren.

Kommentare sind sehr hilfreich, wenn das Programm komplizierter und umfangreicher wird. Außerdem erleichtern sie anderen Programmierern, den Quelltext zu verstehen. Im folgenden Programm werden Kommentare zusammen mit dem Befehl drucke verwendet:

    # Cies Breijs hat dieses Programm geschrieben.
    drucke "dieser Text wird auf der Zeichenfläche ausgedruckt"
    # die vorige Zeile ist kein Kommentar, aber die Folgende:
    # drucke "dieser Text wird nicht ausgedruckt"

Die erste Zeile beschreibt das Programm. Die zweite Zeile wird von &kturtle; ausgeführt, es wird `dieser Text wird auf der Zeichenfläche ausgedruckt` geschrieben. Die dritte Zeile ist ein Kommentar. In der vierten Zeile steht ein Kommentar, der einen Quelltext in &turtlescript; enthält. Wird das Symbol `#` in der vierten Zeile entfernt, wird der Druckbefehl von &kturtle; ausgeführt. Programmierer bezeichnen das als auskommentieren.

Kommentarzeilen werden im Quelltexteditor hellgrau hervorgehoben.

### Befehle

Mit Befehlen geben Sie der Schildkröte oder &kturtle; Anweisungen, was sie tun soll. Einige Befehle brauchen eine Eingabe, andere geben einen Wert zurück.

    # der Befehl vorwärts braucht eine Eingabe, in diesem Fall die Zahl 100:
    vorwärts 100

Die erste Zeile ist ein Kommentar. Die zweite Zeile enthält den Befehl `vorwärts` und die Zahl `100`. Die Zahl ist nicht Bestandteil des Befehls, sie ist die „Eingabe“ für den Befehl. Einige Befehle wie &eg; `gehe` brauchen mehr als einen Eingabewert. Mehrere Werte müssen durch Komma (`,`) getrennt werden.

Einige Befehle wie &eg; `gehe` brauchen mehr als einen Eingabewert. Mehrere Werte müssen durch Komma (`,`) getrennt werden.

Eine ausführliche Übersicht aller von &kturtle; unterstützten Befehle finden Sie hier. Die eingebauten Befehle werden dunkelblau hervorgehoben.

### Zahlen

Wahrscheinlich wissen Sie schon ziemlich viel über Zahlen. In &kturtle; werden Zahlen etwa so wie in der Sprache oder in der Mathematik verwendet.

Es gibt die so genannten natürlichen Zahlen: `0`, `1`, `2`, `3`, `4`, `5` &etc; Die negativen Zahlen: `-1`, `-2`, `-3` &etc; Und die Zahlen mit Dezimalstellen oder reelle Zahlen, zum Beispiel: `0.1`, `3.14`, `33.3333`, `-5.05`, `-1.0`. Der Punkt (`.`) wird als Dezimaltrennzeichen benutzt.

Zahlen können in mathematischen Berechnungen und Vergleichen benutzt werden. Sie können auch in Variablen gespeichert werden. Zahlen werden in dunklem Rot hervorgehoben.

### Zeichenketten

Zuerst ein Beispiel:

    drucke "Hallo, ich bin eine Zeichenkette."

In diesem Beispiel ist `drucke` ein Befehl und `"Hallo, ich bin eine Zeichenkette."` eine Zeichenkette. Zeichenketten haben am Anfang und am Ende das Zeichen `"`, daran erkennt sie &kturtle;.

Zeichenketten können in Variablen abgelegt werden, genauso wie Zahlen. Im Gegensatz zu Zahlen können Zeichenketten nicht in mathematischen Berechnungen und Vergleichen benutzt werden. Zeichenketten werden in Rot hervorgehoben.

### Boolesche Werte (wahr/falsch)

Es gibt nur zwei Boolesche Werte: `wahr` und `falsch`. Diese Werte werden auch Ein und Aus, Ja und Nein oder Eins und Null genannt. Aber in &turtlescript; heißen Sie immer `wahr` und `falsch`. Betrachten Sie diesen Quelltext in &turtlescript;:

    $a = wahr

Im Kontrollfenster können Sie sehen, dass die Variable `$a` den Wert `wahr` hat und ein Boolescher Wert ist.

Boolesche Werte sind häufig das Ergebnis eines Vergleichs, wie der folgende Quelltext in &turtlescript; zeigt:

    $antwort = 10 > 3

Die Variable `$antwort` erhält den Wert `wahr`, weil `10` größer als `3` ist.

Boolesche Werte, `wahr` und `falsch`, werden dunkelrot hervorgehoben.

## Mathematische, Boolesche und Vergleichs-Operatoren

Der Titel dieses Abschnitts mag sehr kompliziert klingen, aber das täuscht.

### Mathematische Operatoren

Dies sind alle grundlegenden mathematischen Symbole: addieren (`+`), subtrahieren (`-`), multiplizieren (`*`), dividieren (`/`) und die Potenz (`^`).

Ein kleines Beispiel der mathematischen Operatoren, die Sie in &turtlescript; verwenden können:

    $plus     = 1 + 1
    $minus    = 20 - 5
    $multipiziert = 15 * 2
    $geteilt   = 30 / 30
    $potenz    = 2 ^ 2

Die Werte, die sich aus diesen mathematischen Operationen ergeben, werden den verschiedenen Variablen zugewiesen. Im Kontrollfenster werden die Variablen und ihre Werte angezeigt.

Für eine einfache Berechnung geben Sie zum Beispiel folgendes ein:

    drucke 2010-12

Nun ein Beispiel mit Klammern:

    drucke ( ( 20 - 5 ) * 2 / 30 ) + 1

Der Ausdruck in Klammern wird zuerst berechnet. In diesen Beispiel wird also 20-5 berechnet, dann mit 2 multipliziert, durch 30 dividiert und dann 1 addiert (das ergibt 2). Klammern können auch in anderen Fällen benutzt werden.

&kturtle; hat noch erweiterte mathematische Funtionen in der Form von Befehlen. Schauen Sie sich die folgenden Befehle an, dabei handelt es sich um fortgeschrittene mathematische Operationen: rund, zufall, wurzel , pi, sin, cos, tan, arcsin, arccos, arctan.

### Boolesche Operatoren (wahr/falsch)

Während mathematische Operatoren Zahlen verarbeiten, behandeln boolesche Operatoren die boolesche Werte `wahr` und `falsch`. Es gibt nur drei boolesche Operatoren, nämlich: `und`, `oder`, und `nicht`. Im folgenden Quelltext von &turtlescript; wird gezeigt, wie sie verwendet werden:

    $und_1_1 = wahr und falsch    # -> wahr
    $und_1_0 = wahr und falsch   # -> false
    $und_0_1 = falsch und wahr   # -> false
    $und_0_0 = falsch und falsch  # -> false

    $oder_1_1 = wahr oder wahr    # -> wahr
    $oder_1_0 = wahr oder falsch   # -> wahr
    $oder_0_1 = falsch oder wahr   # -> wahr
    $oder_0_0 = falsch oder falsch  # -> falsch

    $nicht_1 = nicht wahr   # -> falsch
    $nicht_0 = nicht falsch  # -> wahr

Im Kontrollfenster werden die Ergebnisse dargestellt, sie sind aber auch als Kommentar am Ende der Zeilen angefügt. `und` ergibt nur `wahr`, wenn beide Seiten `wahr` sind. `oder` ergibt `wahr`, wenn mindestens eine der beiden Seiten `true` ist. Und `nicht` ändert ein `wahr` in `falsch` und ein `falsch` in `wahr`.

Boolesche Operatoren werden pinkfarben hervorgehoben.

#### Einige etwas schwierigere Beispiele

Betrachten sie das folgende Beispiel mit `und`:

    $a = 1
    $b = 5
    wenn (($a < 10) und ($b == 5)) und ($a < $b) {
      drucke "Hallo"
    }

In diesem Quelltext von &turtlescript; wird das Ergebnis von drei Vergleichsoperatoren mit dem Operator `und` miteinander verbunden. Daher müssen alle drei Vergleiche wahr ergeben, damit das Wort "Hallo" gedruckt wird..

Ein Beispiel mit `oder`:

    $n = 1
    wenn ($n < 10) oder ($n == 2) {
      drucke "Hallo"
    }

In diesem Quelltext von &turtlescript; ergibt die linke Seite des `oder` wahr, die rechte Seite falsch. Da eine der beiden Seiten des Operators `oder` wahr ergibt, ist das Ergebnis des Operartors `oder` auch wahr. Damit wird das Wort Hallo gedruckt.

Und schließlich ein Beispiel mit `nicht`, das ‚wahr‘ in ‚falsch‘ und ‚falsch‘ in ‚wahr‘ ändert:

    $n = 1
    wenn nicht ($n == 3) {
      drucke "Hallo"
    } sonst {
      drucke "nicht Hallo ;-)"
    }

### Vergleichs-Operatoren

Betrachten Sie diesen einfachen Vergleich:

    $ergebnis = 10 > 3

Hier wird `10` mit `3` mit Hilfe des Operators größer als verglichen. Das Ergebnis dieses Vergleichs, der Boolesche Wert `wahr`, wird in der Variablen `ergebnis` gespeichert.

Alle Zahlen und Variablen, die Zahlen enthalten, können durch die Vergleichs-Operatoren miteinander verglichen werden.

Hier sind alle möglichen Vergleichs-Operatoren aufgeführt:

#### Art der Frage

`$A == B` | gleich | Ergebnis ist wahr wenn `$A` gleich `$B` ist
`$A != $B` | nicht gleich | Ergebnis ist wahr wenn `$A` ungleich `$B` ist
`$A > $B` | größer als | Ergebnis ist wahr wenn `$A` größer ist als `$B`
`$A < $B` | kleiner als | Ergebnis ist wahr wenn `$A` kleiner ist als `$B`
`$A >= $B` | größer oder gleich | Ergebnis ist wahr wenn `$A` größer oder gleich `$B` ist
`$A <= $B` | kleiner oder gleich | Ergebnis ist wahr wenn `$A` kleiner oder gleich `$B` ist

$A und $B müssen Zahlen oder Variablen sein, die Zahlen enthalten.

## Befehle

Mit Befehlen sagen Sie der Schildkröte oder &kturtle;, was sie tun soll. Einige Befehle brauchen Eingabewerte, andere geben Werte zurück. In diesem Abschnitt werden alle eingebauten Befehle für &kturtle; erklärt. Zusätzlich können mit lerne benutzerdefinierte Befehle erstellt werden. Eingebaute Befehle, die hier vorgestellt werden, sind dunkelblau hervorgehoben.

### Die Schildkröte in Bewegung setzen

Es gibt verschiedene Befehle, um die Schildkröte auf dem Bildschirm zu bewegen.

vorwärts (vw)

      vorwärts X

  `vorwärts` bewegt die Schildkröte um einen Betrag von X Pixeln vorwärts. Wenn der Stift unten ist, zeichnet die Schildkröte eine Linie. `vorwärts` kann als `vw` abgekürzt werden.

rückwärts (rw)

      rückwärts X

  `rückwärts` bewegt die Schildkröte um einen Betrag von X Pixeln zurück. Wenn der Stift unten ist, zeichnet die Schildkröte eine Linie. `rückwärts` kann als `rw` abgekürzt werden.

linksdrehen (ld)

      linksdrehen X

  `linksdrehen` dreht die Schildkröte um einen Betrag von X Grad nach links. `linksdrehen` kann als `ld` abgekürzt werden.

rechtsdrehen (rd)

      rechtsdrehen X

  `rechtsdrehen` dreht die Schildkröte um einen Betrag von X Grad nach rechts. `rechtsdrehen` kann als `rd` abgekürzt werden.

richtung (rtg)

      richtung X

  `richtung` setzt die Bewegungsrichtung der Schildkröte auf X Grad gerechnet von Null, unabhängig von der vorherigen Bewegungsrichtung der Schildkröte. `richtung` kann als `rtg` abgekürzt werden.

holerichtung

      holerichtung

  `holerichtung` gibt die Bewegungsrichtung der Schildkröte in Grad bezogen auf die Richtung senkrecht nach oben, die als Null definiert ist.

mitte

      mitte

  `mitte` bewegt die Schildkröte in die Mitte der Zeichenfläche.

gehe

      gehe X,Y

  `gehe` bewegt die Schildkröte an eine bestimmten Stelle auf der Zeichenfläche. Dieser Ort ist X Pixel vom linken Rand und Y Pixel vom oberen Rand der Zeichenfläche entfernt.

gehex

      gehex X

  Mit dem Befehl `gehex` bewegt sich die Schildkröte auf X Pixel vom linken Rand der Zeichenfläche, bleibt dabei aber auf gleicher Höhe. `gehex` kann als `gx` abgekürzt werden.

gehey

      gehey Y

  Mit dem Befehl `gehey` bewegt sich die Schildkröte auf Y Pixel vom oberen Rand der Zeichenfläche, bleibt dabei aber auf gleicher Entfernung vom linken Rand der Zeichenfläche. `gehey` kann als `gy` abgekürzt werden.

Mit den Befehlen `gehe`, `gehex`, `gehey` und `mitte` zeichne die Schildkröte keine Linie, egal ob der Stift oben oder unten ist.

### Wo ist die Schildkröte?

Es gibt zwei Befehle, die die Position der Schildkröte auf dem Bildschirm zurückgeben.

holex

  `holex` gibt die Anzahl der Pixel vom linken Rand der Zeichenfläche bis zur aktuellen Position der Schildkröte zurück.

holey

  `holey` gibt die Anzahl der Pixel vom oberen Rand der Zeichenfläche bis zur aktuellen Position der Schildkröte zurück.

### Die Schildkröte kann zeichnen

Die Schildkröte kann mit einem Stift Linien zeichnen, wenn sie sich bewegt. Um diesen Stift zu kontrollieren, gibt es einige Befehle, die diesem Abschnitt beschrieben werden.

stifthoch (sh)

      stifthoch

  `stifthoch` hebt den Stift von der Zeichenfläche. Wenn der Zeichenstift hoch ist, zeichnet die Schildkröte bei ihrer Bewegung keine Linie. Siehe auch `stiftrunter`. `stifthoch` kann als `sh` abgekürzt werden.

stiftrunter (sr)

      stiftrunter

  `stiftrunter` drückt den Stift auf die Zeichenfläche. Wenn der Zeichenstift runter ist, zeichnet die Schildkröte eine Linie bei ihrer Bewegung. Siehe auch `stifthoch`. `stiftrunter` kann als `sr` abgekürzt werden.

stiftbreite (sb)

      stiftbreite X

  `stiftbreite` setzt die Stiftbreite (die Linienbreite) auf X Pixel. `stiftbreite` kann als `sb` abgekürzt werden.

stiftfarbe (sf)

      stiftfarbe R,G,B

  `stiftfarbe` setzt die Farbe für den Zeichenstift. `stiftfarbe` braucht eine RGB-Kombination als Eingabewert. `stiftfarbe` kann als `sf` abgekürzt werden.

### Befehle für die Zeichenfläche

Es gibt mehrere Befehle für die Zeichenfläche.

papiergröße (pg)

      papiergröße X,Y

  Mit dem Befehl `papiergröße` stellen Sie die Größe der Zeichenfläche ein. Als Eingabewert sind X und Y erforderlich, dabei ist X die neue Breite in Pixeln und Y die neue Höhe der Zeichenfläche in Pixeln. `papiergröße` kann als `pg` abgekürzt werden.

papierfarbe (pf)

      papierfarbe R,G,B

  `papierfarbe` setzt die Farbe der Zeichenfläche. `papierfarbe` braucht eine RGB-Kombination als Eingabewert. `papierfarbe` kann als `pf` abgekürzt werden.

### Befehle um aufzuräumen

Es gibt zwei Befehle, um die Zeichenfläche nach einem Fehler wieder aufzuräumen.

lösche (lös)

      lösche

  Mit `lösche` entfernen Sie alle Zeichnungen von der Zeichenfläche. Alle anderen Einstellungen bleiben erhalten: Die Position und die Bewegungsrichtung der Schildkröte, ob die Schildkröte sichtbar ist und Farbe und Größe der Zeichenfläche.

zurücksetzen

      zurücksetzen

  `zurücksetzen` räumt gründlicher auf als der Befehl `lösche`. Nach der Ausführung des Befehls `zurücksetzen` sind alle Einstellungen wie beim Start von &kturtle;. Die Schildkröte steht mitten auf einer weißen Zeichenfläche, zeichnet die Linien mit schwarzer Farbe und die Papiergröße beträgt 400 x 400 Pixel.

### Die Schildkröte ist ein Grafiksymbol

Viele Leute wissen nicht was Grafiksymbole sind, hier eine kurze Erklärung: Grafiksymbole sind kleine Bilder, die auf dem Bildschirm bewegt werden können. (Weitere Informationen finden Sie im Glossar unter Grafiksymbol). Die Schildkröte ist so ein Grafiksymbol.

Als nächstes finden Sie eine vollständige Übersicht aller Befehle für das Grafiksymbol.

[Diese Version von &kturtle; erlaubt noch nicht die Verwendung anderer Grafiksymbole als die Schildkröte. In späteren Versionen können Sie die Schildkröte durch selbst entworfene Symbole ersetzen]

zeigebild (zb)

      zeigebild

  `zeigebild` zeigt das Symbol der Schildkröte wieder an, wenn es ausgeblendet war. `zeigebild` kann als `zb` abgekürzt werden.

versteckebild (vb)

      versteckebild

  `versteckebild` schaltet das Symbol der Schildkröte aus, wenn sie nicht in Ihre Zeichnung passt. `versteckebild` kann als `vb` abgekürzt werden.

### Kann die Schildkröte schreiben?

Die Antwort lautet ja. Die Schildkröte kann jeden gewünschten Text schreiben.

drucke

      drucke X

  Mit dem Befehl `drucke` schreibt die Schildkröte Text auf die Zeichenfläche. `drucke` braucht Zahlen und Zeichenketten als Eingabewert. Sie können auch mehrere Zahlen und Zeichenketten mit dem Symbol `+` verbinden, wie das folgende kleine Beispiel zeigt:

      $jahr = 2003
      $autor = "Cies"
      drucke $autor + " startete das KTurtle Projekt " + $jahr + " und arbeitet immer noch gerne daran!"

schriftgröße

      schriftgröße X

  `schriftgröße` setzt die Größe der Schrift, die mit dem Befehl `drucke` benutzt wird. `schriftgröße` braucht nur eine Zahl als Eingabewert. Die Größe der Schrift wird in Pixeln angegeben.

### Mathematische Befehle

Im Folgenden werden die erweiterten mathematischen Befehle in &kturtle; beschrieben.

rund

      rund(x)

  `rund` die angegebene Zahl zur nächsten ganzen Zahl.

      drucke rund(10.8)
      vorwärts 20
      drucke rund(10.3)

  mit diesen Anweisungen druckt die Schildkröte die Zahlen 11 and 10.

zufall (zuf)

      zufall X,Y

  `zufall` ist ein Befehl, der Eingabewerte braucht und einen Wert zurückgibt. Als Eingabe sind zwei Zahlen nötig, die erste (X) bestimmt die Untergrenze, die zweite (Y) die Obergrenze der Ausgabe. Der Rückgabewert ist eine zufällige Zahl größer oder gleich der unteren Grenze und kleiner oder gleich der oberen Grenze. Hier ein kurzes Beispiel:

      wiederhole 500 {
        $x = zufall 1,20
        vorwärts $x
        linksdrehen 10 - $x
      }

  Mit dem Befehl `zufall` können Sie ein wenig Chaos in Ihr Programm einfügen.

mod

      mod X,Y

  Der Befehl `mod` gibt den Rest einer Division der ersten durch die zweite Zahl zurück.

wurzel

      wurzel X

  Der Befehl `wurzel` wird benutzt, um die Quadratwurzel einer Zahl X zu berechnen.

pi

      pi

  Dieser Befehl gibt die Konstante Pi, `3.14159` zurück.

sin
, cos
, tan

      sin X
      cos X
      tan X

  Diese drei Befehle sind die bekannten trigonometrischen Funktionen `sin`, `cos` und `tan`.Das Eingabeargument X dieser Befehle ist eine Zahl.

arcsin
, arccos
, arctan

      arcsin X
      arccos X
      arctan X

  Diese Befehle sind die inversen Funktionen von sin, cos und tan. Das Eingabeargument X dieser Befehle ist eine Zahl.

### Eingaben und Nachrichten mit Dialogen

Ein Dialog ist ein kleines Fenster, das Meldungen anzeigt oder Eingaben ermöglicht. &kturtle; hat zwei Befehle für Dialoge: `nachricht` und `frage`

nachricht

      nachricht X

  Der Befehl `nachricht` braucht eine Zeichenkette als Eingabewert. Es öffnet sich ein Dialog und der Text der Zeichenkette wird angezeigt.

      nachricht "Cies startete KTurtle 2003 und arbeitet immer noch gerne daran!"

frage

      frage X

  `frage` braucht eine Zeichenkette als Eingabewert. Der Text der Zeichenkette wird in einem Dialog angezeigt, genau wie bei nachricht, aber zusätzlich erscheint noch ein Eingabefeld. Nachdem eine Zahl oder eine Zeichenkette in diese Textfeld eingegeben wurde, kann das Ergebnis in einer Variablen gespeichert oder als Argument an einen Befehl übergeben werden. Zum Beispiel

      $ein = frage "In welchem Jahr sind Sie geboren?"
      $aus = 2003-$ein
      drucke "Im Jahr 2003 waren Sie irgendwann " + $aus + " Jahre alt."

  Wenn Sie den Eingabedialog abbrechen oder keine Zeichen eingeben, hat die Variable keinen Inhalt.

## Zuweisung von Variablen

Zuerst werden die Variablen vorgestellt, dann wird die Zuweisung von Werten erklärt.

Variablen sind Wörter oder Zeichenketten, die mit einem $ beginnen, im Editor werden sie purpurfarben hervorgehoben.

Variablen können eine beliebige Zahl, Zeichenkette oder Booleschen Wert (wahr/falsch) enthalten. Mit der Zuweisung `=` erhält eine Variable ihren Inhalt. Sie behält diesen Wert, bis das Programm beendet oder der Variablen ein anderer Wert zugewiesen wird.

Ist Variablen erst einmal ein Wert zugewiesen worden, können Sie wie ihr Inhalt benutzt werden. Als Beispiel dazu der folgende Quelltext in &turtlescript;:

    $x = 10
    $x = $x / 3
    drucke $x

Zuerst wird der Variablen `$x` der Wert `10` zugewiesen. Dann erhält `$x` den vorhandenen Wert geteilt durch `3` — in diesem Fall erhält `$x` den Wert `10 / 3`. Dann wird `$x` ausgegeben. In Zeile zwei und drei wird die Variable `$x` wie iht Inhalt benutzt.

Variablen muss ein Wert zugewiesen werden, ehe sie benutzt werden können. Ein Beispiel:

    drucke $n

Mit diesem Befehl erhalten Sie eine Fehlermeldung.

Betrachten Sie den folgen Quelltext in &turtlescript;:

    $a = 2004
    $b = 25

    # der nächste Befehl druckt "2029"
    drucke $a + $b
    rückwärts 30
    # der nächste Befehl druckt "2004 plus 25 gleich 2029"
    drucke $a + " plus " + $b + " gleich " + ($a + $b)
    rückwärts 30

In den ersten zwei Zeilen wird der Wert der Variablen `$a` auf 2004 und `$b` auf 25 gesetzt. Der Rest des Beispiels besteht aus zwei `drucke` Befehlen mit dem Befehl `rückwärts 30` dazwischen. Der Kommentar vor jedem `drucke` erklärt was ausgegeben wird. Der Befehl `rückwärts 30` ist erforderlich, um jede Ausgabe auf einer neuen Zeile zu schreiben. Dieses Beispiele zeigt, dass Variablen mit allen Operatoren in der gleichen Weise wie ihr Wert benutzt werden können. Außerdem können sie als Eingabe für Befehle dienen.

Ein weiteres Beispiel:

    $name = frage "Wie heißt Du?"
    drucke "Hallo " + $name + ", Viel Spaß beim Programmieren..."

Sie sehen, die Variable `$name` wird genauso wie eine Zeichenkette behandelt.

Wenn Sie mit Variablen arbeiten, ist das Kontrollfenster sehr hilfreich. In diesem Fenster werden alle zur Zeit benutzten Variablen und ihr Wert angezeigt.

## Kontrolle der Programmausführung

Mit den Befehlen zur Kontrollanweisung können Sie — wie der Name schon sagt — den Ablauf der Ausführung kontrollieren.

Befehle zur Kontrollanweisung werden durch eine dunkelgrüne, fettgedruckte Schrift hervorgehoben. Die meistens zusammen mit der Kontrollanweisung verwendeten Klammern werden durch schwarze Schrift hervorgehoben.

### Lass die Schildkröte warten

Wenn Sie schon in &kturtle; programmiert haben, ist Ihnen bestimmt aufgefallen, dass sich die Schildkröte beim Zeichnen sehr schnell bewegt. Dieser Befehl lässt die Schildkröte eine bestimmte Zeit warten.

warte

      warte X

  Mit `warte` wartet die Schildkröte X Sekunden.

      wiederhole 36 {
        vorwärts 5
        rechtsdrehen 10
        warte 0.5
      }

  Dieser Quelltext zeichnet einen Kreis, aber die Schildkröte wartet eine halbe Sekunde nach jedem Schritt. Dies vermittelt den Eindruck einer Schildkröte, die sich langsam bewegt.

### Kontrollanweisung wenn

wenn

      wenn boolescher wert { ... }

  Der Quelltext zwischen den Klammern wird nur dann ausgeführt, `wenn` der boolesche Wert wahr ist.

      $x = 6
      wenn $x > 5 {
        drucke "$x ist größer als fünf!"
      }

  In der ersten Zeilen weisen Sie `$x` den Wert 6 zu. In der zweiten Zeile wird ein Vergleichsoperator benutzt, um den Wert von `$x > 5` zu ermitteln. Da das Ergebnis wahr ist 6 ist größer als 5, lässt Kontrollanweisung `wenn` den Quelltext zwischen den Klammern ausführen.

### Kontrollanweisung sonst

sonst

      wenn boolescher wert { ... } sonst { ... }

  `sonst` kann zusammen mit der Kontrollanweisung `wenn` benutzt werden. Der Quelltext zwischen den Klammern nach `sonst` wird nur dann ausgeführt, wenn der boolesche Wert falsch ergibt:

      zurücksetzen
      $x = 4
      wenn $x > 5 {
        drucke "$x ist größer als fünf!"
      }
      sonst
      {
        drucke "$x ist kleiner als sechs!"
      }

  Der Vergleichsoperator wertet Ausdruck `$x > 5` aus. Da 4 kleiner als 5 ist, ist das Ergebnis falsch. Das führt dazu, dass der Quelltext zwischen den Klammern nach `sonst` ausgeführt wird.

### Die solange-Schleife

solange

      solange boolescher wert { ... }

  Die Kontrollanweisung `solange` ist der Anweisung `wenn` sehr ähnlich. Der Unterschied liegt darin, dass `solange` die Ausführung des Quelltext zwischen den Klammern (in einer Schleife) solange wiederholt, bis der booleschen Wert falsch ergibt:

      $x = 1
      solange $x < 5 {
        vorwärts 10
        warte 1
        $x = $x + 1
      }

  In der ersten Zeile wird `$x` der Wert 1 zugewiesen. In der zweiten Zeile wird `$x < 5` ausgewertet. Da das Ergebnis wahr ist, lässt die Kontrollanweisung `solange` den Quelltext zwischen den Klammern ausführen, bis `$x < 5` falsch ist. In diesem Beispiel wird der Quelltext zwischen den Klammern viermal ausgeführt, da bei jeder Ausführung der fünften Zeile `$x` um 1 vergrößert wird.

### Die wiederhole-Schleife

wiederhole

      wiederhole zahl { ... }

  Die Kontrollanweisung `wiederhole` funktioniert ähnlich wie `solange`, nur dass mit `wiederhole` der Quelltext innerhalb der Klammern mit der angegebenen Anzahl von Wiederholungen ausgeführt wird.

### Die von-Schleife, eine zählende Schleife

von

      von Variable = Zahl bis Zahl { ... }

  Die `von`-Schleife ist eine zählende Schleife, &ie; zählt sie für Sie. Die erste Zahl bestimmt die Variable für den Wert in der ersten Schleife. Nach jedem Durchlauf der Schleife wird die Zahl vergrößert, bis die zweite Zahl erreicht ist.

      von $x = 1 bis 10 {
        drucke $x * 7
        vorwärts 15
      }

  Jedes Mal, wenn der Quelltext zwischen den Klammern ausgeführt wird, vergrößert sich der Wert von `$x` um eins, bis `$x` den Wert 10 erreicht. Der Quelltext zwischen den Klammern druckt den Wert von `$x` multipliziert mit 7. Nach dem Ende dieses Programms sehen Sie das 1x7 auf der Zeichenfläche.

  Als Standard ist die Schrittweite einer Schleife auf 1 eingestellt, für einen anderen Wert benutzen Sie:

      von variable = zahl bis zahl schritt zahl { ... }

### Verlassen einer Schleife

abbrechen

      abbrechen

  Beendet die laufende Schleife sofort. Die Ausführung des Programms wird mit der ersten Anweisung nach der Schleife fortgesetzt.

### Programmausführung abbrechen

ende

      ende

  Beendet die Ausführung des Ihres Programms.

### Zusicherungen zur Laufzeit überprüfen

zusichern

      zusichern boolescher wert { ... }

  Zusicherungen können als Begründung der Fehlerfreiheit des Programms oder einer Eingabe verwendet werden.

      $in = frage "In welchem Jahr sind Sie geboren?"
      # das Jahr muss positiv sein
      zusichern $in
      > 0

## Schreiben Sie Ihre eigenen Befehle mit lerne

`lerne` ist ein besonderer Befehl, weil Sie damit Ihre eigenen Befehle erzeugen können. Ihre eigenen Befehle können einen Eingabewert erfordern und einen Ausgabeert zurückgeben. Dieses Beispiel zeigt, wie Sie einen neuen Befehl schreiben:

    lerne kreis $x {
      wiederhole 36 {
        vorwärts $x
        linksdrehen 10
      }
    }

Der neue Befehl hat den Namen `kreis`. `kreis` braucht einen Eingabewert, eine Zahl als Argument, um die Größe des Kreises festzulegen. `kreis` gibt keinen Ausgabewert zurück. `kreis` kann jetzt wie ein normaler Befehl benutzt werden, wie das folgende Beispiel zeigt:

    lerne kreis $X {
      wiederhole 36 {
        vorwärts $X
        linksdrehen 10
      }
    }

    gehe 200,200
    kreis 20

    gehe 300,200
    kreis 40

Im nächsten Beispiel wird ein Befehl mit Rückgabewert gezeigt.

    lerne fakultät $x {
      $r = 1
      von $i = 1 bis $x {
        $r = $r * $i
      }
      zurück $r
    }

    drucke fakultät 5

In diesem Beispiel wird ein neuer Befehl mit dem Namen `fakultät` erstellt. Wenn der Eingabewert des Befehls `5` ist, wird `5*4*3*2*1` zurückgegeben. Mit dem Befehl `zurück` wird der Rückgabewert bestimmt und die Ausführung kehrt wieder zum Aufruf dieses Befehls zurück.

Befehle können auch mehr als zwei Eingaben haben. Im nächsten Beispiel sehen Sie einen Befehl zum Zeichnen eines Rechtecks.

    lerne rechteck $x, $y {
      vorwärts $y
      rechtsdrehen 90
      vorwärts $x
      rechtsdrehen 90
      vorwärts $y
      rechtsdrehen 90
      vorwärts $x
      rechtsdrehen 90
    }

Dann können Sie `rechteck 50, 100` benutzen und die Schildkröte zeichnet ein Rechteck auf die Zeichenfläche.