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.

36 Tipi ed espressioni<br />

risultati imprevedibili. A titolo di esempio, l’espressione SQRT(2) è formalmente scorretta in<br />

quanto la funzione radice quadrata, SQRT, non può essere usata con argomenti di tipo intero.<br />

Le seguenti espressioni costituiscono esempi di impiego di funzioni intrinseche:<br />

Espressione<br />

SQRT(678.36)<br />

Significato<br />

√<br />

678.36<br />

EXP(y) ey a+SIN(0.5*teta) a + sin 1<br />

2ϑ 1 a<br />

0.5*(b+a/SINH(x))+LOG10(3) (b + ) + log 3<br />

2 sinh x<br />

b/(ABS(x-y)*eps) b/|x − y|ε<br />

EXP(ABS(h/2.)) e |h/2|<br />

SQRT(b*c+SQRT(a))<br />

√<br />

bc + a<br />

Come si vede da questi esempi, una qualunque espressione può essere usata come argomento di<br />

una funzione intrinseca: in particolare essa può ridursi ad una semplice costante, ad una variabile,<br />

oppure può coinvolgere operazioni aritmetiche e/o riferimenti ad altre funzioni intrinseche.<br />

E’, inoltre, permesso utilizzare come argomento di una funzione intrinseca la funzione stessa.<br />

Se in un’espressione aritmetica compare un riferimento ad una funzione intrinseca, questa<br />

viene valutata prima di effettuare qualunque altra operazione. Da ciò segue che le espressioni<br />

che compaiono come argomenti di una funzione saranno le prime ad essere valutate e, se esse<br />

utilizzano a loro volta una funzione, questa avrà la precedenza.<br />

<strong>Il</strong> seguente programma mostra un semplice esempio di utilizzo di alcune delle più comuni<br />

funzioni intrinseche matematiche: ATAN2 (per la valutazione della funzione arcotangente) eSQRT<br />

(per il calcolo della radice quadrata). <strong>Il</strong> suo scopo è quello di convertire coordinate cartesiane<br />

in coordinate sferiche:<br />

PROGRAM globo<br />

! Fornisce le coordinate sferiche di un punto note le sue coordinate<br />

! cartesiane e verifica il risultato<br />

IMPLICIT NONE<br />

REAL :: r, theta, phi, x, y, z<br />

! start<br />

WRITE(*,*) " Inserisci x, y e z: "<br />

READ(*,*) x,y,z<br />

r = SQRT(x**2+y**2+z**2)<br />

theta = ATAN2(y,x)<br />

phi = ATAN2(SQRT(x**2+y**2),z)<br />

WRITE(*,*) " Coordinate sferiche: "<br />

WRITE(*,*) r, theta, phi<br />

x = r*COS(theta)*SIN(phi)<br />

y = r*SIN(theta)*SIN(phi)<br />

z = r*COS(phi)<br />

WRITE(*,*) " Coordinate cartesiane corrispondenti: "<br />

WRITE(*,*) x,y,z

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

Saved successfully!

Ooh no, something went wrong!