Schreibweise
| Form | Bedeutung |
|---|---|
IF A>3 THEN PRINT "JA" | Führt den Befehl aus, wenn die Bedingung zutrifft. |
IF A=1 THEN 100 | Springt zu Zeile 100, wie ein GOTO. |
IF A=1 GOTO 100 | Gleichbedeutend, das THEN darf hier entfallen. |
IF A>0 AND B>0 THEN ... | Mehrere Bedingungen mit AND, OR und NOT verknüpfen. |
Die Vergleichsoperatoren
Verglichen wird mit = (gleich), <> (ungleich), < (kleiner), > (grösser), <= und >=. Auch Text lässt sich vergleichen, dann gilt die alphabetische Reihenfolge.
Das Gleichheitszeichen hat in BASIC zwei Rollen: In A=5 weist es zu, in IF A=5 vergleicht es. Welche gemeint ist, ergibt sich aus der Stelle im Befehl.
10 A=7
20 IF A>5 THEN PRINT "GROESSER ALS 5"
30 IF A=7 THEN PRINT "GENAU SIEBEN"
40 IF A<>3 THEN PRINT "NICHT DREI"
GROESSER ALS 5
GENAU SIEBEN
NICHT DREI
Bei falscher Bedingung wird die ganze Zeile übersprungen
Das ist die wichtigste Eigenheit und der häufigste Stolperstein: Trifft die Bedingung nicht zu, ignoriert BASIC nicht nur den nächsten Befehl, sondern alles bis zum Zeilenende. Bei mehreren durch Doppelpunkt getrennten Befehlen hinter THEN gehören also alle zur Bedingung.
10 A=1
20 IF A=2 THEN PRINT "EINS":PRINT "ZWEI"
30 PRINT "FERTIG"
FERTIG
Weil A nicht 2 ist, entfallen beide PRINT-Befehle der Zeile 20.
Es gibt kein ELSE
Commodore BASIC V2 kennt kein ELSE. Den Sonst-Fall baut man mit einem zweiten IF oder mit einem Sprung: Der Ja-Zweig endet mit einem GOTO, das den Nein-Zweig überspringt.
10 INPUT "DEINE ZAHL";Z
20 IF Z>10 THEN 50
30 PRINT "KLEIN ODER GLEICH 10"
40 GOTO 60
50 PRINT "GROESSER ALS 10"
60 PRINT "FERTIG"
Zeile 40 ist entscheidend: Ohne sie liefe das Programm in den anderen Zweig hinein.
Mehrere Bedingungen verknüpfen
Mit AND müssen beide Bedingungen zutreffen, mit OR genügt eine, NOT kehrt um. Im Zweifel Klammern setzen, das macht die Absicht eindeutig.
10 A=5
20 B=12
30 IF A>0 AND B>10 THEN PRINT "BEIDES TRIFFT ZU"
40 IF A=99 OR B=12 THEN PRINT "MINDESTENS EINES"
BEIDES TRIFFT ZU
MINDESTENS EINES
Typische Stolperfallen
Kommazahlen genau vergleichen
Rechenergebnisse mit Nachkommastellen treffen ein = oft knapp nicht. Sicherer ist ein Bereich, etwa IF A>2.99 AND A<3.01 THEN ....
THEN GOSUB und THEN END
Beides ist erlaubt und funktioniert hier. Auf manchen anderen BASIC-Dialekten muss stattdessen eine Zeilennummer stehen, halte Listings also einfach, wenn sie portabel sein sollen.
Text und Zahl vergleichen
IF A$=5 ergibt einen ?TYPE MISMATCH ERROR. Vergleiche immer Text mit Text und Zahl mit Zahl.
Passt dazu
Im Kurs lernst du IF ... THEN in Lektion 5: Vergleiche und IF/THEN. Die vollständige Referenz aller Befehle steht im Befehls-Lexikon.