G. Mecca – Università della Basilicata – mecca@unibas.it
Linguaggio C++
Tipi Strutturati Ricapitolazione
versione 2.1
Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
2
Ricapitolazione
m
Tipi strutturati
ðuna funzionalità dei linguaggi di programmazione per semplificare la rappresentazione dei dati
m
In sintesi
ðrappresentano un modo per dichiarare molte variabili in una volta sola
ðutilizzo semplificato (es: le variabili possono essere passate ai sottoprog. “in blocchi”)
Tipi Strutturati: Dettagli e Approfondimenti >> Ricapitolazione
G. Mecca - Programmazione Procedurale in Linguaggio C++ 3
m Classificazione dei tipi strutturati
ðarray
ðrecord (o “strutture”)
m Array
ðcollezione di variabili tutte dello stesso tipo ðidentificate da uno o più indici
m Record
ðcollezione di variabili anche di tipi diversi ðidentificate da un nome
Ricapitolazione
m
Array
ðmonodimensionali: un unico indice ðbidimensionali: due indici
ðmultimensionali: molti indici
m
Esempi
float temp[365]; cout << temp[0];
int matrice[10][20]; cout << matrice[1][1];
char cubo[3][3][3]; cout << cubo[2][2][2];
Tipi Strutturati: Dettagli e Approfondimenti >> Ricapitolazione
G. Mecca - Programmazione Procedurale in Linguaggio C++ 5
m
Dichiarazione di array
ðsi specifica il tipo, il nome e la dimensione ðes: float temp[365]; int matrice[10][20];
ðha l’effetto di dichiarare un num. di variabili del tipo pari alla dimensione (es: 365, 10*20)
m
Nota
ðla dimensione deve essere costante ðogni array ha un numero fissato di
componenti
6
Ricapitolazione
m
Dichiarazione di array
ðoltre alle componenti, viene dichiarata una variabile speciale
ðla “variabile array”
m
Variabile array
ðsi chiama come l’array
ðil suo valore è l’indirizzo della prima componente dell’array
Tipi Strutturati: Dettagli e Approfondimenti >> Ricapitolazione
G. Mecca - Programmazione Procedurale in Linguaggio C++ 7
m La variabile array
ðviene utilizzata nel passaggio dei parametri
m Nel sottoprogramma
ðparametro standard di tipo array
ðes: void leggiTemp(float temp[365]);
m Nella chiamata
ðsi usa come argomento la variabile array ðes: float temperature[365];
ð leggiTemp(temperature);
Ricapitolazione
m
Utilizzo di un array monodimensionale
ðle componenti sono variabili ordinarie ðc’è un meccanismo speciale per i nomi ðè possibile utilizzare un’espressione; l’espr.viene calcolata ogni volta per avere l’indice
m
Esempio
for (int i = 0; i < 365; i++) { cout << temperature[i];
}
Tipi Strutturati: Dettagli e Approfondimenti >> Ricapitolazione
G. Mecca - Programmazione Procedurale in Linguaggio C++ 9
m
Utilizzo di un array bidimensionale
ðstavolta servono due espressioni ðuna per ciascun indiceðtipicamente due cicli nidificati
m
Esempio
for (int i = 0; i < 10; i++) { for (int j = 0; j < 20; j++) {
cout << matrice[i][j];
} }
10
Ricapitolazione
m Caratteristica degli array
ðle parentesi quadre
m Attenzione agli utilizzi
ðnella dichiarazione: per indicare le dimensioni dell’intero array)
ðes: float temp[365]; int matrice[10][20];
ðnell’utilizzo: per indicare la componente (una delle variabili dell’array)
ðes: cout << temp[3]; cout << matrice[0][0];
Tipi Strutturati: Dettagli e Approfondimenti >> Ricapitolazione
G. Mecca - Programmazione Procedurale in Linguaggio C++ 11
m
Record
ðconsente di dichiarare più variabili di tipi diversi
ða differenza degli array NON sono una funzionalità essenziale dei linguaggi di prog.
ðes: in FORTRAN 77 non esistono
m
Principale obiettivo
ðrendere più leggibile e compatto il codice ðriducendo le dichiarazioni di var e parametri
Ricapitolazione
m
Dichiarazione di un record
ðI passo: descrizione del modello del record – il modello diventa un nuovo tipo di dato
ðII passo: utilizzo del modello per dichiarare variabili e parametri
m
Variabile record
ðfatto di varie variabili detti attributi
ðstruct equazione {float a, b, c;};
ðequazione eq1, eq2;
Tipi Strutturati: Dettagli e Approfondimenti >> Ricapitolazione
G. Mecca - Programmazione Procedurale in Linguaggio C++ 13
m
Parametro record
ðfatto di vari parametri, uno per ciascun attr.
ðpuò essere standard o per riferimento
ðil passaggio dei parametri avviene in modo ordinario
ðstruct equazione {float a, b, c;};
ðvoid leggiEquazione(equazione &eq);
ðvoid stampaEquazione(equazione eq);
14
Ricapitolazione
m
Nidificazione
ðarray e record possono essere combinati arbitrariamente
ðper costruire strutture di variabili e di parametri complesse
m
Attenzione
ðal meccanismo dei nomi ([] per gli array, . per i record
ðal passaggio per valore di strutture profonde
Tipi Strutturati: Dettagli e Approfondimenti >> Ricapitolazione
G. Mecca - Programmazione Procedurale in Linguaggio C++ 15
Domande ed Esercizi di Riepilogo
Termini della Licenza
m This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Termini della Licenza
m Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare
http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.