Molte persone percepiscono Fortran come un linguaggio di programmazione arcaico e "morto". Tuttavia, la maggior parte del codice scientifico e ingegneristico è scritto in Fortran. Pertanto, la programmazione in F77 e F90 rimane un'abilità necessaria per la maggior parte dei programmatori tecnici. Inoltre, gli ultimi standard Fortran (2003, 2008, 2015) consentono al programmatore di scrivere codice altamente efficiente con il minimo sforzo, utilizzando tutte le funzionalità del linguaggio moderno, come OOP (programmazione orientata agli oggetti). FORTRAN è l'acronimo di "FORmula TRANslation", ed è più adatto per applicazioni matematiche e numeriche piuttosto che per applicazioni grafiche o database. La maggior parte dei codici Fortran accetta l'input di testo da un file o da una riga di comando piuttosto che da un menu o da un'interfaccia GUI.
Passi
Parte 1 di 4: scrittura e compilazione di un programma semplice
Passaggio 1. Scrivi un programma "Hello World"
Questo di solito è il primo programma a scrivere in qualsiasi lingua e stampa semplicemente "Hello world" sullo schermo. Scrivi il seguente codice in qualsiasi editor di testo e salvalo come helloworld.f. Fai attenzione che ci devono essere esattamente 6 spazi davanti a ogni riga.
programma helloworld implicit nessuno character*13 hello_string hello_string = "Hello, world!" scrivi (*, *) hello_string termina il programma helloworld
ConsiglioNota: gli spazi sono necessari solo nelle versioni di Fortran fino a FORTRAN 77. Se stai utilizzando una versione più recente, puoi eliminare gli spazi. Compila i programmi dalla versione più recente con f95, non f77; usa.f95 come estensione del file invece di solo.f.
Passaggio 2. Compila il programma
Per fare ciò, digita f77 helloworld.f nella riga di comando. Se questo dà un errore, probabilmente non hai ancora installato un compilatore Fortran come ad esempio gfortran.
Passaggio 3. Esegui il programma
Il compilatore ha prodotto un file chiamato a.out. Esegui questo file digitando./a.out.
Passaggio 4. Comprendi ciò che hai appena scritto
-
programma ciaomondo
indica l'inizio del programma "helloworld". Allo stesso modo,
fine programma ciaomondo
- ne indica la fine.
-
Per impostazione predefinita, se non dichiari un tipo di variabile, Fortran tratta una variabile con un nome che inizia con una lettera da i a n come numero intero e tutte le altre come un numero reale. Si consiglia di utilizzare
implicito nessuno
- se non hai bisogno di quel comportamento.
-
carattere*13 ciao_stringa
- dichiara un array di caratteri chiamato hello_string.
-
hello_string = "Ciao, mondo!"
- assegna il valore "Hello, world!" all'array dichiarato. A differenza di altri linguaggi come il C, questo non può essere fatto sulla stessa riga della dichiarazione dell'array.
-
scrivi (*, *) ciao_stringa
- stampa il valore di hello_string sullo standard output. Il primo * significa scrivere sullo standard output, al contrario di alcuni file. Il secondo * significa non utilizzare alcuna formattazione speciale.
Passaggio 5. Aggiungi un commento
Questo non è necessario in un programma così semplice, ma sarà utile quando scrivi qualcosa di più complesso, quindi dovresti sapere come aggiungerli. Ci sono due modi per aggiungere un commento.
- Per aggiungere un commento che ha un'intera riga da solo, scrivi una c direttamente in una nuova riga, senza i 6 spazi. Dopo di che, scrivi il tuo commento. Dovresti lasciare uno spazio tra la c e il tuo commento per una migliore leggibilità, ma non è necessario. Nota che devi usare un ! invece di una c in Fortran 95 e versioni successive.
- Per aggiungere un commento nella stessa riga del codice, aggiungi un ! dove vuoi che inizi il tuo commento. Anche in questo caso, non è necessario uno spazio, ma migliora la leggibilità.
Parte 2 di 4: Utilizzo di input e costruzioni If
Passaggio 1. Comprendere i diversi tipi di dati
- INTEGER viene utilizzato per numeri interi, come 1, 3 o -3.
- REAL può anche contenere un numero che non è intero, come 2.5.
- COMPLEX viene utilizzato per memorizzare numeri complessi. Il primo numero è la parte reale e il secondo la parte immaginaria.
- CARATTERE è usato per caratteri, come lettere o punteggiatura.
- LOGICAL può essere.true. o.false.. Questo è come il tipo booleano in altri linguaggi di programmazione.
Passaggio 2. Ottieni l'input dell'utente
Nel programma "Hello world" che hai scritto prima, ottenere l'input dell'utente sarebbe inutile. Quindi apri un nuovo file e chiamalo compnum.f. Al termine, dirà all'utente se il numero inserito è positivo, negativo o uguale a zero.
- Immettere le righe program compnum e end program compnum.
- Quindi, dichiarare una variabile del tipo REAL. Assicurati che la tua dichiarazione sia tra l'inizio e la fine del programma.
- Spiega all'utente cosa dovrebbe fare. Scrivi del testo con la funzione di scrittura.
- Leggi l'input dell'utente nella variabile che hai dichiarato con la funzione read.
program compnum real r write (*, *) "Inserisci un numero reale:" read (*, *) r end program
Passaggio 3. Elaborare l'input dell'utente con una costruzione if
Mettilo tra i
leggi (*), *) r
e il
fine programma
- Il confronto è fatto con.gt. (maggiore di),.lt. (minore di) e.eq. (uguale) in Fortran.
- Fortran supporta if, else if e else
- Una costruzione if in Fortran termina sempre con end if.
if (r.gt. 0) allora scrivi (*, *) "Quel numero è positivo." else if (r.lt. 0) allora scrivi (*, *) "Quel numero è negativo." altrimenti scrivi (*, *) "Quel numero è 0." finisci se
Consiglio: non è necessario indentare il codice all'interno delle costruzioni if con più spazi, ma migliora la leggibilità.
Passaggio 4. Compila ed esegui il tuo programma
Inserisci alcuni numeri per testarlo. Se inserisci una lettera, genererà un errore, ma va bene perché il programma non controlla se l'input è una lettera, un numero o qualcos'altro.
Parte 3 di 4: utilizzo di loop e array
Passaggio 1. Aprire un nuovo file
Poiché questo concetto è diverso, dovrai scrivere di nuovo un nuovo programma. Denominare il file addmany.f. Inserire le istruzioni corrispondenti di programma e di fine programma, nonché un none implicito. Quando hai finito, questo programma leggerà 10 numeri e stamperà la loro somma.
Passaggio 2. Dichiarare un array di lunghezza 10
Qui è dove memorizzerai i numeri. Poiché probabilmente desideri una somma di numeri reali, dovresti dichiarare l'array come reale. Dichiari un tale array con
numeri reali(50)
(i numeri sono il nome dell'array, non un'espressione).
Passaggio 3. Dichiarare alcune variabili
Dichiara numSum come un numero reale. Lo userai per memorizzare la somma in un secondo momento, ma poiché la somma è già presa da un'espressione Fortran, devi usare un nome come numSum. Impostalo su 0. Dichiara i come un numero intero e non assegnargli ancora alcun valore. Questo sarà fatto nel do-loop.
Passaggio 4. Crea un ciclo do
L'equivalente di quello in altri linguaggi di programmazione sarebbe un ciclo for.
- Un do-loop inizia sempre con do.
- Sulla stessa riga del do, separata da esso da uno spazio, c'è l'etichetta a cui andrà il programma una volta terminato. Per ora, scrivi solo un 1, imposterai l'etichetta in seguito.
-
Dopodiché, di nuovo separato solo da uno spazio, digita
io = 1, 10
. Questo farà passare la variabile i, che avevi dichiarato prima del ciclo, da 1 a 10 in passi di 1. I passi non sono menzionati in questa espressione, quindi Fortran usa il valore predefinito di 1. Avresti anche potuto scrivere
io = 1, 10, 1
-
Inserisci del codice all'interno del ciclo (rientro con spazi per una migliore leggibilità). Per questo programma, dovresti aumentare la variabile numSum con l'i-esimo elemento dei numeri dell'array. Questo è fatto con l'espressione
numSum = numSum + numero(i)
- Termina il ciclo con un'istruzione continue che ha un'etichetta. Digita solo 4 spazi. Dopodiché, digita un 1. Questa è l'etichetta a cui hai detto al do-loop di andare al termine. Quindi, digita uno spazio e continua. L'espressione continue non fa nulla, ma fornisce un buon punto in cui posizionare un'etichetta, oltre a mostrare che il ciclo do-loop è terminato.
Il tuo ciclo do dovrebbe ora assomigliare a questo:
fai 1 i = 1, 10 numSum = numSum + numbers(i) 1 continua
ConsiglioNota: in Fortran 95 e versioni successive, non è necessario utilizzare le etichette. Basta non inserirne uno nell'istruzione do e terminare il ciclo con "end do" invece di "continue".
Passaggio 5. Stampa numSum
Inoltre, avrebbe senso fornire un contesto, ad esempio "La somma dei tuoi numeri è:". Usa la funzione di scrittura per entrambi. L'intero codice dovrebbe ora apparire come segue:
programma addmolti implicito nessuno numeri reali(10) real numSum intero i numSum = 0 write (*, *) "Inserisci 10 numeri:" read (*, *) numbers do 1 i = 1, 10 numSum = numSum + numbers(i) 1 continua write (*, *) "La loro somma è:" write (*, *) numSum end program addmany
Passaggio 6. Compila ed esegui il tuo codice
Non dimenticare di testarlo. Puoi premere ↵ Invio dopo ogni numero immesso o inserire più numeri sulla stessa riga e separarli con uno spazio.
Parte 4 di 4: Comprensione dei concetti avanzati
Passaggio 1. Avere una buona idea di cosa farà il tuo programma
Pensa al tipo di dati necessari come input, a come strutturare l'output e includi un output intermedio in modo da poter monitorare l'avanzamento del calcolo. Questo sarà molto utile se sai che il tuo calcolo durerà a lungo o includerà più passaggi complicati.
Passaggio 2. Trova un buon riferimento Fortran
Fortran ha molte più funzioni di quelle spiegate in questo articolo e potrebbero essere utili per il programma che vuoi scrivere. Un riferimento elenca tutte le funzioni che ha un linguaggio di programmazione. Questo è uno per Fortran 77 e questo è uno per Fortran 90/95.
Passaggio 3. Informazioni su subroutine e funzioni
Passaggio 4. Impara a leggere e scrivere da/a file
Scopri anche come formattare l'input/output.
Passaggio 5. Scopri le nuove funzionalità di Fortran 90/95 e versioni successive
Salta questo passaggio se sai che dovrai solo scrivere/mantenere il codice Fortran 77.
Ricorda che Fortran 90 ha introdotto il codice sorgente "Free Form", consentendo di scrivere codice senza spazi e senza il limite di 72 caratteri
Passaggio 6. Leggere o cercare alcuni libri sulla programmazione scientifica
Ad esempio, il libro "Numerical Recipes in Fortran" è sia un buon testo sugli algoritmi di programmazione scientifica sia una buona introduzione a come mettere insieme i codici. Le edizioni più recenti includono capitoli su come programmare in un ambiente a linguaggio misto e programmazione parallela. Un altro esempio è "Modern Fortran in Practice" scritto da Arjen Markus. Il libro offre una panoramica su come scrivere programmi Fortran nello stile del ventunesimo secolo in conformità con gli ultimi standard Fortran.
Passaggio 7. Impara come compilare un programma distribuito su più file
Supponiamo che il tuo programma Fortran sia distribuito tra i file main.f e morestuff.f e che tu voglia che il binario risultante sia chiamato allstuff. Quindi dovrai scrivere i seguenti comandi nella riga di comando:
f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f
Quindi esegui il file digitando./allstuff.
Consiglio: Funziona allo stesso modo con le versioni più recenti di Fortran. Basta sostituire.f con l'estensione corretta e f77 con la versione del compilatore corretta.
Passaggio 8. Utilizzare l'ottimizzazione fornita dal compilatore
La maggior parte dei compilatori include algoritmi di ottimizzazione che migliorano l'efficienza del codice. Questi vengono in genere attivati includendo un flag -O, -O2 o -O3 durante la compilazione (di nuovo a seconda della versione di fortran).
-
In genere, il livello migliore è il livello -O o -O2 più basso. Tieni presente che l'utilizzo dell'opzione di ottimizzazione più aggressiva può introdurre errori in codici complessi e persino rallentare le cose! Metti alla prova il tuo codice.
Suggerimenti
- Inizia con piccoli programmi. Quando crei il tuo codice, cerca di identificare la parte più essenziale del problema - è l'input dei dati o la chiamata delle funzioni, la struttura del ciclo (questi sono alcuni esempi molto elementari) e inizia da lì. Quindi costruisci su quello in piccoli incrementi.
- Fortran non fa distinzione tra maiuscole e minuscole. Potresti, ad esempio, dichiarare una variabile "real Num" e scrivere "num = 1" nella riga successiva per assegnarle un valore. Ma questo è un cattivo stile, quindi evitalo. Ancora più importante, a Fortran non interessa nemmeno il caso di funzioni e istruzioni. È abbastanza comune scrivere funzioni e istruzioni in MAIUSCOLO e variabili in minuscolo.
- EMACS è un buon editor di testo gratuito da utilizzare al posto del Blocco note.
- All'inizio potresti trovare più semplice utilizzare un IDE online (ambiente di sviluppo integrato). Una buona opzione è Coding Ground. Troverai una moltitudine di linguaggi di programmazione, incluso Fortran-95. Un'altra opzione è Ideone.