ELSE

Aus C64-Wiki
Zur Navigation springenZur Suche springen
ELSE
Syntax: ELSE
Parameter
keine
Einordnung
Typ: Anweisung
Kontext: Strukturkontrolle
Aufgabe: Leitet den Nicht-Wahr-Zweig einer Bedingungsklausel ein
Abkürzung: keine
Token: $64 $47 (100 71)
Verwandte Befehle
RCOMP - IF - THEN


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort ELSE.

Typ: Anweisung
Syntax: ELSE

Das Schlüsselwort ELSE ergänzt den BASIC-V2-Befehl IF (der nur einen Wahr-Zweig in seiner Bedingungsklausel kennt; siehe THEN) um einen weiteren Zweig, den Nicht-Wahr-Zweig. Das bedeutet, dass in der gleichen BASIC-Zeile, in der IF..THEN steht, in Simons' Basic auch folgen kann, was passieren soll, wenn die Bedingung nach IF nicht zutrifft. In BASIC V2 wird dieser Fall nicht ausdrücklich behandelt und muss gegebenenfalls extra abgefragt oder mit GOTO konstruiert werden (siehe Beispiel-Abschnitt).

Beachten:

  • Bei ELSE handelt es sich in Simons' Basic um kein abhängiges Schlüsselwort (so wie THEN von IF abhängig ist oder TO von FOR), weshalb es von anderen Befehlen in der Zeile mit Doppelpunkten abgetrennt werden muss.
  • ELSE bezieht sich immer auf die zuletzt bearbeitete IF-Klausel. Sollte im Wahr-Zweig vor ELSE ein Prozeduraufruf stattfinden und sollten in der Prozedur weitere IFs vorkommen, so trifft der ursprüngliche Wahrheitswert vor ELSE nach Rückkehr aus der Prozedur nicht mehr zu und es kommt zu Ausführungsfehlern mit ELSE. Dies kann man verhindern, indem man direkt vor den Prozeduraufruf xx=PEEK($C5CB) einfügt und direkt danach ein POKE $C5CB,xx, das rettet den Wahrheitswert der ursprünglichen Klausel in die Variable xx und rekonstruiert ihn dann, bevor ELSE ausgeführt wird.


Dieser Befehl wurde in TSB um weitere Funktionen ergänzt, siehe ELSE (TSB).


Beispiel[Bearbeiten | Quelltext bearbeiten]

10 PRINT "test ";
20 FETCH "jn",1,x$: PRINT
30 IF x$ = "j" THEN PRINT "ja": ELSE: PRINT "nein"

Je nachdem, ob der Benutzer "j" oder "n" drückt, erscheint eine andere Antwortausgabe.

Im Vergleich dazu müsste in BASIC V2 die Zeile 30 derart umschrieben werden:

30 IF x$ = "j" THEN PRINT "ja":GOTO 32
31 PRINT "nein"
32 :