Fortran Handledning
Komma igång med Fortran
Sök…
Anmärkningar
Fortran är ett språk som används mycket inom det vetenskapliga samfundet på grund av dess lämplighet för numerisk beräkning. Särskilt attraktiv är dess intuitiva matrisnotation, vilket gör det enkelt att skriva snabba vektoriserade beräkningar.
Trots sin ålder är Fortran fortfarande aktivt utvecklad med många implementationer, inklusive GNU, Intel, PGI och Cray.
versioner
Version | Notera | Släpp |
---|---|---|
FORTRAN 66 | Första standardisering av ASA (nu ANSI) | 1966/03/07 |
FORTRAN 77 | Fast form, historisk | 1978/04/15 |
Fortran 90 | Gratis form, ISO-standard, Array-operationer | 1991/06/15 |
Fortran 95 | Rena och elementära förfaranden | 1997/06/15 |
Fortran 2003 | Objektorienterad programmering | 2004/04/04 |
Fortran 2008 | Co-Arrays | 2010-09-10 |
Installation eller installation
Fortran är ett språk som kan sammanställas med kompilatorer från många leverantörer. Olika kompilatorer finns tillgängliga för olika hårdvaruplattformar och operativsystem. Vissa kompilatorer är gratis programvara, andra kan användas gratis och andra kräver köp av en licens.
Den vanligaste gratis Fortran-kompilatorn är GNU Fortran eller gfortran. Källkoden är tillgänglig från GNU som en del av GCC, GNU-kompilatorsamlingen. Binarier för många operativsystem finns på https://gcc.gnu.org/wiki/GFortranBinaries . Linux-distributioner innehåller ofta gfortran i sin pakethanterare.
Ytterligare kompilatorer finns till exempel:
- EKOPath av PathScale
- LLVM (backend via DragonEgg)
- Oracle Developer Studio
På HPC-system finns ofta specialiserade kompilatorer tillgängliga av systemleverantören som till exempel IBM eller Cray- kompilatorer.
Alla dessa kompilatorer stöder Fortran 95-standarden. En översikt över Fortran 2003-status och Fortran 2008-status från olika kompilatorer erbjuds av ACM Fortran Forum och finns tillgängligt i Fortran Wiki.
Hej världen
Alla Fortran-program måste inkludera end
som sista uttalande. Därför ser det enklaste Fortran-programmet ut så här:
end
Här är några exempel på "hej, värld" -program:
print *, "Hello, world"
end
Med write
uttalande:
write(*,*) "Hello, world"
end
För tydlighetens skull är det nu vanligt att använda program
att starta ett program och ge det ett namn. I end
uttalande kan då hänvisa till detta namn för att göra det tydligt vad det refererar till, och låt kompilatorn kontrollera koden för korrekthet. Vidare bör alla Fortran-program inkludera ett implicit none
uttalande. Således skulle ett minimalt Fortran-program faktiskt se ut enligt följande:
program hello
implicit none
write(*,*) 'Hello world!'
end program hello
Nästa logiska steg från denna punkt är hur man ser resultatet av hej världsprogrammet. Det här avsnittet visar hur man kan uppnå det i en Linux-liknande miljö. Vi antar att du har några grundläggande uppfattningar om skalkommandon , främst att du vet hur du kommer till skalterminalen. Vi antar också att du redan har konfigurerat din fortran
miljö . Använd din föredragna textredigerare (anteckningar, anteckningar ++, vi, vim, emacs, gedit, kate, etc.) och spara hejprogramet ovan (kopiera och klistra in) i en fil med namnet hello.f90
i din hemkatalog. hello.f90
är din källfil. Gå sedan till kommandoraden och navigera till katalogen (hemkatalog?) Där du sparat källfilen och skriv sedan följande kommando:
>gfortran -o hello hello.f90
Du har precis skapat ditt hej världs körbara program. I tekniska termer har du bara sammanställt ditt program. För att köra det skriver du följande kommando:
>./hello
Följande rad visas på din skalterminal.
> Hello world!
Grattis, du skrev, samlade och körde "Hello World" -programmet.
Kvadratisk ekvation
Idag används Fortran främst för numerisk beräkning. Detta mycket enkla exempel illustrerar den grundläggande programstrukturen för att lösa kvadratiska ekvationer:
program quadratic
!a comment
!should be present in every separate program unit
implicit none
real :: a, b, c
real :: discriminant
real :: x1, x2
print *, "Enter the quadratic equation coefficients a, b and c:"
read *, a, b, c
discriminant = b**2 - 4*a*c
if ( discriminant>0 ) then
x1 = ( -b + sqrt(discriminant)) / (2 * a)
x2 = ( -b - sqrt(discriminant)) / (2 * a)
print *, "Real roots:"
print *, x1, x2
! Comparison of floating point numbers for equality is often not recommended.
! Here, it serves the purpose of illustrating the "else if" construct.
else if ( discriminant==0 ) then
x1 = - b / (2 * a)
print *, "Real root:"
print *, x1
else
print *, "No real roots."
end if
end program quadratic
Ärendekänslighet
Små och små bokstäver i alfabetet är likvärdiga i Fortran-teckenuppsättningen. Med andra ord, Fortran är okänslig för fall . Detta beteende står i kontrast till skiftlägeskänsliga språk, till exempel C ++ och många andra.
Som en konsekvens är variablerna a
och A
samma variabel. I princip skulle man kunna skriva ett program enligt följande
pROgrAm MYproGRaM
..
enD mYPrOgrAM
Det är till den goda programmeraren att undvika sådana fula val.