C128 NetLex

Commodore 128 Bedienungshandbuch
Commodore 128 System Guide



IF-Anweisung

Format: IF Ausdruck THEN Anw [:ELSE Anw]

Zweck:Erlaubt die Verzweigung in verschiedene Programmteile, abhängig vom logischen Wahrheitsgehalt eines numerischen Ausdruckes. Ein numerischer Ausdruck ist logisch "wahr", wenn sein Wert von Null verschieden ist und logisch "falsch", wenn sein Wert 0 ist.

Ausdruck  Jeder beliebige numerische Ausdruck.

Anw  Eine einzelne Anweisung, eine Folge von Anweisungen durch Doppelpunkte voneinander getrennt oder einfach eine Zeilennummer.

Bemerkungen:Ist der numerische Ausdruck logisch "wahr", so wird (werden) die Anweisung(en) hinter THEN ausgeführt. Ist er dagegen logisch "falsch", so wird (werden) die Anweisung(en) hinter THEN ignoriert und die Anweisung(en) hinter ELSE, falls vorhanden, oder die nächste Programmzeile ausgeführt.

Beim Test auf Gleichheit muß die Ungenauigkeit aufgrund der internen Gleitkommadarstellung berücksichtigt werden. In kritischen Fällen sollte der Test über einen Bereich erfolgen, innerhalb dessen Grenzen die Genauigkeit schwankt. Z.B. liefert
IF ABS(X-2.5)<1.06E-6 THEN...
das Ergebnis "wahr", wenn X=2.5 mit einem relativen Fehler von weniger als 1.06E-6 ist.

Die IF ... THEN ...:ELSE-Anweisung muß in einer Programmzeile stehen. Weder THEN noch ELSE dürfen in separaten Zeilen stehen, es sei denn, es wird eine BEGIN-Anweisung in die IF-Anweisung eingefügt (s. Beispiel 2 bei der BEGIN-Anweisung).

Ist die Anzahl von THEN- und von ELSE-Angaben unterschiedlich, so bezieht sich ELSE nicht nur auf das letzte davorstehende THEN sondern auch auf weitere nicht mit einem ELSE abgeschlossenen IF ... THEN-Anweisungen in der gleichen Zeile (vergl. Beispiel 3). [Anders ausgedrückt: Ist Ausdruck nach einem THEN "falsch", sucht der Interpreter immer das nächstbeste ELSE und setzt dort das Programm fort.]

Beispiel 1:100 NMSG$="DER WERT MUSS POSITIV SEIN"
110 PMSG$="DIE WURZEL IST"
120 INPUT "BITTE ZAHL EINGEBEN";N
130 IF N<0 THEN PRINT NMSG$:GOTO 120
    :ELSE PRINT PMSG$;SQR(N)
140 INPUT "NOCH EINE ZAHL (J/N)";Z$
150 IF Z$="J" THEN 120:ELSE END


Es wird die Wurzel einer eingegebenen Zahl nur dann ermittelt und gedruckt, wenn die Zahl positiv ist.

Beispiel 2:100 IF X>Y THEN PRINT "GROESSER"
    :ELSE IF Y>X THEN PRINT "KLEINER"
    :ELSE PRINT "GLEICH"


Dies ist ein Beispiel für verschachtelte IF-Anweisungen.

Beispiel 3:100 IF A=B THEN IF B=C THEN PRINT "A=C"
    :ELSE PRINT "A<>C"


Falls A ungleich B ist, wird der zweite Vergleich nicht mehr ausgeführt.


Auszug aus dem Commodore C128 (D) Bedienungshandbuch: Seite 4-73 bis 4-74
Korrigiert von WTE


[Seitenanfang] [Infos] [Links] [Lexikon] [Home]
Erstellt von WTE, am
10. Februar 2009; überarbeitet am 10. Februar 2009