This is the version 5bb8b4b408367b37baaa5b4e from 2008-09-16 14:59:54 comment: 'Neue Version'
fortran ed
sollte Fortran95 sein (freie Form)...
Table of Contents
Grundlagen ed
Übersetzuung ed
Quellcode in Datei *.f95
f95 programm.f95 -o programm
oder
gfortran programm.f95 -o programm
Struktur ed
Die Form (Einrückungen, Zwischenräume,...) ist in Fortran95 frei wählbar.
program Name
Variablen-Deklaration (immer vor den Anweisungen!)
Anweisungen
! Kommentar
stop (nicht wirklich nötig)
endVariablen ed
Skalare ed
Typen:
- integer
- real
- double precision
- complex
- logical
- character
Typ Name oder Typ :: Name
wenn mit Initial-Wert immer
Typ :: Name = Wert
- Konstanten:
real a, b, c parameter ( a = 1.0, b=... )
('parameter' muss immer vor den Anweisungen stehen!)
Arrays ed
- eindimensional
Typ Name( Anzahl_Elemente ) oder Typ, dimension( Anzahl_Elemente )
- mehrdimensional
Typ Name ( Anzahl_1, Anzahl_2 ) oder Typ, dimension( Anzahl_1, Anzahl_2 ) Name
- mit Initialwert (1dim.)
Typ :: Name ( Anzahl ) = (/ Wert_1, ..., Wert_n /)
Unterprogramme ed
Stehen vor dem Hauptprogramm ('program'...)!
subroutine ed
subroutine Name ( Parameter_Liste ) (nur Parameter-Namen, keine Typen)
Variablen_Deklaration (hier Parameter nochmal definieren, mit Typ)
Anweisungen
return
end
program Name_2
call Name( Parameter )
endEs gilt das "Call-By-Reference"-Prinzip!!! (Variable im Unter- sowie im Hauptprogramm sind ein und die selbe)
Beispiel:
subroutine addiere ( a, b )
integer a, b
a = a + b
return
end
program test
integer :: c = 4, d = 5
call addiere( c, d )
! hier ist c=9
endfunction ed
Typ function Name (Parameter_Liste )
Variablen_Deklaration
...
Name = Wert
return
endDer Rückgabewert wird wie eine Variable verwendet (ohne eigene Deklaration)
Dafür muss im Hauptprogramm eine Variable mit dem Namen und Typ der Funktion deklariert werden!
Beispiel:
real function quadriere ( x )
real x
quadriere = x * x
return
end
program Test
real a
real :: b = 5.0
real quadriere
a = quadriere( b )
endAusgabe ed
write(*,*) 'einfache Stringausgabe' write(*,*) x, y write(*,*) 'x = ', x