La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a. 2001-2002 – 3° ciclo.

Presentazioni simili


Presentazione sul tema: "Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a. 2001-2002 – 3° ciclo."— Transcript della presentazione:

1 Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a. 2001-2002 – 3° ciclo

2 Strutture Unioni Puntatori, array e struct

3 Strutture (1) Una struttura è una n-upla ordinata di elementi, detti membri o campi, ciascuno dei quali ha uno specifico tipo ed uno specifico nome, e contiene una data informazione. Una struttura rappresenta una collezione di informazioni su un dato oggetto. Una struttura non può contenere una istanza di se stessa. La definizione di una struttura non riserva spazio in memoria; crea solo un nuovo tipo di dato.

4 Strutture (2) Le strutture sono tipo di dato aggregati che contengono elementi di altri tipi. Esempio di definizione di una struttura: struct anagrafico { char nome[20]; int anni; char indirizzo[30]; }; Dopo la parola-chiave struct segue il nome della struttura, detto anche etichetta/marcatore o tag, e, fra parentesi graffe, l’elenco dei componenti della struttura

5 Strutture (3) Dichiarazione di variabili struttura La definizione di una struttura ne descrive il contenuto ma non alloca memoria, cioè non crea istanze. Il nome della struttura è assunto come nuovo tipo, e quindi per istanziarla (cioè per creare una variabile, a cui viene allocata una quantità di memoria pari alla somma delle memorie che competono ai suoi membri ) è sufficiente la dichiarazione usuale. Es.:anagrafico anag1,anag2,anag3 ;

6 Strutture (4) Inizializzazione di variabili struttura L’ inizializzazione di una struttura è ottenuta elencando tra parentesi graffe i valori iniziali dei suoi membri, nello stesso ordine della dichiarazione di tipo. Es.: anagrafico anag1 = {“Rossi”, 30, “via di Tuscolo”};

7 Strutture (5) Le strutture sono tipo di dato aggregati che contengono elementi di altri tipi. struct time {int hour, minute, second;} struct persona { char nome[20]; char cognome[20]; struct {int giorno, mese, anno;}d_nascita; enum{F,M}sesso; } struct rettangolo {int alt, larg;} r; time, persona, rettangolo sono i tag/etichetta che danno il nome alla struttura.

8 Accesso ai membri di una struttura Per accedere ai membri di una struttura si utilizzano gli operatori di accesso ai membri: (o selettori di membro ): operatore punto (.) operatore freccia (->). accede ad un membro tramite il nome della variabile dell’oggetto rettangolo a; rettangolo b; a.alt=3; b.alt=a.alt; -> accede ad un membro di una struttura tramite un puntatore all’oggetto rettangolo* p=&r; p->alt=2; p->larg=4;

9 Puntatori a strutture Come tutti i tipi del C/C++, anche i tipi astratti, e in particolare le strutture, hanno i propri puntatori. Es. : int* p_anni = &anag1.anni ; anagrafico* p_anag = &anag1; Il primo caso dichiara un puntatore a int, che inizializza con l’indirizzo del membro anni dell’ oggetto anag1 ; Il secondo caso dichiara un puntatore al tipo-struttura anagrafico, che inizializza con l’indirizzo dell’ oggetto anag1.

10 Array di strutture I membri di una struttura possono essere array. Anche le istanze di una struttura possono essere array. Es.: struct alunno { char nome[20]; int voto[29];}; definizione alunno studente[40]; dichiarazione variabili studente[5].voto[10] = 30 ; accesso (lo studente n. 5 ha preso 30 nell’esame n. 10 !)

11 Inconvenienti della struct Pro Il programmatore può manipolare direttamente il tipo di dato strutturato. Contro Non esiste alcuna interfaccia che assicuri che il programmatore utilizzi correttamente il dato di tale tipo e che questo abbia sempre un significato.

12 Unioni Le unioni sono dichiarate tramite la parola chiave union e rappresentano aree di memoria che possono contenere dati di tipo diverso ed hanno una dimensione pari alla dimensione del tipo maggiore Es: union {int i; double d;} y; L’unione y occupa 64 bit che possono essere dedicati ad un valore intero lasciandone 32 inutilizzati o ad un valore reale.

13 Unioni (2) L’accesso ai membri dell’unione avviene gli operatori: operatore punto (.) operatore freccia (->) con le modalità note dalla struct.


Scaricare ppt "Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a. 2001-2002 – 3° ciclo."

Presentazioni simili


Annunci Google