Questo sito contribuisce alla audience di

Il paradigma Call-by-reference nel Fortran

Il Fortran 77 utilizza il paradigma cosiddetto "chiamata per riferimento".

fortran 90,intel fortran,visual fortran,compilatore fortran

Il Fortran 77 utilizza il paradigma cosiddetto “chiamata per riferimento”. Ciò significa che invece di passare i valori della funzioneo gli argomenti di subroutine (call-by-valore), viene passato solo l’indirizzo di memoria degli argomenti (i puntatori). Un piccolo esempio dovrebbe mostrare la differenza:


      program callex
      integer m, n
c
      m = 1
      n = 2 

      call iswap(m, n)
      write(*,*) m, n

      stop
      end

L’output di questo programma è “2 1″, proprio come uno si aspetterebbe. Tuttavia, se fosse stato usato il Fortran 77 con chiamata per valore il risultato sarebbe stato “1 2″, cioè m ed n variabili sono rimasti invariati! La ragione di questo è che i soli valori di n sono stati copiati nella subroutine iswap, e anche se a e b sono stati scambiati all’interno della subroutine i nuovi valori non sarebbero stati passati al programma principale.

Nell’esempio precedente, con la chiamata per riferimento otteniamo esattamente quello che volevamo. Ma bisogna stare attenti a questo quando si scrive codice Fortran, perché è facile introdurre indesiderati effetti collaterali. Ad esempio, a volte si è tentati di utilizzare un parametro di input di un sottoprogramma come una variabile locale e cambiare il suo valore. Non si dovrebbe mai fare questo in quanto il nuovo valore propagatosi torna al programma chiamante con un valore di inaspettato!

Link correlati all’argomento

- I compilatori Fortran

- Programmare con Fortran

- Elementi di calcolo numerico con il Fortran

- Esercizi sul Fortran 90