| <<< zur Fortran-Startseite | |
| << FORTRAN 77 | Fortran 90/95 >> |
| < Stringoperationen | Standardfunktionen > |
GOTO
GOTO bewirkt einen Sprung zu einer bestimmten Anweisungsnummer.
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
GOTO 100
WRITE (*,*) 'Hallo'
100 WRITE (*,*) 'Welt'
C Ausgabe: Welt
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
CONTINUE
CONTINUE ermöglicht bei Anweisungsnummern eine „leere“ Anweisung.
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
GOTO 100
WRITE (*,*) 'Hallo'
100 CONTINUE
C keine Ausgabe
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
Bedingtes GOTO
Beim bedingten GOTO ist in Abhängigkeit von einer Integer-Variablen der Sprung zu einer bestimmten Anweisungsnummer möglich.
Beispiel: Eine „Switch“-Verzweigung
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
INTEGER I
I=2
GOTO (100, 200, 300), I
100 WRITE (*,*) 'Hallo 1'
GOTO 1000
200 WRITE (*,*) 'Hallo 2'
GOTO 1000
300 WRITE (*,*) 'Hallo 3'
1000 CONTINUE
C Ausgabe: Hallo 2
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
IF-Verzweigungen
Der IF-Einzeiler
IF (logischer ausdruck) anweisung |
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
INTEGER I
I=2
IF (I .EQ. 2) WRITE (*,*) 'Hallo'
C Ausgabe: Hallo
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
IF-THEN
IF (logischer ausdruck) THEN anweisungsblock END IF |
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
INTEGER I
I=2
IF (I .EQ. 2) THEN
WRITE (*,*) 'Hallo'
END IF
C Ausgabe: Hallo
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
IF-THEN-ELSE
IF (logischer ausdruck) THEN if-anweisungsblock ELSE else-anweisungsblock END IF |
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
INTEGER I
I=333
IF (I .GE. 444) THEN
WRITE (*,*) 'Hallo'
ELSE
WRITE (*,*) 'Hola'
END IF
C Ausgabe: Hola
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
ELSE-IF
IF (logischer ausdruck 1) THEN if-anweisungsblock 1 ELSE IF (logischerAusdruck 2) THEN if-anweisungsblock 2 ELSE IF (logischerAusdruck n) THEN if-anweisungsblock n ELSE else-anweisungsblock END IF |
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
INTEGER I
I = 2
IF (I .EQ. 1) THEN
WRITE (*,*) 'I ist eins'
ELSE IF (I .EQ. 2) THEN
WRITE (*,*) 'I ist zwei'
ELSE
WRITE (*,*) 'Ich weiß nicht was I ist'
END IF
C Ausgabe: I ist zwei
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
DO-Schleifen
Die DO-Schleife (Zählschleife) ist die einzige Schleife die FORTRAN 77 standardmäßig kennt.
DO nr zählvariable = startwert, endwert [, schrittweite]
anweisungsblock
nr CONTINUE
|
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
INTEGER I
DO 100 I = 1, 10
WRITE (*,*) I
100 CONTINUE
C Zeilenweise Ausgabe der Zahlen 1 bis 10
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
Weitere Schleifen
Da FORTRAN 77 keine weiteren Schleifen kennt, müssen diese mit Hilfe einer IF-Verzweigung und einem GOTO-Befehl nachgebildet werden. Prominente Beispiele aus anderen Programmiersprachen sind die While-Schleife und die Do-While-Schleife.
While-Schleife (kopfgesteuerte Schleife)
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
INTEGER I
I=0
10 IF(I .LT. 5) THEN
WRITE (*,*) I
I = I + 1
GOTO 10
END IF
C Die Zahlen 0 bis 4 werden ausgegeben
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
Do-While-Schleife (fußgesteuerte Schleife)
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
INTEGER I
I=6
10 CONTINUE
WRITE (*,*) I
I = I + 1
IF (I .LT. 5) GOTO 10
C Die Zahl 6 wird ausgegeben
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
Implizite Schleife
Bei Eingabe oder Ausgabe ist die Angabe einer impliziten Schleife möglich.
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
INTEGER I
WRITE (*,*) ('Hallo', I = 1, 10)
C Ausgabe: HalloHalloHalloHalloHalloHalloHalloHalloHalloHallo
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
STOP
Die STOP-Anweisung beendet das Programm.
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 |
PROGRAM BSP
WRITE (*,*) 'Vor Stop-Statement'
STOP
WRITE (*,*) 'Nach Stop-Statement'
C Ausgabe: Vor Stop-Statement
END
|
12345678901234567890123456789012345678901234567890123456789012345678901234567890 0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8 |
| <<< zur Fortran-Startseite | |
| << FORTRAN 77 | Fortran 90/95 >> |
| < Stringoperationen | Standardfunktionen > |