Fortran: Fortran 95: Programmaufbau

Aus Wikibooks
Zur Navigation springen Zur Suche springen
<<< zur Fortran-Startseite
<< Fortran 95 Fortran 2003 >>
< Programmaufbau Datentypen >

Beispiel: Hallo Welt[Bearbeiten]

Fortran 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[Bearbeiten]

Fortran 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[Bearbeiten]

Ein Hauptprogramm weist in einfachster Darstellung immer folgende Struktur auf:

  1. program Name
  2. Vereinbarungsteil
  3. Aktionsteil
  4. 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[Bearbeiten]

Fortran 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[Bearbeiten]

Standardmäß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?[Bearbeiten]

Im 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[Bearbeiten]

Fortran 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 >