Fortran: Fortran 95: Programmaufbau
<<< zur Fortran-Startseite | |
<< Fortran 95 | Fortran 2003 >> |
< Programmaufbau | Datentypen > |
Beispiel: Hallo Welt
BearbeitenFortran 90/95-Code (free source form) |
program hallo ! Das typische "Hallo Welt"-Programm write( *, * ) 'Hallo Welt!' end program hallo |
Dieses Programm besteht aus den gleichen Anweisungen wie ein entsprechendes FORTRAN 77-Programm und wurde in der sogenannten "free source form" verfasst. Aus diesem Grund ist die erste Spalte nicht mehr dem Kommentarzeichen vorbehalten. Kommentare werden hier durch ein Rufzeichen eingeleitet. Alles rechts vom Rufzeichen wird als Kommentar behandelt. Ein Kommentar kann also auch nach einer Anweisung stehen. Im Gegensatz zu einem FORTRAN 77-Programm wird in Fortran 90/95 oft die Kleinschreibung bevorzugt. Dies ist aber nicht zwingend erforderlich, da die Fortran-Compiler case-insensitiv sind. D.h. sie unterscheiden nicht zwischen Groß- und Kleinschreibung. Eine Einrückung von Blöcken ist nicht zwingend erforderlich, fördert aber die Übersichtlichkeit des Programmcodes.
Die Anweisung in der ersten Zeile kennzeichnet die Programmeinheit als Hauptprogramm und gibt ihr die Bezeichnung hallo
. Es folgt eine Kommentarzeile. Dann folgt die Anweisung, einen String auf die Standardausgabe zu schreiben. Und schließlich signalisiert die end
-Anweisung das Programmende.
Das Zeilenformat
BearbeitenFortran 90/95 bietet zwei verschiedene Programmaufbaumöglichkeiten:
- free source form
- fixed source form
Die "free source form" ist neu in Fortran 90/95. Sie bietet die Möglichkeit Programme ohne fixe Spaltenzuordnung zu schreiben, wie dies auch in den meisten anderen gebräuchlichen Programmiersprachen üblich ist. Zusätzlich ist in Fortran 90/95 aus Kompatibilitätsgründen auch das alte FORTRAN 77-Zeilenformat (fixed source form) enthalten. Dieses sollte in neuen Programmen aber nicht mehr verwendet werden.
Normalerweise gilt, dass jede Fortran-Anweisung in einer eigenen Zeile steht. Bei Verwendung der "free source form" gelten folgende Bedingungen. Eine Zeile darf maximal 132 Zeichen lang sein. Als Zeilenumbruchzeichen dient das Kaufmanns-Und (&). Das Kaufmanns-Und steht in diesem Fall immer am Ende der fortzuführenden Zeile, optional auch zusätzlich am Beginn der Fortsetzungszeile. Standardmäßig sind maximal 40 Fortsetzungszeilen erlaubt.
Beispiel:
Fortran 90/95-Code (free source form) |
program bsp ! Leerzeilen werden vom Compiler ignoriert ! Vereinbarungsteil implicit none ! implizite Datentypvereinbarung ausschalten integer :: a, b, c ! Variablendeklaration (Ganzzahlen) character(25) :: str ! Variablendeklaration (String mit einer Länge von 25 Zeichen) ! Aktionsteil a = 5 b = 7 c = a + & ! und jetzt kommt eine Fortsetzungszeile b write( *, * ) c ! auch Strings oder Schlüsselwörter können auf der nächsten Zeile fortgesetzt werden. ! Dabei ist unbedingt darauf zu achten, dass die Fortsetzungszeile auch mit einem ! Kaufmanns-Und eingeleitet wird, da ansonsten einige Compiler Fehlermeldungen liefern str = "Hal& &lo Welt!" wr& &ite( *, * ) str ! Ausgabe: ! 12 ! Hallo Welt! end program bsp |
Mehrere Anweisungen können in eine Zeile geschrieben werden, wenn eine Trennung durch jeweils ein Semikolon erfolgt.
Beispiel:
Fortran 90/95-Code (free source form) |
program bsp implicit none integer :: a, b, c a = 5; b = 7; c = a + b write( *, * ) c ! Ausgabe: ! 12 end program bsp |
Die Programmstruktur für das Hauptprogramm
BearbeitenEin Hauptprogramm weist in einfachster Darstellung immer folgende Struktur auf:
program
Name- Vereinbarungsteil
- Aktionsteil
end
[program
[Name]]
Die in eckigen Klammern angegebenen Bestandteile sind optional. Sie sollten dennoch stets mit angegeben werden. Genau eine end
-Anweisung (mit oder ohne optionale Bestandteile) ist obligatorisch. Bei Hauptprogramm und Unterprogrammen ist end
eine ausführbare Anweisung. Ein Fortran-Programm darf genau ein Hauptprogramm enthalten, es ist der Startbereich für die Programmausführung.
Der Fortran-Zeichenvorrat
BearbeitenFortran 95-Programme bestehen standardmäßig aus folgenden Zeichen:
- Großbuchstaben: A bis Z
- Kleinbuchstaben: a bis z
- Ziffern: 0 bis 9
- Den 13 FORTRAN 77-Sonderzeichen: + - * / = ( ) : , . ' $ und dem Leerzeichen
- Unterstrich (Underscore): _
- Weitere Sonderzeichen: ! ? " & ; < >
Ein Fortran 90/95-Compiler ist case-insensitiv: er unterscheidet nicht zwischen Groß- und Kleinbuchstaben. Stringkonstanten können natürlich alle ASCII-Zeichen beinhalten.
Symbolische Namen
BearbeitenStandardmäßig dürfen symbolische Namen maximal 31 Zeichen lang sein. Das erste Zeichen muss immer ein Buchstabe sein. Anschließend sind alphanumerische Zeichen (Buchstabe oder Ziffer) und Unterstriche erlaubt. Im Gegensatz zu FORTRAN 77 dürfen nun keine Leerzeichen innerhalb eines symbolischen Namens auftreten.
Reservierte Schlüsselwörter?
BearbeitenIm Fortran 95-Standard ist zwar die Rede von Schlüsselwörtern (statement keywords), wie z.B. if, do, real, write
. Allerdings wird eindeutig darauf hingewiesen, dass diese nicht reserviert sind. Das heißt, solche Schlüsselwörter können auch für eigene Bezeichner verwendet werden.
Beispiel:
Folgender Programmcode ist in Fortran 90/95 gültig, aber nicht empfehlenswert
Fortran 90/95-Code (free source form) |
program bsp implicit none integer :: integer, write, if integer = 6 write = 5 if = 1 write( *, * ) integer + write + if end program bsp |
Details zur Anordnungsreihenfolge von Anweisungen
BearbeitenFortran schreibt eine gewisse Anordnungsstruktur der einzelnen Programmelemente vor. So ist das folgende Programm
Fortran 90/95-Code (free source form) |
program hallo write( *, * ) "Hallo Welt" implicit none end program hallo |
nicht standardkonform, da die implicit none
-Vereinbarung nicht nach einer ausführbaren Anweisung folgen darf. So müsste es richtig lauten
Fortran 90/95-Code (free source form) |
program hallo implicit none write( *, * ) "Hallo Welt" end program hallo |
Im Fortran 90/95-Standard ist genau festgelegt wann bestimmte Programmelemente auftreten dürfen. Prinzipiell gilt, dass Vereinbarungs-Anweisungen (nichtausführbare Anweisungen) vor Aktions-Anweisungen (ausführbaren Anweisungen) stehen. Doch es gibt Ausnahmen, z.B. darf die nichtexekutierbare format
-Anweisung auch zwischen oder nach ausführbaren Anweisungen stehen. Eindeutig ist Folgendes geregelt. Die Programmeinheit beginnt mit dem charakteristischen Schlüsselwort, z.B. function
. Werden Module eingebunden (use ...
), so erfolgt dies vor jeder anderen Vereinbarung oder ausführbaren Anweisung. Danach folgt ein "Mischbereich" (im Fortran-Standard wird das natürlich nicht "Mischbereich" genannt). Vor dem end
-Statement darf ein contains
-Abschnitt mit Unterprogrammen stehen.
Fortran 90/95-Code (free source form) |
program (, function, subroutine, ...) ... use ... ! Hier folgt nun der so genannte "Mischbereich" contains interne Unterprogramme oder Modul-Unterprogramme end ... |
Im "Mischbereich" ist die Anordnung einzelner Elemente zwar auch im Standard geregelt, jedoch gibt es Elemente die an jeder Stelle des Mischbereichs auftreten dürfen, bei anderen ist wiederum klar festgelegt , dass sie nur nach oder vor anderen Elementen auftreten dürfen. Hier soll deshalb nur eine vereinfachte Variante gezeigt werden. Für genauere Informationen wird auf den Fortran-Working-Draft verwiesen.
Fortran 90/95-Code (free source form) |
program (, function, subroutine, ...) ... use ... ! --------- Beginn "Mischbereich" (mögliche Anordnungsreihenfolge) --------- implicit ... ! Definiton von Datenverbunden, Interface-Blöcke, benannte Konstanten, Variablendeklarationen ! ausführbare Anweisungen ... format ... ! --------- Ende "Mischbereich" -------------------------------------------- contains Interne Unterprogramme bzw. Modul-Unterprogramme end ... |
Nicht jede Anweisung ist in jeder Programmeinheit erlaubt. So dürfen z.B. keine format
-Anweisungen im Hauptteil eines Moduls (wohl aber in Modul-Unterprogrammen) verwendet werden.
<<< zur Fortran-Startseite | |
<< Fortran 95 Inhaltsverzeichnis | Fortran 2003 >> |
< Programmaufbau | Datentypen > |