Anatomia di un Programma Fortran
In questa lezione esploreremo la struttura di base di un programma Fortran, analizzando le principali caratteristiche delle istruzioni eseguibili e non eseguibili. Impareremo come scrivere e organizzare il codice Fortran, utilizzando etichette, commenti e comprendendo l'importanza di uno stile di programmazione uniforme.
Istruzioni in Fortran
Un programma Fortran consiste in una serie di istruzioni progettate per essere eseguite e compiere ciò che lo sviluppatore desidera.
Esistono due tipi di istruzioni in Fortran:
-
Istruzioni Eseguibili:
Descrivono le azioni che il programma deve compiere nel momento in cui viene eseguito. Ad esempio, l'assegnazione di un valore a una variabile o l'esecuzione di un'operazione matematica.
-
Istruzioni Non Eseguibili:
Descrivono le struttura del programma e non vengono eseguite. Ad esempio, le dichiarazioni di variabili, le dichiarazioni di funzioni e subroutine, ecc.
Esse non vengono eseguite ma forniscono le istruzioni necessarie al compilatore per generare il codice eseguibile.
A partire dallo standard Fortran 90, le istruzioni possono essere scritte in un qualunque punto della riga corrente e ciascuna riga può avere una lunghezza massima di 132 caratteri.
Se un'istruzione è troppo lunga per essere inserita su un'unica riga, essa può essere spezzata e continuata sulla riga successiva utilizzando il simbolo &
come ultimo carattere della riga corrente.
Ad esempio, le due righe che seguono sono tra loro identiche:
risultato = variabile_1 + variabile_2 ! Effettua la somma
risultato = variabile_1 + &
variabile_2 ! Effettua la somma
Le due righe di sopra sono identiche, l'unica differenza è che la seconda riga è stata spezzata e continuata sulla riga successiva.
Quando si spezza un'istruzione, si possono adoperare fino a 256 righe per completare l'istruzione.
A differenza di altri linguaggi di programmazione come il linguaggio C, non è necessario terminare esplicitamente una riga di codice con un punto e virgola ;
. In Fortran, un'istruzione termina quando viene raggiunta la fine della riga.
Istruzioni Fortran
Un'istruzione Fortran ha le seguenti caratteristiche:
- Può essere scritta in qualsiasi punto della riga corrente.
- Una riga può avere una lunghezza massima di 132 caratteri.
- Può essere spezzata e continuata sulla riga successiva utilizzando il simbolo
&
. - Può essere composta da più righe, fino a un massimo di 256 righe.
- Termina quando viene raggiunta la fine della riga.
Etichette di Istruzione
Una qualunque istruzione Fortran può essere preceduta da un'etichetta numerica.
Ad esempio, possiamo scrivere:
10 risultato = variabile_1 + variabile_2
In tal caso abbiamo assegnato l'etichetta 10
all'istruzione. Un'etichetta può essere un qualunque numero che va da 1
a 99999
.
L'etichetta rappresenta una sorta di nome dell'istruzione e può essere utilizzata per riferirsi a quella specifica istruzione all'interno del programma.
La cosa importante da notare è che il valore di un'etichetta non ha alcun valore intrinseco, ossia non rappresenta alcun ordinamento o sequenza all'interno del programma. L'etichetta è semplicemente un riferimento numerico che può essere utilizzato per identificare un'istruzione. Nè rappresenta un'indicazione di sequenza di esecuzione.
Ad esempio potremmo scrivere:
35 risultato1 = a * 2
20 risultato2 = b * 4
In tal caso la seconda istruzione, con etichetta 20
, verrà comunque eseguita dopo l'istruzione con etichetta 35
, nonostante il valore numerico dell'etichetta sia inferiore.
Importante da ricordare è il fatto che due istruzioni non possono avere la stessa etichetta all'interno di un programma.
L'utilizzo di etichette per le istruzioni è diventato obsoleto a partire dallo standard Fortran 90, e non è più raccomandato per la scrittura di nuovi programmi. Tuttavia, è importante conoscerne il funzionamento per comprendere codice Fortran più datato.
Etichette di Istruzione
Un'etichetta di istruzione è un numero compreso tra 1
e 99999
che può essere assegnato a un'istruzione Fortran.
La sintassi per assegnare un'etichetta a un'istruzione è la seguente:
<etichetta> <istruzione>
L'etichetta rappresenta un riferimento numerico all'istruzione e non ha alcun valore intrinseco di sequenza.
L'uso di etichette per le istruzioni è diventato obsoleto a partire dallo standard Fortran 90.
Commenti in Fortran
Una delle attività fondamentali nello sviluppo del codice è costituita dalla documentazione.
I commenti sono parti di codice che vengono ignorate dal compilatore e servono a descrivere il funzionamento del programma, a spiegare il significato delle variabili, a fornire informazioni utili al programmatore e a chiunque legga il codice.
In Fortran, i commenti possono essere inseriti utilizzando il simbolo !
(punto esclamativo) che indica che tutto ciò che segue su quella riga è un commento.
Ad esempio:
! Questo è un commento
variabile = 10 ! Questo è un altro commento
I commenti possono essere inseriti su una riga a parte o alla fine di un'istruzione. Quando il compilatore incontra il simbolo !
, ignora tutto ciò che segue fino alla fine della riga.
Commenti in Fortran
La sintassi per inserire un commento in Fortran è la seguente:
! Commento
I commenti possono essere inseriti su una riga a parte o alla fine di un'istruzione. Il compilatore ignorerà tutto ciò che segue il simbolo !
fino alla fine della riga.
Struttura di un programma Fortran
Ciascun programma Fortran è costituito da una sequenza di istruzioni eseguibili ed istruzioni non eseguibili che si devono presentare in un ordine specifico.
Per capire quale sia la struttura generale di un programma, esaminiamo un esempio. Il programma che segue prende in ingresso due valori di input, li somma e stampa il risultato.
PROGRAM somma
! Il programma somma prende in input due numeri e ne calcola la somma
! dopo di che stampa il risultato a video
! Dichiarazione di variabili
INTEGER :: numero1, numero2, risultato
! Input dei valori
PRINT *, "Inserisci il primo numero:"
READ *, numero1
PRINT *, "Inserisci il secondo numero:"
READ *, numero2
! Calcolo della somma
risultato = numero1 + numero2
! Output del risultato
PRINT *, "La somma è", risultato
! Fine del programma
STOP
END PROGRAM somma
Se proviamo a compilare il programma, ad esempio usando il compilatore GFortran:
gfortran somma.f90 -o somma
e successivamente eseguiamo il programma:
./somma
Il programma ci chiederà di inserire due numeri, li sommerà e stamperà il risultato a video, ad esempio:
Inserisci il primo numero:
12
Inserisci il secondo numero:
34
La somma è 46
Come possiamo notare, il programma è strutturato in tre parti fondamentali:
-
La sezione delle dichiarazioni:
Si tratta di una sezione che non contiene codice eseguibile, ossia non contiene istruzioni eseguibili. Si trova all'inizio del programma e serve per dichiarare il nome del programma, il numero ed il tipo di variabili che verranno utilizzate nel programma.
-
La sezione di esecuzione:
Contiene le istruzioni eseguibili del programma. Queste istruzioni vengono eseguite in sequenza e compiono le azioni descritte.
-
La sezione di fine programma o di terminazione:
Contiene l'istruzione o le istruzioni che terminano il programma ed indicano al compilatore la fine del programma stesso.
Un dettaglio fondamentale che possiamo osservare è che i commenti possono essere inseriti in qualunque punto del programma e non influenzano il funzionamento del codice.
Analizziamo le tre sezioni singolarmente.
Sezione delle Dichiarazioni
Questa sezione contiene le istruzioni non eseguibili all'inizio del programma che ne definiscono il nome e l'insieme delle variabili adoperate.
La prima istruzione è l'istruzione PROGRAM
. Si tratta di un'istruzione non eseguibile che specifica il nome del programma al compilatore.
Il nome di un programma Fortran può avere una lunghezza massima di 63 caratteri e può essere costituito da lettere, numeri e il carattere _
. Esso però deve sempre iniziare con una lettera.
Istruzione PROGRAM
L'istruzione PROGRAM
è un'istruzione non eseguibile che specifica il nome del programma al compilatore. Deve essere la prima istruzione del programma.
La sintassi è:
PROGRAM <nome_programma>
Il nome del programma può avere una lunghezza massima di 63 caratteri e può essere costituito da lettere, numeri e il carattere _
. Deve iniziare con una lettera.
Dopo l'istruzione PROGRAM
, si trovano le istruzioni di dichiarazione delle variabili. Queste istruzioni specificano il tipo e il nome delle variabili che verranno utilizzate nel programma.
In particolare, nell'esempio, abbiamo dichiarato tre variabili di tipo INTEGER
:
INTEGER :: numero1, numero2, risultato
Studieremo le istruzioni per dichiarare le variabili nelle prossime lezioni.
Sezione di Esecuzione
La sezione di esecuzione contiene le istruzioni eseguibili del programma che descrivono le azioni da compiere.
Nell'esempio, le istruzioni di input e output dei valori, il calcolo della somma e la stampa del risultato sono tutte istruzioni eseguibili.
In particolare vi sono chiamate a funzioni di input/output, assegnazioni di valori a variabili e operazioni matematiche.
Adesso non è importante comprendere il significato di ciascuna istruzione, ma è fondamentale capire che queste istruzioni sono eseguite in sequenza, una dopo l'altra. Le studieremo in dettaglio nelle prossime lezioni.
Sezione di Terminazione
La sezione di terminazione contiene l'istruzione STOP
e l'istruzione END PROGRAM
.
L'istruzione STOP
viene adoperata per indicare al computer di terminare l'esecuzione del programma.
L'istruzione END PROGRAM
, invece, non è un'istruzione eseguibile. Essa indica semplicemente al compilatore che il programma è terminato e dopo di essa non vi saranno altre istruzioni specificate nel codice sorgente.
L'istruzione STOP
può avere tre forme differenti:
-
STOP
Quando usata senza argomenti, il programma termina con un codice di uscita di
0
. -
STOP <codice>
Quando usata con un argomento, il programma termina con il codice specificato.
-
STOP 'messaggio'
Quando usata con un argomento di tipo stringa, il programma termina stampando il messaggio specificato e termina con un codice di uscita di
0
.
Un concetto fondamentale usato in tutti i sistemi operativi, specialmente quelli basati su Unix, è il codice di uscita.
Il codice di uscita è un valore numerico che viene restituito al sistema operativo quando un programma termina. Esso rappresenta lo stato di uscita del programma e può essere utilizzato per determinare se il programma è terminato correttamente o se si è verificato un errore.
Tipicamente, un codice di uscita di 0
indica che il programma è terminato correttamente, mentre un codice diverso da 0
indica che si è verificato un errore.
Per cui, se usiamo l'istruzione STOP
senza argomenti, il programma terminerà con un codice di uscita di 0
, indicando che il programma è terminato correttamente. Il che equivale a usare l'istruzione STOP 0
.
Viceversa, se usiamo l'istruzione STOP 1
, il programma terminerà con un codice di uscita di 1
, indicando che si è verificato un errore. La scelta del codice di uscita è a discrezione del programmatore.
Quando usiamo l'istruzione STOP
con un messaggio, il programma terminerà stampando il messaggio specificato e terminerà con un codice di uscita di 0
.
Se l'istruzione STOP
precede direttamente l'istruzione END PROGRAM
, essa è del tutto opzionale. Infatti, il compilatore Fortran, quando incontra END PROGRAM
ma non ha trovato alcuna istruzione STOP
, provvede ad aggiungerla in automatico.
Istruzione STOP
L'istruzione STOP
è un'istruzione eseguibile che termina l'esecuzione del programma.
La sintassi è:
STOP
STOP <codice>
STOP 'messaggio'
- Nella prima forma, il programma termina con un codice di uscita di
0
. - Nella seconda forma, il programma termina con il codice specificato.
- Nella terza forma, il programma termina stampando il messaggio specificato e termina con un codice di uscita di
0
.
L'istruzione STOP
non è necessaria prima dell'istruzione END PROGRAM
.
A partire dallo standard Fortran 2008 è stata introdotta una nuova istruzione di terminazione, l'istruzione ERROR STOP
.
Questa istruzione può essere adoperata in questo modo:
ERROR STOP 'Messaggio di Errore'
L'istruzione ERROR STOP
termina il programma con un codice di uscita diverso da 0
, indicando che si è verificato un errore. Inoltre, stampa il messaggio specificato.
Stile di programmazione
Un dettaglio fondamentale da ricordare quando si programma in Fortran è che il linguaggio è case insensitive. In altre parole, il compilatore non fa distinzione tra lettere maiuscole e minuscole.
Ad esempio, le seguenti istruzioni sono equivalenti:
PROGRAM esempio
program ESEMPIO
Program Esempio
STOP
stop
Stop
Questa caratteristica differenzia il Fortran da altri linguaggi di programmazione dove, invece, le lettere maiuscole e minuscole sono considerate come caratteri distinti.
La conseguenza è che anche per le variabili possiamo scriverne il nome in qualsiasi modo, ad esempio:
INTEGER :: variabile
VARIABILE = 10 ! si riferisce alla variabile dichiarata sopra
Variabile = 20 ! si riferisce sempre alla variabile dichiarata sopra
Tuttavia, è importante notare che nonostante il Fortran sia case insensitive, è buona pratica mantenere uno stile di programmazione uniforme.
Non importa quale stile si adoperi per scrivere il codice, l'importante è mantenere coerenza all'interno del programma. Questo rende il codice più leggibile e facilita la manutenzione e la comprensione del codice.
Fortran è Case Insensitive
Il linguaggio Fortran è case insensitive, ossia non fa distinzione tra lettere maiuscole e minuscole.
In Sintesi
In questa lezione abbiamo visto le principali caratteristiche delle istruzioni in Fortran e la struttura di base di un programma Fortran.
Abbiamo visto che:
- Un programma Fortran è costituito da istruzioni eseguibili e non eseguibili.
- Le istruzioni possono essere scritte in qualsiasi punto della riga corrente.
- Una riga può avere una lunghezza massima di 132 caratteri.
- Le istruzioni possono essere spezzate e continuare sulla riga successiva utilizzando il simbolo
&
. - Un'istruzione può essere composta da più righe, fino a un massimo di 256 righe.
- Un'istruzione termina quando viene raggiunta la fine della riga.
- Le istruzioni possono essere precedute da un'etichetta numerica.
- I commenti possono essere inseriti utilizzando il simbolo
!
. - Un programma Fortran è costituito da tre parti fondamentali: le dichiarazioni, l'esecuzione e la terminazione.
- Il Fortran è case insensitive, ma è buona pratica mantenere uno stile di programmazione uniforme.
Inoltre, abbiamo approfondito le prime istruzioni fondamentali di un programma Fortran:
- L'istruzione
PROGRAM
per specificare il nome del programma. - L'istruzione
STOP
per terminare l'esecuzione del programma. - L'istruzione
END PROGRAM
per indicare la fine del programma.
Nella prossima lezione inizieremo lo studio delle costanti e delle variabili in Fortran.