Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su...

11
Dati strutturati Dati strutturati A. Ferrari A. Ferrari

Transcript of Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su...

Page 1: Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su insiemi di dati omogenei. linsieme dei valori reali.

Dati strutturatiDati strutturatiA. FerrariA. Ferrari

Page 2: Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su insiemi di dati omogenei. linsieme dei valori reali.

Aggregazione di Aggregazione di dati omogenei: dati omogenei:

arrayarraySpesso gli algoritmi lavorano su insiemi di dati Spesso gli algoritmi lavorano su insiemi di dati omogenei. omogenei.

l’insieme dei valori reali che rappresentano le l’insieme dei valori reali che rappresentano le temperature medie delle capitali europee di un temperature medie delle capitali europee di un giorno dell’anno;giorno dell’anno;i caratteri che rappresentano le note degli accordi i caratteri che rappresentano le note degli accordi di una canzone nel formato anglosassone;di una canzone nel formato anglosassone;i valori interi che rappresentano i voti ottenuti i valori interi che rappresentano i voti ottenuti dagli studenti di una classe in una prova di esame.dagli studenti di una classe in una prova di esame.

Per risolvere problemi che trattano dati di questo Per risolvere problemi che trattano dati di questo tipo si dovrebbero utilizzare tante variabili dello tipo si dovrebbero utilizzare tante variabili dello stesso tipo (int, double o float, char) quanti sono stesso tipo (int, double o float, char) quanti sono gli elementi dell’insieme d’interesse.gli elementi dell’insieme d’interesse.

Page 3: Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su insiemi di dati omogenei. linsieme dei valori reali.

EsempioEsempioPer i voti ottenuti dagli studenti Per i voti ottenuti dagli studenti potremmo utilizzare le variabili voto1, potremmo utilizzare le variabili voto1, voto2, voto3... per memorizzare i voti voto2, voto3... per memorizzare i voti ottenuti rispettivamente del primo ottenuti rispettivamente del primo studente, dal secondo, dal terzo eccstudente, dal secondo, dal terzo ecc

Page 4: Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su insiemi di dati omogenei. linsieme dei valori reali.

ArrayArrayUn array è una collezione omogenea di elementi Un array è una collezione omogenea di elementi individuati da un indice.individuati da un indice.

L’indice è un valore che consente di individuare L’indice è un valore che consente di individuare ogni singolo elemento. ogni singolo elemento.

Molti linguaggi utilizzano come indici valori Molti linguaggi utilizzano come indici valori interi che partono da 1; alcuni consentono di interi che partono da 1; alcuni consentono di scegliere il rango degli indici, altri consentono scegliere il rango degli indici, altri consentono di utilizzare per gli indici anche valori non di utilizzare per gli indici anche valori non numerici.numerici.

Page 5: Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su insiemi di dati omogenei. linsieme dei valori reali.

Dichiarazione di Dichiarazione di un arrayun array

Nella fase di dichiarazione si deve Nella fase di dichiarazione si deve specificare il nome della variabile, il specificare il nome della variabile, il numero degli elementi e il tipo di ogni numero degli elementi e il tipo di ogni elemento.elemento.

Si tratta di una collezione di elementi Si tratta di una collezione di elementi omogenei, quindi tutti dello stesso tipo.omogenei, quindi tutti dello stesso tipo.

In C l’indice del primo elemento è In C l’indice del primo elemento è individuato dal valore 0, i seguenti individuato dal valore 0, i seguenti elementi dai successivi valori interi elementi dai successivi valori interi positivi: 1, 2, 3...positivi: 1, 2, 3...

Page 6: Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su insiemi di dati omogenei. linsieme dei valori reali.

Dichiarazione di Dichiarazione di un array in Cun array in C

Es. dichiarazione una Es. dichiarazione una variabile array di tipo int, variabile array di tipo int, di nome voti, che contiene di nome voti, che contiene dieci valori.dieci valori.

Ciascuno dei contenitori Ciascuno dei contenitori che compongono l’array è che compongono l’array è un elemento, che si un elemento, che si distingue dagli altri per distingue dagli altri per avere un indice univoco avere un indice univoco (posizione dell’elemento (posizione dell’elemento all’interno dell’array).all’interno dell’array).

Il numero degli elementi è Il numero degli elementi è detto lunghezza detto lunghezza dell’array.dell’array.

voti[10] ha un indice che voti[10] ha un indice che assume valori 0, 1, 2... 9 e assume valori 0, 1, 2... 9 e ha lunghezza 10.ha lunghezza 10.

Page 7: Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su insiemi di dati omogenei. linsieme dei valori reali.

Sintassi in CSintassi in CDichiarazione di un array in C:Dichiarazione di un array in C:

<tipo> <variabile> [<lunghezza>]<tipo> <variabile> [<lunghezza>]

Es. Es. float temperature[30]float temperature[30]

Per selezionare un elemento di un array Per selezionare un elemento di un array si utilizza il nome seguito dall’indice si utilizza il nome seguito dall’indice dell’elemento tra parentesi quadredell’elemento tra parentesi quadre

temperature[2]temperature[2] seleziona il terzo seleziona il terzo elemento dell’array temperatureelemento dell’array temperature

Page 8: Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su insiemi di dati omogenei. linsieme dei valori reali.

Selezione di un Selezione di un elementoelemento

Page 9: Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su insiemi di dati omogenei. linsieme dei valori reali.

Operare con gli Operare con gli arrayarray

Dovendo operare su ogni singolo Dovendo operare su ogni singolo elemento dell’array è consigliabile elemento dell’array è consigliabile utilizzare un cicloutilizzare un ciclo

Il ciclo più indicato è il ciclo forIl ciclo più indicato è il ciclo for

Esempio di lettura dell’array voti:Esempio di lettura dell’array voti:

for (i=0;i<10;i++)for (i=0;i<10;i++){{ printf("Inserisci il voto : %d ",i);printf("Inserisci il voto : %d ",i);

scanf ("%f",&voti[i]);scanf ("%f",&voti[i]);}}

Page 10: Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su insiemi di dati omogenei. linsieme dei valori reali.

Dimensione Dimensione dell’arraydell’array

Il numero degli elementi dell’array deve Il numero degli elementi dell’array deve essere definito in fase di dichiarazione e essere definito in fase di dichiarazione e non può variare nel corso dell’esecuzione non può variare nel corso dell’esecuzione del programma.del programma.

In fase di dichiarazione la lunghezza In fase di dichiarazione la lunghezza dell’array deve essere una costantedell’array deve essere una costante

int voti[10]int voti[10] è una dichiarazione corretta è una dichiarazione corretta

int voti[num_stud] int voti[num_stud] è corretta se num_stud è corretta se num_stud è dichiarato come costante ma errato se è dichiarato come costante ma errato se num_stud è dichiarato come variabilenum_stud è dichiarato come variabile

Page 11: Dati strutturati A. Ferrari. Aggregazione di dati omogenei: array Spesso gli algoritmi lavorano su insiemi di dati omogenei. linsieme dei valori reali.

Controllo sui Controllo sui limiti degli indicilimiti degli indiciSe si utilizza un indice maggiore o uguale alla Se si utilizza un indice maggiore o uguale alla lunghezza del vettore, si fa riferimento a spazi di lunghezza del vettore, si fa riferimento a spazi di memoria non riservati dalla dichiarazione e memoria non riservati dalla dichiarazione e l’effetto non sarà prevedibile: molto l’effetto non sarà prevedibile: molto probabilmente si provocheranno errori.probabilmente si provocheranno errori.

Conviene dimensionare adeguatamente il vettore Conviene dimensionare adeguatamente il vettore e, in caso di dubbio, sovradimensionarlo.e, in caso di dubbio, sovradimensionarlo.

In altri linguaggi di programmazione il controllo In altri linguaggi di programmazione il controllo sul valore dell’indice è effettuato dal linguaggio sul valore dell’indice è effettuato dal linguaggio stesso; il C offre la massima libertà al progettista stesso; il C offre la massima libertà al progettista software, che però deve utilizzarla con molta software, che però deve utilizzarla con molta attenzione.attenzione.

Un eccessivo sovradimensionamento causa però Un eccessivo sovradimensionamento causa però uno spreco non giustificato di memoriauno spreco non giustificato di memoria