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.

268 Unità di Programma<br />

<strong>Il</strong> seguente frammento di codice fornisce un esempio di utilizzo delle subroutine di generazione<br />

di numeri casuali:<br />

REAL :: x<br />

...<br />

CALL RANDOM_SEED() ! inizializzazione<br />

CALL RANDOM_NUMBER(x) ! generazione<br />

Quello che segue è un ulteriore esempio che mostra l’utilizzo degli altri parametri formali di<br />

RANDOM_SEED:<br />

CALL RANDOM_SEED ! Inizializzazione<br />

CALL RANDOM SEED(SIZE=k) ! Legge quanti numeri il processore<br />

! utilizza come valori iniziali<br />

CALL RANDOM_SEED(PUT=seed(1:k)) ! Inserisce valori di partenza scelti<br />

! dall’utente<br />

CALL RANDOM_SEED(GET=old(1:k)) ! Legge i valori iniziali ’’attuali’’<br />

5.12.2 Procedure di manipolazione dei bit<br />

<strong>Il</strong> <strong>Fortran</strong> <strong>90</strong>/<strong>95</strong> dispone di un insieme di undici procedure per la manipolazione e di una per la<br />

interrogazione dei bit presenti negli interi. Tali procedure sono basate su un modello secondo<br />

cui un intero si compone di s bit wk (con k = 0, 1, . . ., s − 1), in una sequenza che procede da<br />

destra a sinistra, basata sul valore non negativo s−1 k=0 wk × 2k .<br />

Questo modello è valido solo in relazione a queste procedure intrinseche e coincide con il già<br />

descritto modello per gli interi (cfr. capitolo 1) quando r è una potenza intera di 2 e ws−1 = 0,<br />

ma quando ws−1 = 1 i modelli non corrispondono ed il valore espresso come un intero può<br />

variare da processore a processore.<br />

BIT_SIZE(I)<br />

E’ una funzione di interrogazione che fornisce il numero di bit nel modello assunto per gli interi<br />

aventi stesso parametro di kind di I.<br />

<strong>Il</strong> prossimo frammento di programma mostra come sia possibile interrogare un processore<br />

per conoscere il numero di bit necessario a rappresentare un intero di assegnato parametro di<br />

kind:<br />

INTEGER :: i=1<br />

INTEGER(KIND=SELECTED_INT_KIND(2)) :: i1<br />

INTEGER(KIND=SELECTED_INT_KIND(4)) :: i2<br />

INTEGER(KIND=SELECTED_INT_KIND(9)) :: i3<br />

! ...<br />

i1=INT(i,KIND(2))<br />

i2=INT(i,KIND(4))<br />

i3=INT(i,KIND(9))

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

Saved successfully!

Ooh no, something went wrong!