25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6.5 Array allocabili 327<br />

!<br />

INTEGER,INTENT(IN) :: n<br />

REAL,INTENT(IN),DIMENSION(n,n) :: A<br />

END FUNCTION det<br />

END INTERFACE<br />

OPEN(UNIT=11,FILE=’matrix.dat’,STATUS=’OLD’,ACTION=’READ’)<br />

READ(11,*) n<br />

ALLOCATE(A(n,n),IOSTAT=stato)<br />

IF (stato==0) THEN<br />

READ(11,*) A<br />

CLOSE(11)<br />

! Calcolo del determinante e stampa del risultato<br />

WRITE(*,’(1X,A22,1X,G10.5)’) "<strong>Il</strong> determinante vale: ",det(n,A)<br />

ELSE<br />

WRITE(*,*) "L’allocazione della matrice e’ fallita"<br />

END IF<br />

END PROGRAM determinante<br />

!<br />

!----------------------------------------------------------<br />

!<br />

RECURSIVE FUNCTION det(n,A) RESULT(detA)<br />

! N.B.: Questa subroutine valuta il determinante della<br />

! matrice quadrata A(n,n) in maniera ricorsiva secondo<br />

! la regola di Laplace applicata alla prima riga<br />

!<br />

! Sezione dichiarativa<br />

REAL :: detA ! determinante di A (valore restituito dalla funzione)<br />

! Parametri formali<br />

IMPLICIT NONE<br />

INTEGER,INTENT(IN) :: n<br />

REAL,INTENT(IN),DIMENSION(n,n) :: A ! N.B.: array fittizio<br />

! Variabili locali<br />

INTEGER :: j<br />

REAL,DIMENSION(n-1,n-1) :: m ! N.B.:array automatico<br />

REAL :: detm ! determinante del generico minore<br />

! A e’ la matrice di cui valutare il determinante<br />

! m e’ il minore associato al generico elemento A(1,j)<br />

! Sezione esecutiva<br />

IF (n==1) THEN<br />

detA = A(1,1)<br />

ELSE<br />

detA = 0.0<br />

DO j=1,n

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!