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.

376 Puntatori<br />

END PROGRAM sort<br />

Si riporta per completezza un esempio di utilizzo di questo programma:<br />

Inserisci il numero di stringhe, (massimo 100): 4<br />

Stringa n. 1 --> Michele<br />

Stringa n. 2 --> Giovannina<br />

Stringa n. 3 --> Carolina<br />

Stringa n. 4 --> Antonio<br />

Lista ordinata:<br />

===============<br />

Antonio<br />

Carolina<br />

Giovannina<br />

Michele<br />

Un utilizzo parimenti efficiente dei puntatori potrebbe essere quello di definire un array di<br />

puntatori e di assegnarne ciascun componente ad un record di un database. In tal modo, le<br />

operazioni di ordinamento del file secondo una chiave non richiederà più lo spostamento di<br />

(eventualmente) grossi record ma soltanto una diversa associazione di questi ultimi ai rispettivi<br />

target.<br />

Si noti, tuttavia, che se da un lato i puntatori possono aumentare l’efficienza di alcune<br />

procedure di calcolo, è anche vero che un loro uso eccessivo può rendere meno leggibile (e<br />

gestibile) il codice sorgente aumentando, di conseguenza, la probabilità di commettere errori.<br />

Inoltre non è da sottovalutare un altro aspetto connesso all’impiego di puntatori, che è la<br />

già citata impossibilità da parte dei compilatori di produrre codice ottimizzato qualora nel<br />

programma sorgente si sia fatto uso di puntatori.<br />

7.7 Puntatori a sezioni di array<br />

Come visto in precedenza, un puntatore può puntare ad un intero array nello stesso modo<br />

con cui può puntare ad uno scalare. Le seguenti istruzioni rappresentano un valido esempio di<br />

questa caratteristica:<br />

REAL, DIMENSION(100,100), TARGET :: targ<br />

REAL, DIMENSION(:,:), POINTER :: punt<br />

punt => targ<br />

Ma un puntatore può essere riferito anche ad una sezione di array, come mostrato dal seguente<br />

programma:<br />

PROGRAM point_sez_array<br />

IMPLICIT NONE<br />

INTEGER :: i

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

Saved successfully!

Ooh no, something went wrong!