10 - Le strutture(parziale)

18
LE STRUTTURE Informatica ed elementi di programmazione 1 IEP 2011 by Andrea Malossini 1

Transcript of 10 - Le strutture(parziale)

Page 1: 10 - Le strutture(parziale)

LE STRUTTUREInformatica ed elementi di programmazione 1

IEP 2011 by Andrea Malossini 1

Page 2: 10 - Le strutture(parziale)

Definire una struttura

IEP 2011 by Andrea Malossini 2

Le strutture permettono di raggruppare "logicamente" variabile dello stesso tipo o di tipo diverso. Esempio di definizione di struttura. Non viene riservata memoria.

Le variabili "raggruppate" in una struttura si chiamano membri della struttura

Definizione di una variabile di tipo struct date. Viene riservata la memoria per la variabile.

Per accedere ai membri di una variabile strutturata si usa il nome della variabile strutturata, il punto, ed il nome del membro (non ci devono essere spazi tra i vari identificatori ed il punto)

Assegnamento di valori ai membri della una struttura

Page 3: 10 - Le strutture(parziale)

Strutture ed espressioni

IEP 2011 by Andrea Malossini 3

Esempio: programma per determinare la data di domani.

Page 4: 10 - Le strutture(parziale)

Strutture ed espressioni

IEP 2011 by Andrea Malossini 4

Page 5: 10 - Le strutture(parziale)

Strutture e funzioni 1

IEP 2011 by Andrea Malossini 5

Esempio: programma per determinare la data di domani (con anni bisestili).

Definire la struttura fuori da ogni funzione permette di renderla "visibile" a tutto il file sorgente. Ovvero ogni funzione del file sorgente può utilizzare tale struttura.

Come per tutte le variabile ordinarie, e diversamente dagli array,  le modifiche fatte dalla funzione al parametro formale non si ripercuotono sull'argomento della funzione (passaggio per valore).

Page 6: 10 - Le strutture(parziale)

Strutture e funzioni 1 ‐ cont

IEP 2011 by Andrea Malossini 6

Page 7: 10 - Le strutture(parziale)

Strutture e funzioni 1 ‐ cont

IEP 2011 by Andrea Malossini 7

Ristrutturare il programma in modo tale che venga definita ed usata (dal main) una funzione separata per il calcolo della data di domani.

Page 8: 10 - Le strutture(parziale)

Strutture e funzioni 2

IEP 2011 by Andrea Malossini 8

Page 9: 10 - Le strutture(parziale)

Strutture e funzioni 2 ‐ cont

IEP 2011 by Andrea Malossini 9

Page 10: 10 - Le strutture(parziale)

Strutture e funzioni 2 ‐ cont

IEP 2011 by Andrea Malossini 10

Page 11: 10 - Le strutture(parziale)

IEP 2011 by Andrea Malossini 11

Page 12: 10 - Le strutture(parziale)

Strutture e funzioni 3

IEP 2011 by Andrea Malossini 12

Struttura per raggruppare ore minuti e secondi

L'uso di un carattere non speciale nella stringa di formato, : indica alla scanf che ci si aspetta che le ore, i minuti ed i secondi siano separati da :

Page 13: 10 - Le strutture(parziale)

Strutture e funzioni 3 ‐ cont

IEP 2011 by Andrea Malossini 13

Page 14: 10 - Le strutture(parziale)

Inizializzare le strutture

• Le strutture vengono inizializzate in modo simile agli array:– struct time time1 = {12, 10, 55};

• E' possibile inizializzare solo alcuni membri; quelli non inizializzati avranno valore indefinito (al contrario degli array)– struct time time1 = {12, 10};

IEP 2011 by Andrea Malossini 14

Page 15: 10 - Le strutture(parziale)

Inizializzare le strutture

• E' possibile specificare i membri nella lista di inizializzazione:– struct time time1 = {.hour=12, .minutes=10};

• E' possibile asssegnare uno o più valori ad una strutture in un unica istruzione, usando i letterali composti:– today = (struct date) {.day = 25, .month = 1, 

.year = 2011};

IEP 2011 by Andrea Malossini 15

Page 16: 10 - Le strutture(parziale)

Array di strutture

• Il C permette di definire array di strutture:– struct time experiments[10];

• ed accedervi usando gli indici:– experiments[0].hour = 7;experiments[0].minutes = 10;

• e di inizializzarlo come negli array multidimensionali:– struct time campioni[3] = { {12,10,11}, 

{12,10,25} };  

IEP 2011 by Andrea Malossini 16

Page 17: 10 - Le strutture(parziale)

Array di strutture 1

IEP 2011 by Andrea Malossini 17

Page 18: 10 - Le strutture(parziale)

Array di strutture 1 ‐ cont

IEP 2011 by Andrea Malossini 18