Kurs starten

**** IF ... THEN ****

IF THEN: Bedingungen und Verzweigungen

IF prüft eine Bedingung, THEN sagt, was passieren soll, wenn sie zutrifft. Damit trifft ein Programm Entscheidungen.

Schreibweise

FormBedeutung
IF A>3 THEN PRINT "JA"Führt den Befehl aus, wenn die Bedingung zutrifft.
IF A=1 THEN 100Springt zu Zeile 100, wie ein GOTO.
IF A=1 GOTO 100Gleichbedeutend, 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.

Vergleiche 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.

Alles hinter THEN gehört 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.

Der Sonst-Fall von Hand 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.

AND und OR 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.

HAEUFIGE FRAGEN

Fragen zu IF ... THEN

Gibt es ELSE in C64 BASIC?

Nein. BASIC V2 kennt nur IF ... THEN. Den Sonst-Fall baut man mit einem zweiten IF oder mit einem GOTO, das den anderen Zweig überspringt.

Was bedeutet das Ergebnis -1 bei einem Vergleich?

BASIC stellt "wahr" intern als -1 dar und "falsch" als 0. PRINT 5>3 gibt deshalb -1 aus. Im Alltag braucht man das selten, es erklärt aber ungewohnte Ausgaben.

Gleich selbst ausprobieren

Tippe die Beispiele in den freien Editor und sieh dir an, was passiert.

Freien Editor oeffnen →