FortranAan de slag met Fortran


Opmerkingen

Fortran is een taal die veel wordt gebruikt in de wetenschappelijke gemeenschap vanwege zijn geschiktheid voor numerieke berekening. Bijzonder aantrekkelijk is de intuïtieve array-notatie, die het schrijven van snelle vectorberekeningen eenvoudig maakt.

Ondanks zijn leeftijd is Fortran nog steeds actief ontwikkeld, met tal van implementaties, waaronder GNU, Intel, PGI en Cray.

versies

Versie Notitie Vrijlating
FORTRAN 66 Eerste standaardisatie door ASA (nu ANSI) 1966/03/07
FORTRAN 77 Vaste vorm, historisch 1978/04/15
Fortran 90 Vrije vorm, ISO-standaard, matrixbewerkingen 1991/06/15
Fortran 95 Pure en elementaire procedures 1997/06/15
Fortran 2003 Object georiënteerd programmeren 2004-04-04
Fortran 2008 Co-Arrays 2010-09-10

Gevalongevoeligheid

Hoofdletters en kleine letters van het alfabet zijn equivalent in de Fortran-tekenset. Met andere woorden, Fortran is niet hoofdlettergevoelig . Dit gedrag staat in contrast met hoofdlettergevoelige talen, zoals C ++ en vele andere.

Bijgevolg zijn de variabelen a en A dezelfde variabele. In principe zou je een programma als volgt kunnen schrijven

pROgrAm MYproGRaM
..
enD mYPrOgrAM
 

Het is aan de goede programmeur om zulke lelijke keuzes te vermijden.

Hallo Wereld

Elk Fortran-programma moet end als laatste verklaring bevatten. Daarom ziet het eenvoudigste Fortran-programma er als volgt uit:

end
 

Hier zijn enkele voorbeelden van "hallo, wereld" -programma's:

print *, "Hello, world" 
end
 

Met write :

write(*,*) "Hello, world"
end
 

Voor de duidelijkheid is het nu gebruikelijk om de program instructie te gebruiken om een programma te starten en een naam te geven. Het end statement kan dan verwijzen naar deze naam zodat het duidelijk wat hij bedoelt, en laat de compiler controleert u de code op juistheid. Verder moeten alle Fortran-programma's een implicit none verklaring bevatten. Een minimaal Fortran-programma zou er dus eigenlijk als volgt moeten uitzien:

program hello
  implicit none
  write(*,*) 'Hello world!'
end program hello
 

De volgende logische stap vanaf dit punt is hoe het resultaat van het hallo wereldprogramma te zien is. Deze sectie laat zien hoe dat te bereiken in een Linux-achtige omgeving. We nemen aan dat u enkele basisbegrippen van shell-opdrachten hebt , vooral dat u weet hoe u bij de shell-terminal kunt komen. We gaan er ook van uit dat je je fortran omgeving al hebt ingesteld . Gebruik de teksteditor van uw voorkeur (kladblok, kladblok ++, vi, vim, emacs, gedit, kate, enz.), Sla het bovenstaande programma hallo (kopiëren en plakken) op in een bestand met de naam hello.f90 in uw thuismap. hello.f90 is uw bronbestand. Ga vervolgens naar de opdrachtregel en ga naar de map (basismap?) Waar u uw bronbestand hebt opgeslagen en typ vervolgens de volgende opdracht:

>gfortran -o hello hello.f90
 

U hebt zojuist uw uitvoerbare programma voor de wereld gemaakt. In technische termen heeft u zojuist uw programma samengesteld. Typ de volgende opdracht om het uit te voeren:

>./hello
 

U zou de volgende regel op uw shell-terminal moeten zien afdrukken.

> Hello world!
 

Gefeliciteerd, u hebt zojuist het programma "Hallo wereld" geschreven, samengesteld en uitgevoerd.

Installatie of instellingen

Fortran is een taal die kan worden samengesteld met behulp van compilers die door veel leveranciers worden geleverd. Verschillende compilers zijn beschikbaar voor verschillende hardwareplatforms en besturingssystemen. Sommige compilers zijn gratis software, sommige kunnen gratis worden gebruikt en sommige vereisen de aanschaf van een licentie.

De meest voorkomende gratis Fortran-compiler is GNU Fortran of Gfortran. De broncode is beschikbaar via GNU als onderdeel van GCC, de GNU-compilercollectie. Binaries voor veel besturingssystemen zijn beschikbaar op https://gcc.gnu.org/wiki/GFortranBinaries . Linux-distributies bevatten vaak gfortran in hun pakketmanager.

Verdere compilers zijn bijvoorbeeld beschikbaar:

Op HPC-systemen zijn vaak gespecialiseerde compilers beschikbaar door de systeemprovider, zoals bijvoorbeeld de IBM- of Cray- compilers.

Al deze compilers ondersteunen de Fortran 95-standaard. Een overzicht van de Fortran 2003-status en de Fortran 2008-status door verschillende compilers wordt aangeboden door het ACM Fortran Forum en beschikbaar in de Fortran Wiki.

Kwadratische vergelijking

Tegenwoordig wordt Fortran voornamelijk gebruikt voor numerieke berekeningen. Dit zeer eenvoudige voorbeeld illustreert de basisprogrammastructuur om kwadratische vergelijkingen op te lossen:

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