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.

58 Tipi ed espressioni<br />

Se non è disponibile, per la specifica implementazione, un modello avente la precisione<br />

(minima) specificata, la funzione SELECTED_INT_KIND restituirà valore -1 e ogni dichiarazione<br />

che usi quel parametro di kind genererà un errore al tempo di compilazione.<br />

Ad esempio, l’espressione:<br />

SELECTED_INT_KIND(2)<br />

definisce un tipo di intero corrispondente alla rappresentazione di kind capace di esprimere<br />

valori compresi nell’intervallo −10 2 ÷ 10 2 . Un esempio appena più complesso è il seguente:<br />

INTEGER :: short, medium, long, toolong<br />

PARAMETER (short=SELECTED_INT_KIND(2), medium=SELECTED_INT_KIND(4), &<br />

long=SELECTED_INT_KIND(10), toolong=SELECTED_INT_KIND(100))<br />

INTEGER(short) :: a, b, c<br />

INTEGER(medium) :: d, e, f<br />

INTEGER(long) :: g, h, i<br />

INTEGER(toolong) :: l, m, n<br />

Le precedenti dichiarazioni specificano che la precisione dovrebbe essere almeno:<br />

• short: (−10 2 , 10 2 )<br />

• medium: (−10 4 , 10 4 )<br />

• long: (−10 10 , 10 10 )<br />

• toolong: (−10 100 , 10 100 )<br />

Le costanti di un tipo di kind selezionato sono denotate aggiungendo un underscore (”_”)<br />

seguito dal numero di kind o, meglio, dal nome che (eventualmente) lo identifica:<br />

100_2<br />

1238_4<br />

1050_short<br />

54321_long<br />

Chiaramente, ad esempio, l’espressione 1050_short potrebbe non essere valida ove mai lo<br />

specificatore KIND=short non fosse capace di rappresentare numeri maggiori di 1000.<br />

Dal momento che spesso tutti gli interi di un programma (o buona parte di essi) si caratterizzano<br />

per il medesimo valore del parametro di kind, risulta più efficiente confinare la definizione<br />

di tale parametro all’interno di un modulo che sia reso disponibile a tutte le procedure che<br />

dichiarino tali interi. In tal modo, una eventuale variazione del valore di questo parametro nel<br />

solo file contenente il modulo avrà effetto ”automaticamente” sull’intero programma, come nel<br />

seguente esempio:

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

Saved successfully!

Ooh no, something went wrong!