fortran ed

sollte Fortran95 sein (freie Form)...

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)
end

Variablen ed

Skalare ed

Typen:

Typ Name                oder
Typ :: Name

wenn mit Initial-Wert immer

Typ :: Name = Wert

Konstanten:
real, parameter :: a = 1.0, b = 2, c = 3

Arrays ed

eindimensional

Typ :: Name(Anzahl_Elemente)                       oder
Typ, dimension(Anzahl_Elemente) :: Name            oder
Typ :: Name (erstes_Element : letztes_Element)

wichtig: im Gegensatz zu C ist für integer :: i(5) das erste Element i(1) und das letzte i(5)!

mehrdimensional

Typ :: Name (Anzahl_1, Anzahl_2)                   oder
Typ, dimension(Anzahl_1, Anzahl_2) :: Name

mit Initialwert (1 dim.)

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)
end

Es 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
end

function ed

Typ function Name (Parameter_Liste)
    Variablen_Deklaration
    ...
    Name = Wert
    return
end

Der 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)
end

Ausgabe ed

am Bildschirm ed

write(*,*) 'einfache Stringausgabe'
write(*,*) x, y
write(*,*) 'x = ', x

Datei ed

genauso wie am Bildschirm....jeder write-Befehl schreibt in eine Zeile

integer :: i = 72                       (irgendeine Zahl waehlen....)
open(unit = i, file = 'Dateiname')
write(i,*) 'Stringausgabe'
write(i,*) x, y
close(i)

Bedingungen ed

if ed

Kurzform (einzeilig)

if (Bedingung) Anweisung

mehrzeilig

if (Bedingung) then
    Anweisungen
endif

optionale Konstrukte

if (Bedingung) then
    ...
elseif (andere_Bedingung) then
    ...
else
    ...
endif

logische Ausdrücke ed

(als Parameter für if (...)-Anweisungen)

Variablen-Typ: logical

Werte:

Vergleichsoperatoren:

logische Operatoren:

Beispiel:

if (3 > 4 .OR. 4 > 3) ...

Schleifen ed

do ed

mit Label (veraltet?)

do Label Variable = Anfangs_Wert, Maximal_Wert [, Inkrement]
    Anweisungen...
Label continue

ohne Label

do Variable = Anfangs_Wert, Maximal_Wert [, Inkrement]
    Anweisungen...
end do                   (kann auch enddo sein)

Beispiel

integer :: i

do i = 1, 5
    write(*,*) i
end do

gibt die natürlichen Zahlen (1,2,3,4,5) aus

andere ed

...

Categories: Programmieren