next up previous

Implicit none


Il Fortran 90 possiede una ulteriore istruzione di dichiarazione di tipo, la seguente: IMPLICIT NONE.
Il risultato dell'applicazione di questa istruzione è di disabilitare tutti gli elementi impliciti di digitazione 
che sono previsti nel linguaggio Fortran.
Quando l'istruzione IMPLICIT NONE viene inclusa in un programma, qualsiasi variabile che non compare in una 
dichiarazione esplicita di tipo è considerata un errore. L'istruzione IMPLICIT NONE va posta dopo l'istruzione 
PROGRAM e prima di qualsiasi istruzione di dichiarazione di tipo.
Quando l'istruzione IMPLICIT NONE viene inclusa in un programma, il programmatore deve dichiarare esplicitamente
il tipo di ogni variabile del programma. A prima vista, questo potrebbe sembrare uno svantaggio in quanto
il programmatore deve svolgere più lavoro durante la stesura di un programma. Questa impressione iniziale risulta 
fuorviante; l'uso di IMPLICIT NONE, infatti, offre parecchi vantaggi.
La maggior parte degli errori di programmazione sono rappresentati da semplici errori ortografici.
L'istruzione IMPLICIT NONE è in grado di catturare questi errori in fase di compilazione prima che possano 
causare degli errori dificili da scoprire durante l'esecuzione.
Ad esempio consideriamo il seguente programma per il calcolo dell'area di un triangolo:


Program Triangolo
!Programma che valuta l'area del triangolo di lati a, b, c

  implicit none

  real       ::a, b, c

  print*, 'digita la lunghezza dei tre lati'
  read*,a, b, c
  print*, 'Area del triangolo=',trianglearea( a, b, c)
  
  
  contains
  
  function trianglearea( a, b, c)
  
     real                :: trianglearea
     real, intent( in)   :: a, b, c
     
     real                :: theta
     real                :: height
     
     theta = acos( ( a**2 + b**2 - c**2 ) / ( 2.0 * a *b ) )
     height= a * sin ( theta ) 
     
     trianglearea = 0.5 * b * height
     
  end function trianglearea
  
end program Triangolo 

Avendo utilizzato l'istruzione implicit none se avessimo dimenticato di dichiarare la variabile a, in fase di
compilazione avremmo ottenuto il seguente messaggio di errore:
  
F90     -g -c -nowdir -o "D:\FORTRAN 90\triangolo\objs\triangolo.obj" -noconsole "D:\FORTRAN 90\triangolo\triangolo.f90"
cf90-113 error on line 9 of D:\FORTRAN 90\triangolo\triangolo.f90: IMPLICIT NONE is specified in the local scope, 
therefore an explicit type must be specified for data object "A".

Il quale messaggio di errore ci dice immediatamente dove risiede il problema e per noi sarà più semplice
la correzione.

Il file .f90 relativo al programma suindicato è disponibile, se vi interessa cliccate.