Hur man programmerar i Fortran (med bilder)

Innehållsförteckning:

Hur man programmerar i Fortran (med bilder)
Hur man programmerar i Fortran (med bilder)

Video: Hur man programmerar i Fortran (med bilder)

Video: Hur man programmerar i Fortran (med bilder)
Video: Working With Evernote | Ep 24 | Duplicating a Note 2024, April
Anonim

Många uppfattar Fortran som ett föråldrat och "dött" programmeringsspråk. Den mest vetenskapliga och tekniska koden är dock skriven i Fortran. Som sådan förblir programmering i F77 och F90 en nödvändig färdighet för de flesta tekniska programmerare. Dessutom tillåter de senaste Fortran-standarderna (2003, 2008, 2015) programmeraren att skriva mycket effektiv kod med minimal ansträngning, samtidigt som alla moderna språkfunktioner används, till exempel OOP (objektorienterad programmering). FORTRAN är en förkortning för "FORmula TRANslation", och är bäst lämpad för matematiska och numeriska applikationer snarare än grafik- eller databasapplikationer. De flesta fortrankoder tar textinmatning från en fil eller kommandorad snarare än från en meny eller ett GUI-gränssnitt.

Steg

Del 1 av 4: Skriva och sammanställa ett enkelt program

Fortran hej världsprogram skriv korrigerad
Fortran hej världsprogram skriv korrigerad

Steg 1. Skriv ett "Hello World" -program

Detta är vanligtvis det första programmet som skriver på något språk, och det skriver bara ut "Hej världen" på skärmen. Skriv följande kod i valfri textredigerare och spara den som helloworld.f. Var uppmärksam på att det måste finnas exakt 6 mellanslag framför varje rad.

program helloworld implicit inget tecken*13 hello_string hello_string = "Hej, värld!" skriv (*, *) hello_string avsluta programmet helloworld

Dricks: Mellanslagen är bara nödvändiga i versioner av Fortran upp till FORTRAN 77. Om du använder en nyare version kan du släppa mellanslag. Kompilera program från nyare version med f95, inte f77; använd.f95 som filtillägg istället för bara.f.

Steg 2. Kompilera programmet

För att göra detta, skriv f77 helloworld.f i kommandoraden. Om detta ger ett fel har du förmodligen inte installerat en Fortran -kompilator som till exempel gfortran än.

Fortran Hello World Compile Run
Fortran Hello World Compile Run

Steg 3. Kör ditt program

Kompilatorn har tagit fram en fil som heter a.out. Kör den här filen genom att skriva./a.out.

Steg 4. Förstå vad du just skrev

  • program helloworld

    indikerar starten av programmet "helloworld". Liknande,

    avsluta programmet helloworld

  • indikerar dess slut.
  • Som standard, om du inte deklarerar en variabeltyp, behandlar Fortran en variabel med ett namn som börjar med en bokstav från i till n som heltal och alla andra som ett reellt tal. Det rekommenderas att använda

    implicit ingen

  • om du inte behöver det beteendet.
  • tecken*13 hallo_sträng

  • deklarerar en rad tecken som kallas hello_string.
  • hello_string = "Hej, värld!"

  • tilldelar värdet "Hej, värld!" till den deklarerade matrisen. Till skillnad från andra språk som C, kan detta inte göras på samma rad som att deklarera arrayen.
  • skriv (*, *) hello_string

  • skriver ut värdet av hello_string till standardutmatningen. Den första * betyder att skriva till standardutmatning, i motsats till någon fil. Den andra * betyder att du inte ska använda någon speciell formatering.
Fortran comments
Fortran comments

Steg 5. Lägg till en kommentar

Detta är inte nödvändigt i ett så enkelt program, men det kommer att vara användbart när du skriver något mer komplext, så du borde veta hur du lägger till dem. Det finns två sätt att lägga till en kommentar.

  • Om du vill lägga till en kommentar som har en hel rad på egen hand skriver du c direkt i en ny rad, utan de sex mellanslagen. Efter det, skriv din kommentar. Du bör lämna ett mellanrum mellan c och din kommentar för bättre läsbarhet, men detta krävs inte. Observera att du måste använda en! istället för c i Fortran 95 och nyare.
  • För att lägga till en kommentar på samma rad som kod, lägg till en! där du vill att din kommentar ska börja. Återigen krävs inte ett utrymme, men förbättrar läsbarheten.

Del 2 av 4: Användning av inmatning och If-konstruktioner

Fortran datatyper
Fortran datatyper

Steg 1. Förstå olika datatyper

  • INTEGER används för heltal, som 1, 3 eller -3.
  • REAL kan också innehålla ett tal som inte är hela, som 2,5.
  • COMPLEX används för att lagra komplexa nummer. Den första siffran är den verkliga och den andra den imaginära delen.
  • KARAKTER används för tecken, som bokstäver eller skiljetecken.
  • LOGISK kan vara antingen.true. eller.false.. Detta är som den booleska typen i andra programmeringsspråk.

Steg 2. Få användarens input

I programmet "Hej världen" som du skrev tidigare skulle det vara meningslöst att få användarinmatning. Så öppna en ny fil och ge den namnet compnum.f. När du har avslutat det kommer det att berätta för användaren om antalet de angav är positivt, negativt eller lika med noll.

  • Ange raderna programkomp. Och avsluta programkomp.
  • Deklarera sedan en variabel av typen REAL. Se till att din deklaration är mellan början och slutet av programmet.
  • Förklara användaren vad de ska göra. Skriv lite text med skrivfunktionen.
  • Läs användarens inmatning i variabeln du deklarerade med läsfunktionen.

program compnum real r skriv (*, *) "Ange ett reellt tal:" läs (*, *) r avsluta programmet

Fortran if construction
Fortran if construction

Steg 3. Bearbeta användarens inmatning med en if-konstruktion

Lägg det mellan

läs (*, *) r

och den

avsluta programmet

  • Jämförelse görs med.gt. (större än),.lt. (mindre än) och.ekv. (lika) i Fortran.
  • Fortran stöder if, else if, and else
  • En Fortran if-konstruktion slutar alltid med slutet if.

om (r.gt. 0) skriv sedan (*, *) "Det talet är positivt." annars om (r.lt. 0) skriv sedan (*, *) "Det talet är negativt." annars skriva (*, *) "Det talet är 0." sluta om

Dricks: Du behöver inte infoga kod inuti if-konstruktioner med fler mellanslag, men det förbättrar läsbarheten.

Fortran nummerkontrollprogram test
Fortran nummerkontrollprogram test

Steg 4. Kompilera och kör ditt program

Ange några siffror för att testa det. Om du anger en bokstav kommer det att uppstå ett fel, men det är okej eftersom programmet inte kontrollerar om ingången är en bokstav, en siffra eller något annat.

Del 3 av 4: Använda loopar och matriser

Steg 1. Öppna en ny fil

Eftersom detta koncept är annorlunda måste du skriva ett nytt program igen. Namnge filen addmany.f. Infoga motsvarande program- och avsluta programuttalanden, samt en implicit ingen. När du är klar läser detta program 10 nummer och skriver ut deras summa.

Steg 2. Deklarera en array med längd 10

Det är här du kommer att lagra siffrorna. Eftersom du förmodligen vill ha en summa av reella tal, bör du deklarera matrisen som verklig. Du deklarerar en sådan array med

riktiga tal (50)

(siffror är namnet på matrisen, inte ett uttryck).

Steg 3. Deklarera några variabler

Deklarera numSum som ett reellt tal. Du kommer att använda den för att lagra summan senare, men eftersom summan redan tas av ett Fortran -uttryck måste du använda ett namn som numSum. Ställ in det till 0. Deklarera i som ett heltal och tilldela det inget värde ännu. Det kommer att göras i do-loop.

Steg 4. Skapa en do-loop

Motsvarande till det på andra programmeringsspråk skulle vara en for-loop.

  • En do-loop börjar alltid med do.
  • På samma rad som do, separerad från det med ett mellanslag, är etiketten som programmet kommer att gå till när det är klart. För tillfället är det bara att skriva en 1, du anger etiketten senare.
  • Efter det, bara åtskilt av ett mellanslag, skriv

    i = 1, 10

    . Detta gör att variabeln i, som du hade deklarerat före slingan, går från 1 till 10 i steg om 1. Stegen nämns inte i detta uttryck, så Fortran använder standardvärdet 1. Du kunde också ha skrivit

    i = 1, 10, 1

  • Lägg lite kod inuti slingan (indrag med mellanslag för bättre läsbarhet). För detta program bör du öka variabeln numSum med det i: e elementet i arraynumren. Detta görs med uttrycket

    numSum = numSum + nummer (i)

  • Avsluta slingan med en fortsättningssats som har en etikett. Skriv bara 4 mellanslag. Efter det skriver du en 1. Det är etiketten som du sa till do-loop att gå till när den är klar. Skriv sedan ett mellanslag och fortsätt. Fortsättningsuttrycket gör ingenting, men det ger en bra plats att placera en etikett, samt visar att do-loop tog slut.

Din do loop ska nu se ut så här:

gör 1 i = 1, 10 numSum = numSum + tal (i) 1 fortsätt

Dricks: I Fortran 95 och senare behöver du inte använda etiketter. Lägg bara inte in en i do -satsen och avsluta slingan med "end do" istället för "continue".

Fortran do loop code
Fortran do loop code

Steg 5. Skriv ut numSum

Det skulle också vara vettigt att ge lite sammanhang, till exempel "Summan av dina nummer är:". Använd skrivfunktionen för båda. Hela din kod ska nu se ut så här:

program addmany implicit inga reella tal (10) reella numSum heltal i numSum = 0 skriva (*, *) "Ange 10 nummer:" läs (*, *) tal gör 1 i = 1, 10 numSum = numSum + tal (i) 1 fortsätt skriva (*, *) "Deras summa är:" skriv (*, *) numSum slutprogram addmany

Fortran lägg till nummer kod test
Fortran lägg till nummer kod test

Steg 6. Kompilera och kör din kod

Glöm inte att testa det. Du kan antingen trycka på ↵ Enter efter varje nummer du anger eller skriva in många nummer på samma rad och separera dem med ett mellanslag.

Del 4 av 4: Förstå avancerade begrepp

Program i Fortran Steg 13
Program i Fortran Steg 13

Steg 1. Ha en bra uppfattning om vad ditt program kommer att göra

Tänk på vilken typ av data som behövs som inmatning, hur du strukturerar utmatningen och inkludera lite mellanliggande utdata så att du kan övervaka beräkningen. Detta kommer att vara mycket användbart om du vet att din beräkning kommer att pågå under en lång tid eller om det handlar om flera komplicerade steg.

Fortran referenswebbplats screenshot
Fortran referenswebbplats screenshot

Steg 2. Hitta en bra Fortran -referens

Fortran har många fler funktioner än vad som förklaras i den här artikeln, och de kan vara användbara för det program du vill skriva. En referens listar alla funktioner som ett programmeringsspråk har. Detta är ett för Fortran 77 och det här är ett för Fortran 90/95.

Fortran subroutines example
Fortran subroutines example

Steg 3. Lär dig mer om underrutiner och funktioner

Fortran format string exempel
Fortran format string exempel

Steg 4. Lär dig hur du läser och skriver från/till filer

Lär dig också hur du formaterar din input/output.

Modern fortran -exempel screenshot
Modern fortran -exempel screenshot

Steg 5. Lär dig mer om de nya funktionerna i Fortran 90/95 och nyare

Hoppa över det här steget om du vet att du bara kommer att skriva/behålla Fortran 77 -koden.

Kom ihåg att Fortran 90 introducerade "Free Form" -källkoden, så att kod kan skrivas utan mellanslag och utan gränsen för 72 tecken

Fortran bok online skärmdump
Fortran bok online skärmdump

Steg 6. Läs eller leta upp några böcker om vetenskaplig programmering

Till exempel är boken "Numeriska recept i Fortran" både en bra text om vetenskapliga programmeringsalgoritmer och en bra introduktion till hur man sätter ihop koder. Nyare utgåvor inkluderar kapitel om hur man programmerar i en blandningsspråkig miljö och parallell programmering. Ett annat exempel är "Modern Fortran in Practice" skriven av Arjen Markus. Boken ger en inblick i hur man skriver Fortran-program i tjugoförsta århundradets stil i enlighet med de senaste Fortran-standarderna.

Fortran kompilerar program över flera filer
Fortran kompilerar program över flera filer

Steg 7. Lär dig hur du sammanställer ett program spritt över flera filer

Låt oss anta att ditt Fortran -program är spritt över filerna main.f och morestuff.f, och att du vill att den resulterande binären ska heta allstuff. Då måste du skriva följande kommandon i kommandoraden:

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

Kör sedan filen genom att skriva./allstuff.

Dricks: Detta fungerar på samma sätt med nyare versioner av Fortran. Ersätt bara.f med rätt tillägg och f77 med rätt kompilatorversion.

Steg 8. Använd den optimering som kompilatorn tillhandahåller

De flesta kompilatorer inkluderar optimeringsalgoritmer som förbättrar effektiviteten i din kod. Dessa aktiveras vanligtvis genom att inkludera en -O-, -O2- eller -O3 -flagga vid kompilering (igen beroende på din version av fortran).

  • Generellt sett är den lägsta nivån -O eller -O2 bäst. Var medveten om att användningen av det mer aggressiva optimeringsalternativet kan införa fel i komplexa koder och till och med sakta ner saker! Testa din kod.

Tips

  • Börja med små program. När du skapar din egen kod, försök att identifiera den mest väsentliga delen av problemet - är det datainmatningen eller funktionernas anrop, loopens struktur (det här är några mycket elementära exempel) och börja därifrån. Bygg sedan på det i små steg.
  • Fortran är inte skiftlägeskänsligt. Du kan till exempel deklarera en variabel "real Num" och skriva "num = 1" på nästa rad för att tilldela ett värde till den. Men det är en dålig stil, så undvik det. Ännu viktigare, Fortran bryr sig inte om fallet med funktioner och uttalanden heller. Det är ganska vanligt att skriva funktioner och påståenden i UPPERCASE och variabler i gemener.
  • EMACS är en bra gratis textredigerare att använda istället för Anteckningar.
  • Du kanske har lättare att använda en online IDE (integrerad utvecklingsmiljö) till en början. Ett bra alternativ är Coding Ground. Du hittar en mängd programmeringsspråk där, inklusive Fortran-95. Ett annat alternativ är Ideone.

Rekommenderad: