Le subroutine nel Fortran


FORTRANUna subroutine nel Fortran rappresenta un tipo di procedura, essa viene richiamata specificandone il nome attraverso l’istruzione CALL che riceve i valori di input e restituisce quelli di output attraverso una lista di argomenti.

Il costrutto nella sua forma generale per definire una subroutine è il seguente:

SUBROUTINE nome_subroutine [(lista_di_argomenti)]
 
    [definizione e dichiarazione delle variabili]
    [corpo della procedura]
[CONTAINS
    procedure interne]
[RETURN]
END [SUBROUTINE [nome_subroutine]]

 

Nella definizione della struttura è possibile identificare il nome della subroutine, che dovrà rispettare le regole per la scelta dei nomi nel Fortran, seguito dall’elenco delle varibili di scambio tra la procedura ed il programma chiamante.

Segue la definizione e la dichiarazione delle variabile che sono utilizzate all’interno della procedura, quindi segue il corpo della procedura cioè le istruzioni che dovrà eseguire nel momento in cui verrà chiamata dal programma principale.

Quando un programma chiama una subroutine, l’esecuzione del programma viene temporaneamente sospesa per consentire l’esecuzione della subroutine. Quando viene raggiunta l’istruzione RETURN o l’istruzione END SUBROUTINE l’esecuzione dell’unità chiamante riprende dalla riga successiva a quel la che ha effettuato la chiamata.

La chiamata avviene attraverso l’istruzione CALL, la cui sintassi è:

CALL nome_subroutine ([lista_di_argomenti])

 

Un esempio di soubroutine di fortran 90 è fornito di seguito:

!TRASFORMATA DI FOURIER DISCRETA
!________________________________
subroutine dft (A,N,E)
implicit none
17
integer :: N !numero di campioni
integer :: E !numero di campinature effettuate
integer :: i,j !indice di riga e di colonna della matrice
complex :: uim !unita' immaginaria
complex,dimension(0:1000,0:1000) :: A !matrice complessa

uim=(0,1)
do i=0, n-1
   do j=0, n-1
     A(i,j)=exp(-(2*3.14*uim*i*j)/n)
   end do
end do
E=N
end

Questa subroutine calcola le trasformate discrete di fourier dato un certo campione.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Leave a Reply

Your email address will not be published. Required fields are marked *