Hoe om te programmeer in Fortran (met foto's)

INHOUDSOPGAWE:

Hoe om te programmeer in Fortran (met foto's)
Hoe om te programmeer in Fortran (met foto's)

Video: Hoe om te programmeer in Fortran (met foto's)

Video: Hoe om te programmeer in Fortran (met foto's)
Video: Working With Evernote | Ep 24 | Duplicating a Note 2024, April
Anonim

Baie mense beskou Fortran as 'n argaïese en 'dooie' programmeertaal. Die meeste wetenskaplike en ingenieurswese -kode is egter in Fortran geskryf. As sodanig bly programmering in F77 en F90 'n noodsaaklike vaardigheid vir die meeste tegniese programmeerders. Boonop stel die nuutste Fortran-standaarde (2003, 2008, 2015) die programmeerder in staat om hoogs doeltreffende kode met minimale inspanning te skryf, terwyl hy al die moderne taalkenmerke gebruik, soos OOP (objekgeoriënteerde programmering). FORTRAN is 'n akroniem vir "FORmula TRANslation", en is die beste geskik vir wiskundige en numeriese toepassings eerder as grafiese of databasistoepassings. Die meeste fortrankodes neem teksinvoer uit 'n lêer of opdragreël eerder as uit 'n spyskaart of GUI-koppelvlak.

Stappe

Deel 1 van 4: Skryf en saamstel van 'n eenvoudige program

Fortran hallo wêreldprogram skryf corrected
Fortran hallo wêreldprogram skryf corrected

Stap 1. Skryf 'n "Hello World" program

Dit is gewoonlik die eerste program wat in enige taal geskryf is, en dit druk slegs 'Hallo wêreld' op die skerm. Skryf die volgende kode in enige teksredakteur en stoor dit as helloworld.f. Let daarop dat daar presies 6 spasies voor elke reël moet wees.

program helloworld implisiete geen karakter*13 hello_string hello_string = "Hallo, wêreld!" skryf (*, *) hello_string eindprogram helloworld

Wenk: Die spasies is slegs nodig in weergawes van Fortran tot FORTRAN 77. As u 'n nuwer weergawe gebruik, kan u die spasies laat val. Stel programme op uit nuwer weergawe met f95, nie f77 nie; gebruik.f95 as die lêeruitbreiding in plaas van net.f.

Stap 2. Stel die program saam

Om dit te doen, tik f77 helloworld.f in die opdragreël. As dit 'n fout gee, het u waarskynlik nog nie 'n Fortran -samesteller soos byvoorbeeld gfortran geïnstalleer nie.

Fortran hello world compile run
Fortran hello world compile run

Stap 3. Begin u program

Die samesteller het 'n lêer genaamd a.out. Begin hierdie lêer deur./a.out te tik.

Stap 4. Verstaan wat u so pas geskryf het

  • program helloworld

    dui die begin van die program "helloworld" aan. Net so,

    beëindig program helloworld

  • dui die einde daarvan aan.
  • As u nie 'n veranderlike tipe verklaar nie, behandel Fortran standaard 'n veranderlike met 'n naam wat begin met 'n letter van i tot n as 'n heelgetal en alle ander as 'n reële getal. Dit word aanbeveel om te gebruik

    implisiete geen

  • as u nie hierdie gedrag nodig het nie.
  • karakter*13 hallo_snaar

  • verklaar 'n verskeidenheid karakters wat hello_string genoem word.
  • hello_string = "Hallo, wêreld!"

  • ken die waarde "Hallo, wêreld!" na die verklaarde skikking. Anders as in ander tale soos C, kan dit nie op dieselfde lyn as die verklaring van die skikking gedoen word nie.
  • skryf (*, *) hello_string

  • druk die waarde van hello_string na die standaarduitset. Die eerste * beteken om na standaarduitset te skryf, in teenstelling met sommige lêers. Die tweede * beteken dat u geen spesiale opmaak moet gebruik nie.
Fortran comments
Fortran comments

Stap 5. Voeg 'n opmerking by

Dit is nie nodig in so 'n eenvoudige program nie, maar dit sal handig wees as u iets ingewikkelder skryf, dus u moet weet hoe u dit kan byvoeg. Daar is twee maniere om 'n opmerking by te voeg.

  • Om 'n opmerking met 'n hele reël op sigself by te voeg, skryf 'n c direk in 'n nuwe reël, sonder die 6 spasies. Skryf daarna u kommentaar. U moet 'n spasie tussen die c en u opmerking laat vir 'n beter leesbaarheid, maar dit is nie nodig nie. Let daarop dat u 'n! in plaas van 'n c in Fortran 95 en nuwer.
  • Om 'n opmerking in dieselfde reël as kode by te voeg, voeg a! waar u wil hê dat u kommentaar moet begin. Weereens, 'n spasie is nie nodig nie, maar dit verbeter die leesbaarheid.

Deel 2 van 4: Gebruik insette en as-konstruksies

Fortran data types
Fortran data types

Stap 1. Verstaan verskillende datatipes

  • INTEGER word gebruik vir heelgetalle, soos 1, 3 of -3.
  • REAL kan ook 'n getal bevat wat nie heel is nie, soos 2.5.
  • COMPLEX word gebruik om komplekse getalle te stoor. Die eerste getal is die werklike en die tweede die denkbeeldige deel.
  • KARAKTER word gebruik vir karakters, soos letters of leestekens.
  • LOGIES kan óf.waar wees. of.false.. Dit is soos die booleaanse tipe in ander programmeertale.

Stap 2. Kry die gebruiker se insette

In die 'Hallo wêreld' -program wat u voorheen geskryf het, is dit nutteloos om gebruikersinvoer te kry. Maak dus 'n nuwe lêer oop en noem dit compnum.f. As u klaar is, sal die gebruiker weet of die getal wat hy ingevoer het positief, negatief of gelyk aan nul is.

  • Voer die reëls program compnum in en eindig program compnum.
  • Verklaar dan 'n veranderlike van die tipe REAL. Maak seker dat u verklaring tussen die begin en die einde van die program is.
  • Verduidelik die gebruiker wat hy moet doen. Skryf teks met die skryffunksie.
  • Lees die invoer van die gebruiker in die veranderlike wat u verklaar het met die leesfunksie.

program compnum real r skryf (*, *) "Voer 'n reële getal in:" lees (*, *) r beëindig program

Fortran if construction
Fortran if construction

Stap 3. Verwerk die invoer van die gebruiker met 'n if-konstruksie

Sit dit tussen die

lees (*, *) r

en die

program eindig

  • Vergelyking word gedoen met.gt. (groter as),.lt. (minder as) en.ekv. (gelyk) in Fortran.
  • Fortran ondersteun if, else if, and else
  • 'N Fortran as-konstruksie eindig altyd met die einde as.

as (r. 0) skryf dan (*, *) "Die getal is positief." anders as (r.lt. 0) dan skryf (*, *) "Die getal is negatief." anders skryf (*, *) "Die getal is 0." eindig as

Wenk: U hoef nie die kode binne-in as-konstruksies met meer spasies in te trek nie, maar dit verbeter die leesbaarheid.

Fortran nommer kontrole program test
Fortran nommer kontrole program test

Stap 4. Stel u program saam en voer dit uit

Voer 'n paar getalle in om dit te toets. As u 'n letter invoer, sal dit 'n fout oplewer, maar dit is goed, want die program kyk nie of die invoer 'n letter, 'n getal of iets anders is nie.

Deel 3 van 4: Die gebruik van lusse en skikkings

Stap 1. Maak 'n nuwe lêer oop

Aangesien hierdie konsep anders is, moet u weer 'n nuwe program skryf. Noem die lêer addmany.f. Voeg die ooreenstemmende program- en eindprogramverklarings in, asook 'n implisiete geen. As u klaar is, lees hierdie program 10 nommers en druk hulle som.

Stap 2. Gee 'n skikking van lengte 10

Dit is waar u die nommers sal stoor. Aangesien u waarskynlik 'n som van reële getalle wil hê, moet u die skikking as werklik verklaar. U verklaar so 'n skikking met

reële getalle (50)

(getalle is die naam van die skikking, nie 'n uitdrukking nie).

Stap 3. Gee 'n paar veranderlikes

Verklaar numSum as 'n reële getal. U sal dit later gebruik om die som op te slaan, maar aangesien die som reeds deur 'n Fortran -uitdrukking geneem word, moet u 'n naam soos numSum gebruik. Stel dit op 0. Verklaar i as 'n heelgetal en ken dit nog nie toe nie. Dit sal in die do-lus gedoen word.

Stap 4. Skep 'n do-lus

Die ekwivalent daarvan in ander programmeertale is 'n voor-lus.

  • 'N Do-lus begin altyd met doen.
  • Op dieselfde lyn as die do, geskei daarvan deur 'n spasie, is die etiket waarna die program sal gaan wanneer dit klaar is. Skryf vir eers 'n 1, u sal die etiket later stel.
  • Tik daarna weer slegs deur 'n spasie geskei

    ek = 1, 10

    . Dit sal die veranderlike i, wat u voor die lus verklaar het, van 1 tot 10 in stappe van 1. Die stappe word nie in hierdie uitdrukking genoem nie, dus gebruik Fortran die standaardwaarde van 1. U kon ook geskryf het

    ek = 1, 10, 1

  • Plaas 'n paar kode in die lus (inspring met spasies vir beter leesbaarheid). Vir hierdie program moet u die veranderlike numSum verhoog met die i-de element van die skikkinggetalle. Dit word gedoen met die uitdrukking

    numSum = numSum + getal (i)

  • Beëindig die lus met 'n voortgesette stelling met 'n etiket. Tik slegs 4 spasies in. Tik daarna 'n 1. Dit is die etiket waarop u die do-loop gesê het om te gaan nadat dit klaar is. Tik dan 'n spasie en gaan voort. Die voortdurende uitdrukking doen niks, maar dit gee 'n goeie plek om 'n etiket te plaas, asook om aan te dui dat die do-loop geëindig het.

Jou do loop moet nou so lyk:

doen 1 i = 1, 10 numSum = numSum + getalle (i) 1 gaan voort

Wenk: In Fortran 95 en nuwer hoef u nie etikette te gebruik nie. Moet net nie een in die do -verklaring plaas nie en eindig die lus met 'end do' in plaas van 'continue'.

Fortran do loop code
Fortran do loop code

Stap 5. Druk numSum

Dit sal ook sinvol wees om 'n konteks te gee, byvoorbeeld "Die som van u getalle is:". Gebruik die skryffunksie vir beide. U hele kode moet nou soos volg lyk:

program byvoeg baie implisiete geen reële getalle (10) reële numSum heelgetal i numSum = 0 skryf (*, *) "Voer 10 getalle in:" lees (*, *) getalle doen 1 i = 1, 10 numSum = numSum + getalle (i) 1 gaan voort met skryf (*, *) "Hul som is:" skryf (*, *) numSum eindprogram addmany

Fortran voeg getalle kode test by
Fortran voeg getalle kode test by

Stap 6. Stel u kode saam en voer dit uit

Moenie vergeet om dit te toets nie. U kan óf op ↵ Tik druk na elke getal wat u invoer, óf baie getalle op dieselfde reël invoer en dit met 'n spasie skei.

Deel 4 van 4: Begrip van gevorderde konsepte

Program in Fortran Stap 13
Program in Fortran Stap 13

Stap 1. Het 'n goeie idee van wat u program gaan doen

Dink na oor watter soort data nodig is as invoer, hoe om die uitset te struktureer, en sluit 'n mate van tussenuitset in, sodat u die vordering van u berekening kan monitor. Dit sal baie handig wees as u weet dat u berekening vir 'n lang tyd sal duur of as dit ingewikkelde stappe behels.

Fortran -verwysingswebwerf screenshot
Fortran -verwysingswebwerf screenshot

Stap 2. Soek 'n goeie Fortran -verwysing

Fortran het baie meer funksies as wat in hierdie artikel verduidelik word, en dit kan nuttig wees vir die program wat u wil skryf. 'N Verwysing bevat alle funksies wat 'n programmeertaal het. Dit is een vir Fortran 77 en hierdie een vir Fortran 90/95.

Fortran subroutines example
Fortran subroutines example

Stap 3. Leer meer oor subroutines en funksies

Fortran -formaat string voorbeeld
Fortran -formaat string voorbeeld

Stap 4. Leer hoe om van/na lêers te lees en te skryf

Leer ook hoe u u invoer/uitset kan formateer.

Moderne fortran -voorbeeld screenshot
Moderne fortran -voorbeeld screenshot

Stap 5. Leer meer oor die nuwe funksies van Fortran 90/95 en nuwer

Slaan hierdie stap oor as u weet dat u slegs die Fortran 77 -kode sal skryf/onderhou.

Onthou dat Fortran 90 die bronkode "Free Form" bekendgestel het, sodat kode sonder die spasies en sonder die limiet van 72 tekens geskryf kan word

Fortran boek aanlyn screenshot
Fortran boek aanlyn screenshot

Stap 6. Lees of soek 'n paar boeke oor wetenskaplike programmering

Die boek "Numeriese resepte in Fortran" is byvoorbeeld 'n goeie teks oor wetenskaplike programmeringsalgoritmes en 'n goeie inleiding tot die samestelling van kodes. Meer onlangse uitgawes bevat hoofstukke oor hoe om te programmeer in 'n gemengde taalomgewing en parallelle programmering. 'N Ander voorbeeld is' Modern Fortran in Practice ', geskryf deur Arjen Markus. Die boek gee 'n insig in hoe u Fortran-programme in die een-en-twintigste-eeuse styl skryf volgens die nuutste Fortran-standaarde.

Fortran stel program op oor verskeie lêers
Fortran stel program op oor verskeie lêers

Stap 7. Leer hoe om 'n program saam te stel wat oor verskeie lêers versprei is

Kom ons neem aan dat u Fortran -program versprei is oor die lêers main.f en morestuff.f, en dat u wil hê dat die gevolglike binêre allstuff genoem word. Dan moet u die volgende opdragte in die opdragreël skryf:

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

Begin dan die lêer deur./allstuff in te tik.

Wenk: Dit werk op dieselfde manier met nuwer weergawes van Fortran. Vervang net.f met die korrekte uitbreiding en f77 met die korrekte samestellerweergawe.

Stap 8. Gebruik die optimalisering wat u samesteller bied

Die meeste samestellers bevat optimaliseringsalgoritmes wat die doeltreffendheid van u kode verbeter. Dit word gewoonlik aangeskakel deur 'n -O-, -O2- of -O3 -vlag in te sluit tydens die opstel (weer afhangend van u weergawe van fortran).

  • Oor die algemeen is die laagste vlak -O of -O2 -vlak die beste. Hou in gedagte dat die gebruik van die meer aggressiewe optimaliseringsopsie foute in komplekse kodes kan veroorsaak en selfs dinge kan vertraag! Toets u kode.

    Wenke

    • Begin met klein programme. As u u eie kode maak, probeer om die belangrikste deel van die probleem te identifiseer - is dit die data -invoer of die oproep van die funksies, die struktuur van die lus (dit is 'n paar elementêre voorbeelde) en begin daarvandaan. Bou dan daarop voort in klein stappe.
    • Fortran is nie hooflettergevoelig nie. U kan byvoorbeeld 'n veranderlike 'reële getal' verklaar en 'num = 1' in die volgende reël skryf om 'n waarde daaraan toe te ken. Maar dit is 'n slegte styl, so vermy dit. Belangriker nog, Fortran gee ook nie om in die geval van funksies en stellings nie. Dit is redelik algemeen om funksies en stellings in hoofletters en veranderlikes in kleinletters te skryf.
    • EMACS is 'n goeie gratis teksredakteur om te gebruik in plaas van Notepad.
    • Miskien vind u dit aanvanklik makliker om 'n aanlyn IDE (geïntegreerde ontwikkelingsomgewing) te gebruik. 'N Goeie opsie is Coding Ground. U vind daar 'n menigte programmeertale, waaronder Fortran-95. 'N Ander opsie is Ideone.

Aanbeveel: