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.

6.6 Procedure intrinseche per gli array 345<br />

INTEGER,PARAMETER :: last_number = 100<br />

INTEGER,DIMENSION(last_number) :: numbers<br />

INTEGER :: i, number_of_primes, ac<br />

! Start<br />

! Inizializza l’array con i valori (/0, 2, 3, ..., last_number/)<br />

! NB: c’e’ 0 al posto di 1 perché 1 rappresenta un caso particolare.<br />

numbers = (/0,(ac,ac=2,last_number)/)<br />

DO i=2,last_number<br />

IF (numbers(i) /= 0) THEN ! if questo numero e’ primo...<br />

numbers(2*i : last_number : i) = 0 ! ...se ne eliminano i multipli<br />

END IF<br />

END DO<br />

! Conta i primi<br />

number_of_primes = COUNT(numbers/=0)<br />

! Raccoglie i numeri primi nelle prime posizioni dell’array<br />

numbers(1:number_of_primes) = PACK(numbers, numbers /= 0)<br />

! Li stampa<br />

PRINT "(A,I3,A)", "Numeri primi fra 1 e ",last_number,": "<br />

PRINT "(5I7)", numbers(1:number_of_primes)<br />

END PROGRAM Crivello_di_Eratostene<br />

Si riporta, per completezza, anche l’output del programma:<br />

Numeri primi fra 1 e 100:<br />

2 3 5 7 11<br />

13 17 19 23 29<br />

31 37 41 43 47<br />

53 59 61 67 71<br />

73 79 83 89 97<br />

6.6.4 Procedure di trasformazione<br />

RESHAPE(SOURCE,SHAPE[,PAD][,ORDER])<br />

Costruisce un array di forma differente a partire da un array di input.<br />

L’argomento SOURCE è un array di tipo qualsiasi. Esso fornisce gli elementi per l’array<br />

risultante. La sua ampiezza deve essere maggiore o uguale a PRODUCT(SHAPE) se PAD è omesso<br />

oppure se ha ampiezza nulla.<br />

L’argomento SHAPE è un array di sette elementi al massimo, rango unitario e dimensione<br />

costante. Esso definisce la forma dell’array risultante. Non può avere ampiezza nulla ed i suoi<br />

elementi non possono avere valori negativi.<br />

L’argomento opzionalePAD è un array avente stesso tipo e stessi parametri di kind diSOURCE.<br />

<strong>Il</strong> suo compito è quello di fornire valori ”di riserva” nel caso in cui l’array risultante avesse<br />

ampiezza maggiore di SOURCE.

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

Saved successfully!

Ooh no, something went wrong!