Hoe te programmeren in Fortran (met afbeeldingen)

Inhoudsopgave:

Hoe te programmeren in Fortran (met afbeeldingen)
Hoe te programmeren in Fortran (met afbeeldingen)

Video: Hoe te programmeren in Fortran (met afbeeldingen)

Video: Hoe te programmeren in Fortran (met afbeeldingen)
Video: Working With Evernote | Ep 24 | Duplicating a Note 2024, April
Anonim

Veel mensen zien Fortran als een archaïsche en "dode" programmeertaal. De meeste wetenschappelijke en technische code is echter geschreven in Fortran. Als zodanig blijft programmeren in F77 en F90 een noodzakelijke vaardigheid voor de meeste technische programmeurs. Bovendien stellen de nieuwste Fortran-standaarden (2003, 2008, 2015) de programmeur in staat om zeer efficiënte code te schrijven met minimale inspanning, terwijl alle moderne taalfuncties worden gebruikt, zoals OOP (objectgeoriënteerd programmeren). FORTRAN is een acroniem voor "FORmula TRANslation", en is het meest geschikt voor wiskundige en numerieke toepassingen in plaats van grafische of databasetoepassingen. De meeste fortran-codes nemen tekstinvoer uit een bestand of opdrachtregel in plaats van uit een menu of GUI-interface.

Stappen

Deel 1 van 4: Een eenvoudig programma schrijven en samenstellen

Fortran hallo wereld programma schrijven gecorrigeerd
Fortran hallo wereld programma schrijven gecorrigeerd

Stap 1. Schrijf een "Hello World" programma

Dit is meestal het eerste programma dat in welke taal dan ook schrijft, en het drukt gewoon "Hallo wereld" op het scherm. Schrijf de volgende code in een teksteditor en sla deze op als helloworld.f. Let op dat er precies 6 spaties voor elke regel moeten staan.

programma helloworld impliciet geen karakter*13 hello_string hello_string = "Hallo, wereld!" schrijf (*) hello_string eindprogramma helloworld

Tip: De spaties zijn alleen nodig in versies van Fortran tot FORTRAN 77. Als je een nieuwere versie gebruikt, kun je de spaties weglaten. Compileer programma's van een nieuwere versie met f95, niet met f77; gebruik.f95 als bestandsextensie in plaats van alleen.f.

Stap 2. Compileer het programma

Typ hiervoor f77 helloworld.f in de opdrachtregel. Als dit een foutmelding geeft, heb je waarschijnlijk nog geen Fortran-compiler zoals bijvoorbeeld gfortran geïnstalleerd.

Fortran hallo wereld compileer run
Fortran hallo wereld compileer run

Stap 3. Voer uw programma uit

De compiler heeft een bestand gemaakt met de naam a.out. Voer dit bestand uit door./a.out te typen.

Stap 4. Begrijp wat je zojuist hebt geschreven

  • programma helloworld

    geeft de start van het programma "helloworld" aan. evenzo,

    einde programma helloworld

  • geeft zijn einde aan.
  • Als u geen variabeletype declareert, behandelt Fortran standaard een variabele met een naam die begint met een letter van i tot n als geheel getal en alle andere als een reëel getal. Het wordt aanbevolen om te gebruiken:

    impliciet geen

  • als je dat gedrag niet nodig hebt.
  • karakter*13 hallo_string

  • declareert een reeks tekens die hello_string wordt genoemd.
  • hello_string = "Hallo wereld!"

  • kent de waarde "Hallo, wereld!" naar de gedeclareerde array. In tegenstelling tot andere talen zoals C, kan dit niet op dezelfde regel worden gedaan als het declareren van de array.
  • schrijf (*, *) hallo_string

  • drukt de waarde van hello_string af naar de standaarduitvoer. De eerste * betekent schrijven naar standaarduitvoer, in tegenstelling tot een bestand. De tweede * betekent dat er geen speciale opmaak moet worden gebruikt.
Fortran comments
Fortran comments

Stap 5. Voeg een opmerking toe

Dit is niet nodig in zo'n eenvoudig programma, maar het zal handig zijn als je iets complexers schrijft, dus je moet weten hoe je ze moet toevoegen. Er zijn twee manieren om een opmerking toe te voegen.

  • Om een opmerking toe te voegen die alleen een hele regel heeft, schrijft u een c rechtstreeks in een nieuwe regel, zonder de 6 spaties. Schrijf daarna je reactie. U moet een spatie tussen de c en uw commentaar laten voor een betere leesbaarheid, maar dit is niet vereist. Let op: u moet een ! in plaats van een c in Fortran 95 en nieuwer.
  • Om een opmerking in dezelfde regel als code toe te voegen, voegt u een ! waar u wilt dat uw opmerking begint. Nogmaals, een spatie is niet vereist, maar verbetert de leesbaarheid.

Deel 2 van 4: Input en If-constructies gebruiken

Fortran data types
Fortran data types

Stap 1. Begrijp verschillende gegevenstypen

  • INTEGER wordt gebruikt voor gehele getallen, zoals 1, 3 of -3.
  • REAL kan ook een getal bevatten dat niet geheel is, zoals 2,5.
  • COMPLEX wordt gebruikt om complexe getallen op te slaan. Het eerste getal is het reële en het tweede het imaginaire deel.
  • KARAKTER wordt gebruikt voor tekens, zoals letters of leestekens.
  • LOGICAL kan ofwel.true zijn. of.false.. Dit is vergelijkbaar met het booleaanse type in andere programmeertalen.

Stap 2. Vraag de input van de gebruiker

In het "Hallo wereld"-programma dat u eerder schreef, zou het nutteloos zijn om gebruikersinvoer te krijgen. Open dus een nieuw bestand en noem het compnum.f. Als je klaar bent, zal het de gebruiker vertellen of het getal dat ze hebben ingevoerd positief, negatief of gelijk aan nul is.

  • Voer de regels programma compnum en eindprogramma compnum in.
  • Declareer vervolgens een variabele van het type REAL. Zorg ervoor dat uw aangifte tussen het begin en het einde van het programma staat.
  • Leg de gebruiker uit wat hij moet doen. Schrijf wat tekst met de schrijffunctie.
  • Lees de invoer van de gebruiker in de variabele die u hebt gedeclareerd met de leesfunctie.

programma compnum echt r schrijven (*, *) "Vul een reëel getal in:" lezen (*, *) r programma beëindigen

Fortran als constructie
Fortran als constructie

Stap 3. Verwerk de input van de gebruiker met een if-constructie

Zet het tussen de

lees (*, *) r

en de

programma beëindigen

  • Vergelijking wordt gedaan met.gt. (groter dan),.lt. (kleiner dan) en.eq. (gelijk aan) in Fortran.
  • Fortran ondersteunt als, anders als, en anders
  • Een Fortran if-constructie eindigt altijd met end if.

als (r.gt. 0) schrijf dan (*, *) "Dat getal is positief." anders als (r.lt. 0) schrijf dan (*, *) "Dat getal is negatief." schrijf anders (*, *) "Dat getal is 0." stop als

Tip: U hoeft code binnen if-constructies niet met meer spaties te laten inspringen, maar het verbetert de leesbaarheid.

Fortran nummer check programma test
Fortran nummer check programma test

Stap 4. Compileer en voer uw programma uit

Voer een aantal cijfers in om het te testen. Als u een letter invoert, wordt er een fout weergegeven, maar dat is niet erg, want het programma controleert niet of de invoer een letter, een cijfer of iets anders is.

Deel 3 van 4: Loops en arrays gebruiken

Stap 1. Open een nieuw bestand

Aangezien dit concept anders is, zul je opnieuw een nieuw programma moeten schrijven. Noem het bestand addmany.f. Voer de bijbehorende programma- en eindprogramma-instructies in, evenals een impliciete geen. Als je klaar bent, zal dit programma 10 getallen lezen en hun som afdrukken.

Stap 2. Declareer een array met lengte 10

Hier sla je de nummers op. Aangezien u waarschijnlijk een som van reële getallen wilt, moet u de array als reëel declareren. Je declareert zo'n array met

echte getallen(50)

(getallen is de naam van de array, geen uitdrukking).

Stap 3. Declareer enkele variabelen

Declareer numSum als een reëel getal. Je zult het later gebruiken om de som op te slaan, maar aangezien de som al door een Fortran-expressie wordt gebruikt, moet je een naam zoals numSum gebruiken. Zet het op 0. Verklaar i als een geheel getal en wijs het nog geen waarde toe. Dat gebeurt in de do-loop.

Stap 4. Maak een do-loop

Het equivalent van dat in andere programmeertalen zou een for-loop zijn.

  • Een do-loop begint altijd met do.
  • Op dezelfde regel als de do, daarvan gescheiden door een spatie, staat het label waarnaar het programma zal gaan als het klaar is. Voor nu, schrijf gewoon een 1, je stelt het label later in.
  • Typ daarna, weer alleen gescheiden door een spatie,

    ik = 1, 10

    . Hierdoor gaat de variabele i, die je voor de lus had gedeclareerd, van 1 naar 10 in stappen van 1. De stappen worden niet genoemd in deze uitdrukking, dus Fortran gebruikt de standaardwaarde van 1. Je had ook kunnen schrijven

    ik = 1, 10, 1

  • Plaats wat code in de lus (inspringen met spaties voor betere leesbaarheid). Voor dit programma moet je de variabele numSum verhogen met het i-de element van de array-nummers. Dit wordt gedaan met de uitdrukking

    numSum = numSum + getal (i)

  • Beëindig de lus met een continue instructie met een label. Typ slechts 4 spaties. Typ daarna een 1. Dat is het label waar de do-loop naartoe moet gaan nadat deze is voltooid. Typ vervolgens een spatie en ga verder. De continue expressie doet niets, maar het geeft een goede plek om een label te plaatsen, en laat ook zien dat de do-loop is geëindigd.

Je do-lus zou er nu als volgt uit moeten zien:

doe 1 i = 1, 10 numSum = numSum + getallen(i) 1 doorgaan

Tip: In Fortran 95 en nieuwer hoeft u geen labels te gebruiken. Plaats er gewoon geen in het do-statement en beëindig de lus met "end do" in plaats van "continue".

Fortran do loop code
Fortran do loop code

Stap 5. Druk numSum af

Het zou ook logisch zijn om wat context te geven, bijvoorbeeld "De som van uw getallen is:". Gebruik voor beide de schrijffunctie. Uw volledige code zou er nu als volgt uit moeten zien:

programma addmany impliciet geen reële getallen (10) real numSum integer i numSum = 0 schrijf (*, *) "Voer 10 getallen in:" lees (*, *) getallen doe 1 i = 1, 10 numSum = numSum + getallen(i) 1 verder schrijven (*, *) "Hun som is:" schrijven (*, *) numSum eindprogramma addmany

Fortran nummers toevoegen code test
Fortran nummers toevoegen code test

Stap 6. Compileer en voer uw code uit

Vergeet het niet te testen. U kunt op ↵ Enter drukken na elk nummer dat u invoert, of u kunt veel cijfers op dezelfde regel invoeren en deze met een spatie scheiden.

Deel 4 van 4: Geavanceerde concepten begrijpen

Programma in Fortran Stap 13
Programma in Fortran Stap 13

Stap 1. Zorg dat je een goed idee hebt van wat je programma gaat doen

Denk na over wat voor soort gegevens nodig zijn als invoer, hoe u de uitvoer kunt structureren en voeg wat tussentijdse uitvoer toe, zodat u de voortgang van uw berekening kunt volgen. Dit is erg handig als u weet dat uw berekening lang zal duren of meerdere ingewikkelde stappen omvat.

Fortran-referentiewebsite screenshot
Fortran-referentiewebsite screenshot

Stap 2. Zoek een goede Fortran-referentie

Fortran heeft veel meer functies dan in dit artikel wordt uitgelegd, en ze kunnen nuttig zijn voor het programma dat u wilt schrijven. Een referentie somt alle functies op die een programmeertaal heeft. Dit is er een voor Fortran 77 en dit is er een voor Fortran 90/95.

Fortran-subroutines voorbeeld
Fortran-subroutines voorbeeld

Stap 3. Leer over subroutines en functies

Tekenreeks in Fortran-formaat voorbeeld
Tekenreeks in Fortran-formaat voorbeeld

Stap 4. Leer hoe u van/naar bestanden kunt lezen en schrijven

Leer ook hoe u uw invoer/uitvoer kunt formatteren.

Modern fortran voorbeeld screenshot
Modern fortran voorbeeld screenshot

Stap 5. Leer meer over de nieuwe functies van Fortran 90/95 en nieuwer

Sla deze stap over als u weet dat u alleen Fortran 77-code gaat schrijven/onderhouden.

Onthoud dat Fortran 90 de "Free Form"-broncode heeft geïntroduceerd, waardoor code kan worden geschreven zonder spaties en zonder de limiet van 72 tekens

Fortran boek online screenshot
Fortran boek online screenshot

Stap 6. Lees of zoek enkele boeken op over wetenschappelijk programmeren

Het boek "Numerical Recipes in Fortran" is bijvoorbeeld zowel een goede tekst over wetenschappelijke programmeeralgoritmen als een goede introductie tot het samenstellen van codes. Meer recente edities bevatten hoofdstukken over programmeren in een gemengde taalomgeving en parallel programmeren. Een ander voorbeeld is "Modern Fortran in Practice", geschreven door Arjen Markus. Het boek geeft inzicht in het schrijven van Fortran-programma's in eenentwintigste-eeuwse stijl volgens de nieuwste Fortran-normen.

Fortran compileert programma over meerdere bestanden
Fortran compileert programma over meerdere bestanden

Stap 7. Leer hoe u een programma kunt compileren dat over meerdere bestanden is verdeeld

Laten we aannemen dat je Fortran-programma is verspreid over de bestanden main.f en morestuff.f, en dat je wilt dat het resulterende binaire bestand de naam allstuff krijgt. Vervolgens moet u de volgende opdrachten in de opdrachtregel schrijven:

f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f

Voer het bestand vervolgens uit door./allstuff te typen.

Tip: Dit werkt op dezelfde manier met nieuwere versies van Fortran. Vervang gewoon.f door de juiste extensie en f77 door de juiste compilerversie.

Stap 8. Gebruik de optimalisatie die uw compiler biedt

De meeste compilers bevatten optimalisatie-algoritmen die de efficiëntie van uw code verbeteren. Deze worden meestal ingeschakeld door een -O, -O2 of -O3-vlag op te nemen bij het compileren (wederom afhankelijk van uw versie van fortran).

  • Over het algemeen is het laagste niveau -O of -O2 het beste. Houd er rekening mee dat het gebruik van de meer agressieve optimalisatie-optie fouten in complexe codes kan introduceren en zelfs de zaken kan vertragen! Test je code.

    Tips

    • Begin met kleine programma's. Wanneer u uw eigen code maakt, probeer dan het meest essentiële deel van het probleem te identificeren - is het de gegevensinvoer of het aanroepen van de functies, de structuur van de lus (dit zijn enkele zeer elementaire voorbeelden) en begin vanaf daar. Bouw daar dan in kleine stappen op voort.
    • Fortran is niet hoofdlettergevoelig. U kunt bijvoorbeeld een variabele "real Num" declareren en "num = 1" in de volgende regel schrijven om er een waarde aan toe te kennen. Maar dat is een slechte stijl, dus vermijd het. Wat nog belangrijker is, Fortran geeft ook niet om het geval van functies en verklaringen. Het is vrij gebruikelijk om functies en instructies in HOOFDLETTERS en variabelen in kleine letters te schrijven.
    • EMACS is een goede gratis teksteditor om te gebruiken in plaats van Kladblok.
    • In het begin vind je het misschien makkelijker om een online IDE (geïntegreerde ontwikkelomgeving) te gebruiken. Een goede optie is Coding Ground. Je vindt er een veelvoud aan programmeertalen, waaronder Fortran-95. Een andere optie is Ideone.

Aanbevolen: