Fortran Tutorial
Iniziare con Fortran
Ricerca…
Osservazioni
Fortran è un linguaggio ampiamente utilizzato nella comunità scientifica per la sua idoneità al calcolo numerico. Particolarmente interessante è la notazione intuitiva degli array, che semplifica la scrittura di calcoli vettoriali veloci.
Nonostante la sua età, Fortran è ancora attivamente sviluppato, con numerose implementazioni, tra cui GNU, Intel, PGI e Cray.
Versioni
Versione | Nota | pubblicazione |
---|---|---|
FORTRAN 66 | Prima standardizzazione di ASA (ora ANSI) | 1966/03/07 |
FORTRAN 77 | Fixed Form, Historic | 1978/04/15 |
Fortran 90 | Forma libera, standard ISO, operazioni di matrice | 1991/06/15 |
Fortran 95 | Procedure pure ed elementali | 1997/06/15 |
Fortran 2003 | Programmazione orientata agli oggetti | 2004/04/04 |
Fortran 2008 | Co-Array | 2010-09-10 |
Installazione o configurazione
Fortran è un linguaggio che può essere compilato utilizzando i compilatori forniti da molti fornitori. Sono disponibili diversi compilatori per diverse piattaforme hardware e sistemi operativi. Alcuni compilatori sono software gratuiti, alcuni possono essere utilizzati gratuitamente e alcuni richiedono l'acquisto di una licenza.
Il compilatore Fortran gratuito più comune è GNU Fortran o gfortran. Il codice sorgente è disponibile da GNU come parte di GCC, la raccolta del compilatore GNU. I binari per molti sistemi operativi sono disponibili su https://gcc.gnu.org/wiki/GFortranBinaries . Le distribuzioni Linux contengono spesso gfortran nel loro gestore di pacchetti.
Ulteriori compilatori sono disponibili ad esempio:
- EKOPath di PathScale
- LLVM (backend via DragonEgg)
- Oracle Developer Studio
Sui sistemi HPC esistono spesso compilatori specializzati disponibili dal fornitore del sistema come ad esempio i compilatori IBM o Cray .
Tutti questi compilatori supportano lo standard Fortran 95. Una panoramica sullo stato di Fortran 2003 e lo stato di Fortran 2008 da parte di vari compilatori è offerta dal forum Fortran ACM e disponibile in Fortran Wiki.
Ciao mondo
Qualsiasi programma Fortran deve includere la end
come ultima dichiarazione. Pertanto, il programma Fortran più semplice ha il seguente aspetto:
end
Ecco alcuni esempi di programmi "ciao, mondo":
print *, "Hello, world"
end
Con la dichiarazione di write
:
write(*,*) "Hello, world"
end
Per chiarezza ora è comune usare l'istruzione del program
per avviare un programma e dargli un nome. L'istruzione end
può quindi fare riferimento a questo nome per rendere evidente ciò a cui si riferisce e lasciare che il compilatore verifichi il codice per la correttezza. Inoltre, tutti i programmi Fortran dovrebbero includere implicit none
dichiarazione implicit none
. Pertanto, un programma Fortran minimamente dovrebbe apparire come segue:
program hello
implicit none
write(*,*) 'Hello world!'
end program hello
Il prossimo passo logico da questo punto è come vedere il risultato del programma Hello World. Questa sezione mostra come ottenerlo in un ambiente simile a Linux. Assumiamo che tu abbia alcune nozioni di base sui comandi della shell , principalmente sai come arrivare al terminale della shell. Supponiamo anche che tu abbia già configurato il tuo ambiente fortran
. Usando il tuo editor di testo preferito (notepad, notepad ++, vi, vim, emacs, gedit, kate, ecc.), Salva il programma ciao sopra (copia e incolla) in un file chiamato hello.f90
nella tua home directory. hello.f90
è il tuo file sorgente. Quindi vai alla riga di comando e vai alla directory (home directory?) In cui hai salvato il file sorgente, quindi digita il seguente comando:
>gfortran -o hello hello.f90
Hai appena creato il tuo programma Hello World eseguibile. In termini tecnici, hai appena compilato il tuo programma. Per eseguirlo, digitare il seguente comando:
>./hello
Dovresti vedere la seguente riga stampata sul tuo terminale shell.
> Hello world!
Congratulazioni, hai appena scritto, compilato e eseguito il programma "Hello World".
Equazione quadrata
Oggi Fortran è utilizzato principalmente per il calcolo numerico. Questo esempio molto semplice illustra la struttura di base del programma per risolvere equazioni di secondo grado:
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
Case insensibilità
Le lettere maiuscole e minuscole dell'alfabeto sono equivalenti nel set di caratteri di Fortran. In altre parole, Fortran non fa distinzione tra maiuscole e minuscole . Questo comportamento è in contrasto con i linguaggi case-sensitive, come C ++ e molti altri.
Di conseguenza, le variabili a
e A
sono la stessa variabile. In linea di principio si potrebbe scrivere un programma come segue
pROgrAm MYproGRaM
..
enD mYPrOgrAM
È per il buon programmatore evitare queste brutte scelte.