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:

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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow