Was ist Fortran?
Fortran (Formula Translation) wurde 1957 bei IBM entwickelt und ist damit die älteste noch aktiv genutzte Hochsprache. Sie ist von Anfang an für numerisches Rechnen gemacht: Wettervorhersage, Klimamodelle, Strömungsmechanik, Astrophysik und Supercomputer-Rechnungen laufen noch heute in Fortran, weil Compiler damit extrem schnellen Code erzeugen und Arrays erstklassige Bürger sind.
Moderne Fortran-Standards (90, 95, 2003, 2008, 2018) haben mit dem alten, kryptischen FORTRAN 77 wenig gemeinsam: freie Formatierung, Module, Datentypen, Rekursion, objektorientierte Elemente und parallele Konstrukte (Coarrays, do concurrent).
Compiler und Ausführen
gfortran hallo.f90 -o hallo # übersetzen (GNU Fortran)
./hallo # starten
gfortran -O2 -Wall -fcheck=all -std=f2018 hallo.f90 # Warnungen, LaufzeitprüfungenWeitere Compiler: Intel ifx, NVIDIA nvfortran, LLVM flang. Moderne Hilfen: fpm (Fortran Package Manager), fortran-lang.org (Community und Tutorials).
Das erste Programm
program hallo
implicit none ! alle Variablen müssen deklariert werden
character(len=20) :: name
integer :: alter
name = "Mia"
alter = 17
print *, "Hallo Fortran!"
print *, "Name: ", trim(name), ", Alter: ", alter
write(*, "(a, i0)") "Alter nächstes Jahr: ", alter + 1
end program halloAusgabe
Hallo Fortran! Name: Mia, Alter: 17 Alter nächstes Jahr: 18
- Ein Programm beginnt mit
program nameund endet mitend program name - `implicit none` gehört immer an den Anfang: Ohne es gelten alte Regeln, nach denen Namen mit
ibisnautomatisch Ganzzahlen sind - Kommentare beginnen mit
! - Groß-/Kleinschreibung ist egal (
PROGRAM=program) print *, ...undwrite(*, format)geben aus (*= Standard)- Der Zuweisungsoperator ist
=, Vergleiche sind==,/=,<,>
Rechnen
program rechnen
implicit none
integer :: a, b
real :: x
a = 17
b = 5
x = 2.5
print *, a + b, a - b, a * b
print *, a / b ! Ganzzahldivision
print *, mod(a, b) ! Rest
print *, real(a) / real(b) ! Gleitkomma
print *, 2 ** 10 ! Potenz
print *, x ** 2, sqrt(x), exp(1.0), sin(0.0), abs(-3)
print *, max(3, 9, 5), min(3, 9, 5)
print *, int(3.99), nint(3.5), floor(-2.5), ceiling(2.1)
print *, huge(a), epsilon(x)
end program rechnenAusgabe
22 12 85
3
2
3.40000010
1024
6.25000000 1.58113885 2.71828175 0.00000000 3
9 3
3 4 -3 3
2147483647 1.19209290E-07So führst du den Code aus: Datei hallo.f90 speichern, mit gfortran hallo.f90 -o hallo übersetzen und ./hallo starten (GNU Fortran, z. B. über sudo apt install gfortran).
Merke
- Fortran ist die älteste Hochsprache und bis heute Standard im Hochleistungsrechnen
- Struktur:
program ... end program;implicit nonenicht vergessen - Kommentare mit
!, Ausgabe mitprint *,undwrite - Ganzzahldivision
17 / 5 = 3, Potenz mit** - Moderne Standards (90 bis 2018) haben mit FORTRAN 77 wenig zu tun
Aufgabe
Berechne die Fläche und den Umfang eines Kreises mit Radius 2,5 und gib beides mit print aus.