ELSE
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 einPOKE $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 :
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE