Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoTina Santi Modificato 9 anni fa
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?
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.