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.

2.3 Istruzioni di ripetizione 119<br />

INTEGER :: n ! valore di input<br />

INTEGER :: fib ! numero di Fibonacci<br />

INTEGER :: a, b ! variabili di appoggio<br />

PRINT*, " Inserisci n > 2: "<br />

READ(*,*) n<br />

a = 1<br />

b = 1<br />

DO i = 1,n/2-1<br />

a = a+b<br />

b = b + a<br />

END DO<br />

IF (MOD(n,2)==1) b = b+a<br />

fib = b<br />

PRINT*, fib<br />

END PROGRAM fibonacci<br />

In tal modo si è facilmente migliorata l’efficienza del codice. Si noti, a proposito del secondo<br />

procedimento, che il valore finale dell’indice i del ciclo è stato dimezzato in quanto, come si<br />

può facilmente verificare, a monte della prima istruzione di assegnazione, i valori di a e b sono,<br />

rispettivamente, fib(2×i-1) e fib(2×i).<br />

Un’ultima doverosa osservazione da fare riguarda i cicli a condizione. Si guardi il seguente<br />

programmino:<br />

PROGRAM prova_sum<br />

IMPLICIT NONE<br />

INTEGER :: n<br />

REAL :: somma=0.0<br />

REAL, PARAMETER :: base=2.0/3.0<br />

n = 1<br />

DO<br />

somma = somma+(base)**n<br />

PRINT*, i, somma<br />

IF(somma>=5.0) EXIT<br />

n = n+1<br />

END DO<br />

PRINT*, "Convergenza raggiunta dopo ",n," iterazioni"<br />

STOP<br />

END PROGRAM prova_sum<br />

il cui scopo, come appare evidente, è quello di determinare la somma parziale della serie<br />

numerica<br />

∞<br />

n 2<br />

3<br />

n=1<br />

arrestando la somma quando il valore di quest’ultima raggiunge o supera il valore 5.0. Ebbene,<br />

il problema grosso è che la serie in esame converge al valore 2.0 per cui il precedente ciclo

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

Saved successfully!

Ooh no, something went wrong!