La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori."— Transcript della presentazione:

1 Le struct con il C

2 Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori

3 Vettori 123-2456789 fabiolucaalexvikateamaia Dati omogenei

4 Struct Singola variabile formata da molti Dati NON omogenei 167 Rossi Mario 12.8 True field (campo)

5 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

6 struct dipendenti { int matricola; string cognome; string nome; double assenzeMedie; bool stagionale; } 167 Rossi Mario 12.8 True

7 struct dipendenti { int matricola = 0; string cognome = “”; string nome; double assenzeMedie; bool stagionale; } ISO C++ proibisce l’inizializzazione

8 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

9 Ma è possibile assegnare valori in fase di dichiarazione come per gli array: dipendenti dip1 = {167, “Rossi”, “Mario”, 12.8, false};

10 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

11 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)...

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

13 Possiamo dichiarare quante variabili ‘dipendente’ vogliamo: dipendenti dip1; dipendenti dip2; dipendenti tarzan; dipendenti fantozzi;

14 ATTENZIONE!! dipendenti.nome = …

15 Si possono molto efficacemente combinare array e struct dipendenti personale[100]; Array di struct personale[i].cognome = “…”

16 Oppure … una struct contenente vettori struct Classe { string sigla; //4aITIS int numeroAlunni; string NomiAlunni[35]; } Classe c; … c.NomiAlunni[i] = “…”;

17 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)

18 Dati Richiesti titolo autore durata (secondi) url (download)

19 Esempio di file contenente i dati del catalogo MP3 Nome File: mp3.txt Roc Boys Jay-Z 182 www.mp3.com/topTen/01.mp3 D.A.N.C.E. Justice 190 www.justice.com/clips/dance.mp3

20 Interfaccia del programma Menu principale 1 – Carica catalogo da disco 2 – Salva catalogo su disco 3 – Aggiungi MP3 4 – Ricerche 9 – Fine programma

21 Funzioni scritte dal prof. - 1 FILES string 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.

22 Funzioni scritte dal prof. – 2 STRINGHE string maiuscolo(string s); string minuscolo(string s); string intToString(int n); bool cercaStringa(string cercata, string cercaQui) Funzioni libreria standard STRINGHE int atoi(string s);

23 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

24 Questioni da affrontare - 2 Il file contiene stringhe di testo ma la durata nella struct è un int; come comportarsi?


Scaricare ppt "Le struct con il C. Cosa sono ? Variabili strutturate come i vettori … … ma che superano una limitazione dei vettori."

Presentazioni simili


Annunci Google