Questo sito contribuisce alla audience di

I tipi derivati e le funzioni generiche nel Fortran

Come si interfacciano le due risorse disponibili nel Fortran

fortran 90,intel fortran,visual fortran,compilatore fortran

I tipi definiti dall’utente detti anche tipi derivati,caratteristici del Fortran 90, si comportano in modo simile ai record o alle strutture disponibili in altri linguaggi. I tipi derivati sono costruiti dai tipi intrinseci o da altri tipi di derivati e permetteno la creazione di tipi di dati che si comportano come se fossero tipi intrinseci.

Le funzioni generiche, che rappresentano un’altra novità del Fortran 90, contribuiscono a rendere il supporto per i tipi di dati derivati completo. Una funzione generica come ‘+’ può essere estesa ad operare direttamente su un tipo derivato, che combina la convenienza di notazione e la chiarezza degli operatori con l’astrazione tipica dei tipi derivati. Il modulo e il programma di seguito illustrano la proroga del generico operatore `+ ‘, ad operare su un tipo derivato.

module IntervalArithmetic
type interval
real a ! Left endpoint
real b ! Right endpoint
end type interval

interface operator (+)
module procedure addIntervals
end interface

contains

function addIntervals( first, second )
type( interval ) addIntervals
type( interval ), intent( in ) :: first, second

! Numerically, the left and right endpoints of the interval
! sum should be rounded down and up, respectively, to
! ensure that numbers in the two intervals are also in the
! sum. This has been omitted to simplify the example.

addIntervals = interval( first%a + second%a, &
first%b + second%b )
end function addIntervals
end module IntervalArithmetic

program Intervals
use IntervalArithmetic

type( interval ) :: x = interval( 1.0, 2.0 )
type( interval ) :: y = interval( 3.0, 4.0 )
type( interval ) z

z = x + y
print *, ‘Interval sum: (’, z%a, ‘,’, z%b, ‘).’
end program Intervals