25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1.5 Istruzioni di assegnazione ed espressioni 33<br />

Operazione Risultato<br />

Parte reale Parte immaginaria<br />

z1 + z2 u1 + u2 v1 + v2<br />

z1 − z2 u1 − u2 v1 + v2<br />

z1 ∗ z2 u1u2 − v1v2 u1v2 + v1u2<br />

u1u2 + v1v2 u2v1 − v2u1<br />

z1/z2<br />

|z2|<br />

|z2|<br />

2 u2 + v2 2<br />

|z2|<br />

0<br />

<strong>Il</strong> seguente frammento di programma mostra alcuni esempi di espressioni complesse:<br />

COMPLEX, PARAMETER :: z1=(5.,3.), z2=(2.5,-1.1)<br />

COMPLEX :: somma, diff, prod, resul<br />

somma = z1+z2 ! ris: (7.5,1.9)<br />

diff = z1-z2 ! ris: (2.5,4.1)<br />

prod = z1*z2 ! ris: (15.8,2.0)<br />

resul = (z1+z2-(5.5,-0.1))/(2.,2.) ! ris: (1.,0.)<br />

Espressioni aritmetiche miste<br />

Tutte le operazioni aritmetiche viste finora erano applicate ad operandi dello stesso tipo ed il<br />

tipo del risultato coincideva con quello degli operandi. E’ tuttavia possibile utilizzare in una<br />

stessa espressione operandi di tipo diverso dando luogo a quelle che vengono dette operazioni<br />

miste. Le espressioni che contengono una o più operazioni miste si chiamano espressioni miste.<br />

Per quanto concerne il tipo del risultato, vale la regola generale secondo cui se il tipo di due<br />

operandi non è lo stesso, quello più ”debole” viene automaticamente modificato in quello più<br />

”forte” mediante una operazione, detta di conversione, che permette il passaggio da una rappresentazione<br />

interna ad un’altra. Questo processo di conversione è subordinato alla seguente<br />

gerarchia fra i tipi degli operandi:<br />

COMPLEX più forte<br />

REAL ↓<br />

INTEGER più debole<br />

Un’operazione che coinvolga sia operandi interi che reali è un esempio di operazione mista.<br />

Quando un compilatore incontra una operazione del genere, converte il valore dell’operando<br />

intero in valore reale sicché l’operazione viene svolta con operandi reali. A titolo di esempio si<br />

possono considerare le seguenti espressioni:<br />

3/2 espressione intera risultato: 1 (intero)<br />

3./2. espressione reale risultato: 1.5 (reale)<br />

3./2 espressione mista risultato: 1.5 (reale)<br />

Tuttavia, la conversione automatica viene effettuata soltanto se l’operando intero e quello reale<br />

compaiono nella stessa operazione. Di conseguenza, una parte dell’espressione potrebbe essere<br />

valutata come una espressione intera e una parte come espressione reale. Ad esempio, la<br />

seguente espressione:

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

Saved successfully!

Ooh no, something went wrong!