Breve guida al linguaggio Fortran

Breve guida al linguaggio FORTRAN 77


Variabili (valori di default)

Iniziali con lettere
da I a N
variabili intere, 4 byte in precisione singola
Iniziali con lettere
da A a H oppure
da O a Z
variabili reali, 4 byte in precisione singola


Variabili (definizioni)

INTEGER A La variabile A e' definita intera. Aggiungere *8 o *16 dopo INTEGER per la precisione doppia o quadrupla.
REAL A La variabile A e' definita reale. Aggiungere *8 o *16 dopo REAL per la precisione doppia o quadrupla.
COMPLEX A La variabile A e' definita complessa. Aggiungere *16 COMPLEX per la precisione doppia.
CHARACTER*N A La variabile A e' definita come una variabile stringa. La lunghezza in byte della stringa e' data dal numero intero N.
LOGICAL A La variabile A e' definita come una variabile logica che puo' assumere solo due valori TRUE o FALSE
A=.TRUE.
A=.FALSE.


Vettori

DIMENSION A(N1),B(N2,N3) Le variabili A e B sono definite come vettori di dimensioni N1 e N2 x N3 rispettivamente.


Operazioni aritmetiche

A + B
A - B
A * B
A / B
A**B
somma di A piu' B
differenza tra A e B
moltiplicazione di A e B
divisione di A e B
elevamento di A alla potenza B


Funzioni matematiche

ABS(A) Valore assoluto di A
ASIN(A) Arcoseno di A
ACOS (A) Arcocoseno di A
ATAN(A) Arcotangente di A
COS(A) Coseno di A
SIN(A) Seno di A
TAN(A) Tangente di A
EXP(A) Esponenziale di A
LOG(A) Logaritmo naturale di A
LOG10(A) Logaritmo naturale di A in base 10
SQRT(A) Radice quadrata di A
MIN(A,B) Ritorna il valore minimo tra A e B
MAX(A,B) Ritorna il valore massimo tra A e B


Operatori logici

A e B sono variabili logiche
A.AND.B vero se sia A sia B sono vere
A.OR.B vero se A e' vaera oppure lo e' B.
A e B variabili o espressioni numeriche
A.EQ.B vero se A e' uguale a B
A.GT.B vero se A e' maggiore di B
A.GE.B vero se A e' maggiore o uguale a B
A.LT.B vero se A e' minore di B
A.LE.B vero se A e' minore o uguale a B


Comandi di controllo

STOP Sospende l'esecuzione.
CONTINUE Continua l'esecuzione.
END Termina il programma, o il sottoprogramma.
IF(esp) cmd Se l'espressione esp e' vera allora il comando cmd viene eseguito.
IF(esp) THEN
cmd1
cmd2
....
ENDIF
Se l'espressione esp e' vera allora i comandi cmd1, cmd2, ... fino al comando ENDIF sono eseguiti.
IF(esp) THEN
cmd1
ELSE
cmd2
ENDIF
Se l'espressione esp e' vera allora i comandi1 cmd1 fino a ELSE sono eseguiti, altrimenti sono eseguiti i comandi cmd2 fino a ENDIF.
IF(esp1) THEN
cmd1
ELSEIF (esp2)
cmd2
ENDIF
Se esp1 e' vera i comandi cmd1 sono eseguiti se invece e' vera l'espressione esp2 sono eseguiti i comandi cmd2 .
DO INDX=N1,N2,INCR
comandi1
ENDDO
Ripete i comandi1 fino a che l'indice INDX non supera il valore N2. Il primo valore di INDX (intero) e' N1 (intero) ad ogni ripetizione del comando questo valore viene incrementato del valore INCR (intero) fino a quando non e' maggiore di N2 (intero). Se INCR non e' esplicitato viene utilizzato il valore di default INDX=1. INCR puo' anche assumere valori interi negativi. In questo caso N2 sara' minore di N1 e la ripetizione dei comandi terminera' quando il valore di INDX sara' minore di N2.
GOTO nmr Invia l'esecuzione al comando induviduato dal numero di linea nmr.


Comandi di input -- output

READ(5,1000) A,B Leggi dall'unita' 5 i valori delle variabili A e B secondo il formato definito dal comando 1000
READ(5,*) A,B Come sopra. Il formato adesso e' libero, fissato dalla dichiarazione delle variabli A e B.
READ(5,'(f10.5,1x,f10.5)') A,B Come sopra. In questo caso il formato di lettura e' specificato nel secondo argomento del comando READ.
WRITE(8,1000) A,B Scrivi sull'unita' 8 i valori delle variabili A e B secondo il formato definito dal comando 1000. L'utilizzazione dei formati e' analoga a quella del comando READ.
OPEN (UNIT=8,FILE='fn.dat',STATUS='OLD') Apri l'unita' numero 8, il cui nome e' fn.dat e il cui status OLD dice che esiste gia'. All'unita' puo' essere assegnato qualsiasi numero intero. Il nome del file puo' essere assegnato anche con una variabile stringa. Le possibili opzioni di STATUS sono: OLD, il file gia' esiste, NEW, il file viene creato durante l'esecuzione, UNKOWN, se il file non esiste viene creato.


Formati di lettura e scrittura

FORMAT E' il comando che indica il formato di scrittura e/o lettura.
I5 Per numeri interi. Il 5 indica che sono allocati 5 spazi per la lettura/scrittura, uno di questi e' utilizzato per il segno.
F10.5 Per numeri reali. Sono allocati dieci spazi di cui 5 per i decimali. Bisogna considerare che in questi dieci spazi sono inclusi il punto ed il segno.
E12.5 Per numeri reali espressi in notazione scientifica. Sono allocati dodici spazi di cui 5 per i decimali. Nei dodici spazi sono inclusi il punto, il segno, il segno dell'esponente, la E dell'esponente e due cifre dell'esponente.
A10 Per caratteri stringa. Sono allocati dieci caratteri.


Sottoprogrammi

FUNCTION name (A,B) La FUNCTION restituisce al programma principale un solo valore numerico che e' associato al nome della function (nell'esempio name). Nella FUNCTION deve essere presente il comando:
name= variabile
. Il comando RETURN riporta l'esecuzione al programma principale. A e B sono variabili definite nel programma principale che vengono passate alla FUNCTION.
SUBROUTINE name (A,B) La SUBROUTINE restituisce al programma principale varie quantita'. Le quantita' calcolate nella SUBROUTINE che devono essere restituite al programma principale vengono passate nell'argomento della SUBROUTINE, insieme alle variabili di ingresso.
COMMON /name/ A,B E' un modo per mettere in comune variabili (A e B nell'esempio) tra vari sottoprogrammi e programma principale. Ogni volta che il valore numerico di A e B verra' modificato, questa modifica sara' registrata in tutti i sottoprogrammi in cui il COMMON/name/ e' presente.