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.17 Overloading 297<br />

proposti al paragrafo precedente si sarebbero potuti definire un operatore ”.PLUS.” ed un<br />

operatore ”.DIVIDE.”, invece di estendere il significato degli operatori ”+” e ”/”.<br />

<strong>Il</strong> seguente esempio mostra la definizione di un operatore binario .DIST. che calcola la<br />

distanza tra due ”punti” essendo questi ultimi variabili di un tipo di dati derivato. L’operatore<br />

in questione viene definito all’interno di un modulo sicché potrà essere usato da unità di<br />

programma diverse.<br />

MODULE distance_mod<br />

...<br />

TYPE point<br />

REAL :: x, y ! ascissa e ordinata di point<br />

END TYPE point<br />

...<br />

INTERFACE OPERATOR (.DIST.)<br />

MODULE PROCEDURE calcdist<br />

END INTERFACE<br />

...<br />

CONTAINS<br />

...<br />

FUNCTION calcdist (px,py)<br />

REAL :: calcdist<br />

TYPE (point), INTENT(IN) :: px, py<br />

calcdist = SQRT((px%x-py%x)**2 + (px%y-py%y)**2)<br />

END FUNCTION calcdist<br />

...<br />

END MODULE distance_mod<br />

Un programma chiamante includerà, ad esempio, le istruzioni:<br />

USE distance_mod<br />

TYPE(point) :: px, py<br />

...<br />

distance = px.DIST.py<br />

Si noti che l’operatore .DIST. appena definito è applicabile esclusivamente a variabili di tipo<br />

punto; sarebbe, pertanto, illegale un qualsiasi tentativo di applicare .DIST. a variabili di tipo<br />

diverso.<br />

Un interessante esempio di operatore unario, invece, può essere il seguente. L’area di un<br />

triangolo note le coordinate dei vertici P1(x1, y1), P2(x2, y2) e P3(x3, y3) è, come noto, valutabile<br />

secondo la relazione:<br />

Area = 1<br />

|det A|<br />

2<br />

essendo A la matrice delle coordinate dei vertici così assemblata:<br />

⎡<br />

A = ⎣<br />

x1 y1 1<br />

x2 y2 1<br />

x3 y3 1<br />

⎤<br />

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

Saved successfully!

Ooh no, something went wrong!