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.

96 Istruzioni di controllo<br />

Una cosa importante da tenere a mente è che tutti i selettori devono escludersi a vicenda,<br />

nel senso che uno stesso valore non può apparire in più di un selettore.<br />

Un altro esempio interessante è rappresentato dal seguente programma il quale rappresenta<br />

semplicemente una variazione dell’esempio già visto in precedenza per il calcolo delle radici reali<br />

di una equazione algebrica di secondo grado; l’unica differenza è rappresentata dal fatto che in<br />

questo caso le condizioni sul segno del discriminante vengono gestite da un costrutto SELECT<br />

CASE piuttosto che da un costrutto IF THEN ELSE:<br />

PROGRAM eq2bis<br />

! Scopo: calcolare le (eventuali) radici reali di una<br />

! equazione algebrica di secondo grado<br />

IMPLICIT NONE<br />

REAL, PARAMETER :: epsilon=1.0e-8<br />

! Coefficienti dell’equazione e discriminante<br />

REAL :: a, b, c, delta<br />

! Radici reali<br />

REAL :: root1, root2<br />

! Variabili di appoggio<br />

REAL :: rt_d, two_a<br />

! Selettore del costrutto SELECT CASE<br />

INTEGER :: selettore<br />

!<br />

PRINT*, "Introdurre i coefficienti:"<br />

READ(*,*) a,b,c<br />

delta = b**2 - 4.0*a*c<br />

! Valuta il selettore<br />

selettore = INT(delta/epsilon)<br />

SELECT CASE (selettore)<br />

CASE(1:) ! Radici reali e distinte<br />

rt_d = SQRT(delta)<br />

two_a = 2.0*a<br />

root1 = (-b+rt_d)/two_a<br />

root2 = (-b-rt_d)/two_a<br />

PRINT*, "Le radici sono: ",root1,root2<br />

CASE(0) ! Radici reali e coincidenti<br />

root1 = -b / 2.0 * a<br />

PRINT*, "La radice (di molteplicita’ 2) e’: ",root1<br />

CASE(:-1) ! Radici complesse e coniugate<br />

PRINT*, "L’equazione non ammette radici reali"<br />

END SELECT<br />

END PROGRAM eq2bis<br />

Un esempio di impiego del precedente programma potrebbe essere il seguente:<br />

C:\MYPROG>eq2case

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

Saved successfully!

Ooh no, something went wrong!