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.

5.11 Funzioni di tipo derivato 261<br />

CHARACTER(LEN=k) :: x = "Aul" ! stringa locale di lunghezza fissa<br />

CHARACTER(LEN=*), PARAMETER :: word = "stringhetta"<br />

! start function func<br />

func = b//b ! func="AntonioRaucci"<br />

y = word(k+2:) ! y="nghetta"<br />

y(:k) = x ! y="Raucci"<br />

func(n/2+1:) = y ! func="AntonioRaucci"<br />

RETURN<br />

END FUNCTION func<br />

END PROGRAM stringhe<br />

5.11 Funzioni di tipo derivato<br />

Una function può restituire anche il valore di un tipo di dati derivato. Ad esempio, costruito il<br />

tipo complesso, al modo seguente:<br />

TYPE complesso<br />

REAL :: p_real<br />

REAL :: p_imm<br />

END TYPE complesso<br />

la seguente funzione implementa l’algoritmo di moltiplicazione di due valori di tipo complesso:<br />

TYPE(complesso) FUNCTION prod_comp(a,b)<br />

TYPE(complesso), INTENT(IN) a, b<br />

prod_comp%p_real = a%p_real*b%p_real - a%p_imm*b%p_imm<br />

prod_comp%p_imm = a%p_real*b%p_imm + a%p_imm*b%p_real<br />

END FUNCTION prod_comp<br />

Naturalmente, nell’esempio precedente il tipo derivato complesso è stato definito per motivi<br />

puramente ”didattici”, visto che in <strong>Fortran</strong> è già disponibile il tipo predefinito COMPLEX.<br />

Un esempio un pò più interessante è fornito dal seguente modulo in cui vengono definiti sia<br />

un tipo di dati (money), sia una coppia di funzioni che operano su di esso:<br />

MODULE moneytype<br />

IMPLICIT NONE<br />

TYPE money<br />

INTEGER :: euro, cent<br />

END TYPE money<br />

CONTAINS<br />

FUNCTION addmoney(a,b)

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

Saved successfully!

Ooh no, something went wrong!