Kontrollstrukturen


if

Syntax

IF bedingung anweisungsliste

Beschreibung

Wenn die Bedingung TRUE ist, wird die Anweisungsliste (eine Liste, die beliebige Anweisungen enthält) ausgeführt, wenn sie FALSE ist, passiert nichts. Falls eine der Anweisungen der Liste etwas zurückliefert, wird die Auswertung der Liste hier abgebrochen und IF liefert diesen Wert zurück; ansonsten hat IF keine Rückgabe.

Beispiel

IF 1 + 2 = 3 [PRINT [Das ist wahr.]]
Das ist wahr.

[Kontrollstrukturen] [Inhalt]


ifelse

Syntax

IFELSE bedingung anweisungsliste1 anweisungsliste2

Beschreibung

Wenn die Bedingung TRUE ist, wird die erste Anweisungsliste (eine Liste, die beliebige Anweisungen enthält) ausgeführt, wenn sie FALSE ist, die zweite. Falls eine der Anweisungen der ausgeführten Liste etwas zurückliefert, wird die Auswertung der Liste hier abgebrochen und IFELSE liefert diesen Wert zurück; ansonsten hat IFELSE keine Rückgabe.

Beispiel

IFELSE 1 + 2 = 3 [PRINT [Das ist wahr.]] [PRINT [Das ist falsch.]]
Das ist wahr.
IFELSE 1 + 2 = 4 [PRINT [Das ist wahr.]] [PRINT [Das ist falsch.]]
Das ist falsch.

;Es folgt ein Beispiel, in dem IFELSE etwas zurückliefert:
TO MIN :a :b
 OUTPUT IFELSE :a < :b [:a] [:b]
END

PRINT MIN 2 1
1

[Kontrollstrukturen] [Inhalt]


repeat

Syntax

REPEAT anzahl anweisungsliste

Beschreibung

Führt die Anweisungsliste (eine Liste, die beliebige Anweisungen enthält) anzahl mal aus.

Beispiel

REPEAT 4 [FD 100 RT 90] ;Zeichnet ein Quadrat

[Kontrollstrukturen] [Inhalt]


while

Syntax

WHILE bedingungsliste anweisungsliste

Beschreibung

Die Anweisungen der Bedingungsliste werden ausgeführt, bis eine Anweisung einen Wert zurückliefert; evtl. nachfolgende Anweisungen werden ignoriert. Der zurückgelieferte Wert muss ein Wahrheitswert sein. Im Normalfall besteht die Bedingungsliste nur aus einem einzigen Ausdruck, etwa [:x < 3] wie im folgenden Beispiel.

Die Bedingungsliste wird vor jedem Ausführen der Anweisungsliste ausgewertet - wenn sie anfangs FALSE ergibt, wird die Anweisungsliste gar nicht ausgeführt.

Beispiel

MAKE "x 0
WHILE [:x < 3] [MAKE "x :x + 1 PRINT :x]
1
2
3

[Kontrollstrukturen] [Inhalt]


cond

Syntax

COND klauseln

Beschreibung

Der Parameter von COND ist eine Liste von Listen (Klauseln); eine Klausel ist eine Liste, deren erstes Element entweder eine Anweisungsliste ist, die sich zu TRUE oder FALSE auswertet, oder das Wort ELSE, und deren weitere Elemente beliebige Anweisungen sind.

COND wertet die Klauseln in der angegebenen Reihenfolge aus. Wenn das erste Element der Klausel ELSE oder eine Anweisungsliste, die sich zu TRUE auswertet, ist, wird der Rest der Klausel ausgeführt und COND liefert deren Rückgabe zurück (sofern vorhanden). Ansonsten fährt COND analog mit der nächsten Klausel fort. Wenn keine der Bedingungen TRUE ergibt oder ELSE ist, tut COND nichts.

Beispiel

TO VORZEICHEN :x
  PRINT COND [
  [[:x < 0] "negativ]
  [[:x = 0] "Null]
  [else "positiv] ]
END

VORZEICHEN -1
negativ
VORZEICHEN 0
Null
VORZEICHEN 1
positiv

[Kontrollstrukturen] [Inhalt]


foreach

Syntax

FOREACH variablenname werteliste/-array anweisungsliste

Beschreibung

Legt eine neue lokale Variable mit dem angegebenen Namen an, die nacheinander mit den Elementen der Werteliste bzw. des Wertearrays belegt wird. Die Anweisungsliste (eine Liste, die beliebige Anweisungen enthält) wird in diesen Kontexten je einmal ausgeführt.

Die angelegte Variable wird im Anschluss wieder entfernt, so dass :variablenname wieder den vorherigen Wert hat (oder keinen, wenn der Name vorher unbekannt war).

Beispiel

FOREACH "x [3 4 5] [(PRINT [x hat jetzt den Wert] :x)]
x hat jetzt den Wert 3
x hat jetzt den Wert 4br> x hat jetzt den Wert 5

[Kontrollstrukturen] [Inhalt]


apply

Syntax

APPLY prozedurname parameterliste

Beschreibung

Führt die Prozedur, deren Name angegeben ist, aus. Der Prozedur werden die Elemente der angegebenen Liste als Parameter übergeben. APPLY liefert zurück, was die Prozedur zurückliefert (also evtl. nichts).

Es muss eine Prozedur diesen Namens existieren, die die entsprechende Anzahl Parameter erwartet.

Siehe auch INVOKE.

Beispiel

PRINT APPLY "SUM [2 3 4]
9
APPLY "HOME [] ;home erwartet keine Parameter und liefert nichts zurück

[Kontrollstrukturen] [Inhalt]


invoke

Syntax

INVOKE prozedurname parameter
(INVOKE prozedurname parameter1 parameter2 ...)

Beschreibung

Führt die Prozedur, deren Name angegeben ist, aus. Der Prozedur werden der/die angegebenen Parameter übergeben. INVOKE liefert zurück, was die Prozedur zurückliefert (also evtl. nichts).

Es muss eine Prozedur diesen Namens existieren, die die entsprechende Anzahl Parameter erwartet.

INVOKE arbeitet also genau wie APPLY, mit dem Unterschied, dass hier die Parameter der auszuführenden Prozedur separat übergeben werden (nicht als Liste). Dies bedingt, dass die Parameter von INVOKE zuerst ausgewertet werden, der Inhalt der Liste bei APPLY jedoch nicht:

APPLY "PRINT [SUM 3 4] ;sum 3 4 wird nicht ausgewertet
SUM 3 4
(INVOKE "PRINT SUM 3 4) ;sum 3 4 wird ausgewertet
7

Beispiel

PRINT INVOKE "NOT "TRUE
FALSE
(INVOKE "HOME) ;home erwartet keine Parameter und liefert nichts zurück

[Kontrollstrukturen] [Inhalt]


wait

Syntax

WAIT millisekunden

Beschreibung

Unterbricht die Ausführung für die angegebene Anzahl Millisekunden (tausendstel Sekunden). Die Angabe muss eine nichtnegative ganze Zahl sein.

Beispiel

PRINT "start
WAIT 2000
PRINT [Es sind 2 Sekunden vergangen]

[Kontrollstrukturen] [Inhalt]


stop

Syntax

STOP

Beschreibung

STOP beendet die Prozedur, in der es ausgeführt wird. Die Prozedur liefert nichts zurück. Es wird ein Fehler geworfen, wenn STOP außerhalb einer Prozedur aufgerufen wird.

Siehe auch OUTPUT.

Beispiel

TO SCHREIBE_WENN :x
  IF NOT :x [STOP]
  PRINT [x ist wahr.]
END

SCHREIBE_WENN "TRUE
x ist wahr.
SCHREIBE_WENN "FALSE ;keine Ausgabe

[Kontrollstrukturen] [Inhalt]


output

Syntax

OUTPUT rueckgabewert

Beschreibung

OUTPUT beendet die Prozedur, in der es ausgeführt wird. Die Prozedur liefert den angegebenen Wert zurück. Es wird ein Fehler geworfen, wenn OUTPUT außerhalb einer Prozedur aufgerufen wird.

Siehe auch STOP.

Beispiel

TO RUECKGABETEST
 PRINT [Rueckgabetest gibt jetzt 55 zurück.]
 OUTPUT 55
 PRINT [Diese Zeile wird nicht mehr ausgeführt]
END

PRINT RUECKGABETEST
Rueckgabetest gibt jetzt 55 zurück.
55

[Kontrollstrukturen] [Inhalt]


Diese Seite gehört zum Internetauftritt von PocketLogo.

PocketLogo wird gehostet von

Get PocketLogo at SourceForge.net. Fast, secure and Free Open Source software downloads