le struct con il c. cosa sono ? variabili strutturate come i vettori … … ma che superano una...

24
Le struct con il C

Upload: tina-santi

Post on 02-May-2015

220 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Le struct con il C

Page 2: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Cosa sono ?

Variabili strutturate

come i vettori …

… ma che superano una limitazione dei vettori

Page 3: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Vettori

12 3 -2 4 5 6 7 8 9

fabio luca alex vika tea maia

Dati omogenei

Page 4: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Struct

Singola variabile formata da

molti Dati NON omogenei

167

Rossi

Mario

12.8

True

field (campo)

Page 5: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Struct

E’ poi semplice definire

array di struct

167

Rossi

Mario

12.8

True

168

Verdi

Sandro

8.8

False

169

Bianchi

Achille

0

False

170

Neri

Mario

9

True

167

Rossi

Ugo

13

True

Page 6: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

struct dipendenti{ int matricola;

string cognome;string nome;double assenzeMedie;bool stagionale;

}

167

Rossi

Mario

12.8

True

Page 7: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

struct dipendenti{ int matricola = 0;

string cognome = “”;string nome;double assenzeMedie;bool stagionale;

}

ISO C++ proibisce l’inizializzazione

Page 8: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

struct dipendenti{ int matricola; string cognome; string nome; double assenzeMedie; bool stagionale; }

L’identificatore della struct viene poi usato per dichiarare variabili che rispettano quel modello:

dipendenti dip1, dip2;

0

“”

“”

0

false

Page 9: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Ma è possibile assegnare valori in fase di dichiarazione come per gli array:

dipendenti dip1 =

{167, “Rossi”, “Mario”, 12.8, false};

Page 10: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Per accedere ai campi (field) di una struct si utilizza la cosiddetta notazione ‘punto’:

dipendenti dip;dip.matricola = 167;dip.cognome = “Rossi”;dip.nome = “Mario”;dip.assenzeMedie = 12.8;dip.stagionale = false;

167

Rossi

Mario

12.8

false

Page 11: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

I valori possono essere assegnati / usati in tutti i modi che conoscete essere validi per le variabili semplici:

cin >> dip.matricola;dip1.cognome = dip2.cognome;dip.nome = variabileStringa;dip.assenzeMedie = media();cout << dip.nome; if (dip1.nome == dip2.nome) ...

Page 12: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

E’ possibile copiare tutti i campi da una struct ad un’altra con un solo assegnamento:

dip1 = dip2

Page 13: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Possiamo dichiarare quante variabili ‘dipendente’ vogliamo:

dipendenti dip1;dipendenti dip2;dipendenti tarzan;dipendenti fantozzi;

Page 14: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

ATTENZIONE!!

dipendenti.nome = …

Page 15: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Si possono molto efficacemente combinare

array e struct

dipendenti personale[100];

Array di struct

personale[i].cognome = “…”

Page 16: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Oppure … una struct contenente vettori

struct Classe{ string sigla; //4aITIS int numeroAlunni;

string NomiAlunni[35];} Classe c; …c.NomiAlunni[i] = “…”;

Page 17: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Ed ora un esercizio che mette tutto insieme

Si vuole gestire un catalogo dei propri MP3. Il catalogo può essere salvato e riletto

da disco. Si possono ritrovare i dati sugli MP3

cercando per titolo (anche solo una sua parte)

Page 18: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Dati Richiesti

titoloautore

durata (secondi)url (download)

Page 19: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Esempio di file contenente i dati del catalogo MP3

Nome File: mp3.txt

Roc BoysJay-Z182www.mp3.com/topTen/01.mp3 D.A.N.C.E.Justice190www.justice.com/clips/dance.mp3

Page 20: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Interfaccia del programma

Menu principale

1 – Carica catalogo da disco2 – Salva catalogo su disco3 – Aggiungi MP34 – Ricerche9 – Fine programma

Page 21: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Funzioni scritte dal prof. - 1

FILESstring leggiRiga(string pathFile); restituisce #FINITO# a fine file

registraRiga(string pathFile, string riga);

elimina(string pathFile);

Ogni riga del file corrisponde ad un dato; è possibile preparare qualche dato in partenza con il blocco note.

Page 22: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Funzioni scritte dal prof. – 2

STRINGHEstring maiuscolo(string s);string minuscolo(string s);string intToString(int n);bool cercaStringa(string cercata, string cercaQui)

Funzioni libreria standard

STRINGHEint atoi(string s);

Page 23: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Questioni da affrontare - 1

Dimensionare il vettore: a priori non si sa quanti mp3 ci sono nel file … come fare ?

Sarebbe interessante dimensionare il vettore in modo da poter sempre aggiungere almeno altri 500 mp3 prima di essere costretti a far ripartire il programma

Page 24: Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

Questioni da affrontare - 2

Il file contiene stringhe di testoma la durata nella struct è un int;

come comportarsi?