
Le interfacce sono necessarie per definire un sottoprogramma generico. I sottoprogrammi generici erano già utilizzati nel Fortran 77 nelle procedure intrinseche quali ad esempio la funzione sin o, come gli operatori ‘+’. Queste funzioni intrinseche sono casi particolari nel Fortran 77 e sono stati sovraccaricati di lavoro su una varietà di tipi di argomento.
Ad esempio sin (x) in modo appropriato calcola il seno del suo argomento, se x è singola o in doppia precisione, oppure un numero reale o complesso. In Fortran 90, i sottoprogrammi definiti dall’utente possono essere generici nello stesso senso. Le funzioni generiche e le subroutine possono essere definiti, analogamente a qualsiasi altro sottoprogramma, anche se l’interfaccia deve essere esplicita. Il modo usuale di definire una tale funzione generica è quella di inserirlo in un modulo, come nell’esempio qui sotto.
module RationalArithmetic
type rational
integer n, d ! Numerator and denominator.
end type rational
interface operator (*)
module procedure integerRationalMultiply, &
rationalIntegerMultiply
end interface
contains
function integerRationalMultiply( i, r )
type( rational ) integerRationalMultiply
integer, intent( in ) :: i
type( rational ), intent( in ) :: r
integerRationalMultiply = rational( i * r%n, r%d )
end function integerRationalMultiply
function rationalIntegerMultiply( r, i )
type( rational ) rationalIntegerMultiply
type( rational ), intent( in ) :: r
integer, intent( in ) :: i
rationalIntegerMultiply = rational( i * r%n, r%d )
end function rationalIntegerMultiply
end module RationalArithmetic
Link correlati all’argomento
- Elementi di calcolo numerico con il Fortran

Giuseppe Ciaburro








