La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE Con particolare riferimenti al linguaggio C++ FINE.

Presentazioni simili


Presentazione sul tema: "I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE Con particolare riferimenti al linguaggio C++ FINE."— Transcript della presentazione:

1 I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE Con particolare riferimenti al linguaggio C++ FINE

2 Dati principali 2 Indice Cosa sono i dati I tipi di dato Dati semplici –InteriInteri –RealiReali –CaratteriCaratteri –BooleaniBooleani Le stringhe Dati strutturati –ArrayArray –MatriceMatrice –RecordRecord Tabella Soluzioni degli esercizi

3 Dati principali 3 COSA SONO I DATI? PROGRAMMA = DATI + ISTRUZIONI I dati sono gli oggetti su cui vengono eseguite le istruzioni. Tutti i linguaggi di programmazione prevedono un insieme di dati predefiniti che lutente può utilizzare nella realizzazione dei propri programmi. INPUT ( dati) OUTPUT (dati) PROCESSO ( istruzioni) Nel processo possono essere utilizzati altre variabili di lavoro come totalizzatori,contatori,...

4 Dati principali 4 DATI Semplici o predefiniti Strutturati o composti I TIPI DI DATO

5 Dati principali 5 Dati semplici short int int long float char bool Numerici Alfanumerici intero realecarattere booleani In C++

6 Dati principali 6 Particolarità degli interi Gli interi in C++ si definiscono int il loro intervallo di definizione (ossia il valore minimo e il valore massimo che può assumere una variabile di tipo int) dipende dal numero di byte che occupano in memoria e questo dipende dal particolare linguaggio di programmazione E possibile definire dati di tipo intero più grandi (long in C++) con ampiezza di 4 byte Sia ai dati int che ai long può essere applicato il modificatore unsigned che permette di definire valori solo positivi, raddoppiando lampiezza del dato.

7 Dati principali 7 Riepilogo dei dati di tipo intero TipoNumero di byte Valore minimoValore massimo short int 2 byte long int 4 byte int 2 byte Coincide con short nella rappresentazione in 2 byte e con long in quella a 4 byte unsigned int 2 byte unsigned long 4 byte

8 Dati principali 8 I tipi decimali del C++ sono: float occupa 32 bits (4 byte) e rappresenta valori positivi e negativi con 7 cifre significative. double occupa 64 bits (8 byte) e rappresenta valori positivi e negativi con 15 cifre significative. Particolarità dei reali

9 Dati principali 9 Riepilogo dei dati di tipo reale ESERCIZIO : LETTURA E SCRITTURA DI NUMERI Codifica un programma in cui definisci diversi tipi di variabili numeriche; acquisisci le variabili in input e le riscrivi in output soluzione

10 Dati principali 10 I dati definiti char possono contenere un solo carattere Un char occupa 1 byte. Una costante carattere va racchiusa tra apice singolo; es: char c; c=A; // alla variabile c viene assegnata la lettera A. In C++ i dati di tipo carattere sono assimilati a interi (ne viene considerata la codifica interna in codice ASCII). Es: char c; c=a; // assegna alla variabile c il valore numerico 97 c=A; // assegna alla variabile c il valore numerico 65 Particolarità dei caratteri

11 Dati principali 11 I dati definiti bool possono assumere valore true (vero) oppure false (falso) Un bool occupa 1 byte. Particolarità dei booleani Esempio : bool piove;//definizione variabile booleana piove = true;//assegnazione valore VERO piove = false; //assegnazione valore FALSO Si osservi che il valore true corrisponde a 1 il valore false corrisponde a 0

12 Dati principali 12 ATTENZIONE Nel linguaggio C++ esistono altri tipi di dato predefiniti; in questi appunti sono stati presi in considerazione solo i dati più frequentemente usati nelle esercitazioni; il C++ consente al programmatore la definizione di tipi utente attraverso il comando typedef; le dimensioni dei dati possono differire a seconda del compilatore e dellelaboratore utilizzato; E possibile conoscere il numero di byte di memoria occupati da qualsiasi tipo di variabile mediante la funzione del linguaggio sizeof( ). Esempio: cout<<\nDimensione di una variabile double <

13 Dati principali 13 Un particolare tipo di dato: le stringhe Una stringa è una sequenza finita di caratteri Esempio : il nome di una persona, il codice fiscale, la targa di unautomobile Es: char nome [11] è una stringa che consente di memorizzare parole formate al massimo da 10 caratteri (lundicesimo carattere è riservato a \0 inserito dal sistema come terminatore di stringa) IMPORTANTE : In C++ la stringa è chiusa da un carattere di controllo (\0) che determina la fine della stringa. ALDO\ Posizione carattere

14 Dati principali 14 Le stringhe definite con il tipo string Nelle versioni più recenti di C++, includendo la libreria si può definire una variabile di tipo string #include …. string nome; cin>>nome//input di una stringa cout<

15 Dati principali 15 Anomalie nellinput di stringhe Però cè da notare che linput con le stringhe presenta due inconvenienti: 1)non è possibile fare alcun controllo sulle dimensioni della stringa; 2)se nella stringa è presente uno spazio lacquisizione si interrompe. Esempio:char nome[11]; cin>>nomese lutente digita maria pia il programma acquisisce solo maria lutente può digitare mariangelamaria (più di 11 caratteri) e il programma li acquisisce cout<<\nil nome è : <>cognomese lutente digita de carolis il programma acquisisce solo de cout<<\nil cognome è : <

16 Dati principali 16 Soluzione delle anomalie nellinput di stringhe Adottando luso della libreria e definendo una variabile di tipo string si può utilizzare la seguente istruzione per linput Questa istruzione consente di acquisire anche le stringhe che presentano spazi al loro interno #include.. string nome; getline(cin,nome,'\n'); soluzione ESERCIZIO : PROVA GETLINE Codifica un programma in cui definisci una stringa di tipo string, la acquisisci con getline e la mostri in output; nel test scrivi carlo alberto

17 Dati principali 17 Altre anomalie nellinput di stringhe Cè da notare che quando si termina linput e si preme il pulsanteinvio, tale pulsante invia un carattere di terminazione dellinput che rimane in memoria e che potrebbe essere male interpretato nei casi in cui si debbano acquisire ulteriori caratteri int main( ) { string nome; int altezza; cout<<"\nindica l'altezza"<>altezza; cout "<

18 Dati principali 18 Il buffer dellinput Si tratta di unarea di memoria RAM in cui vengono memorizzati i dati in input. Esempio:- da tastiera vengono digitati i seguenti caratteri : abcdefg - poi viene dato un invio, - il programma in esecuzione acquisisce la stringa, - mette il terminatore \0 e poi il carattere \n per la fine dellinput Perciò nel buffer troviamo: a b c d e\0 \n Alcune istruzione per linput non puliscono il buffer, cioè non eliminano il carattere \n, e listruzione cin è una di queste E allora come si deve fare se in un programma si devono acquisire numeri (utilizzando listruzione cin) e poi stringhe (utilizzando listruzione getline) senza incorrere in questi inconvenienti?

19 Dati principali 19 Pulizia del buffer dellinput Per eliminare ulteriori caratteri immessi si utilizza la funzione cin.ignore (1); che consente di eliminare un carattere in eccedenza int main( ) { string nome; int altezza; cout<<"\nindica l'altezza"<>altezza; cin.ignore(1); cout "<

20 Dati principali 20 Dati strutturati In molti problemi si ha la necessità di aggregare molti dati di tipo semplice (int, float, char, ecc.) perché sono logicamente correlati Esempio: il prezzo di 100 articoli di magazzino, I tempi di una classifica di una competizione Un elenco di persone Ma non è conveniente definire singolarmente ciascuna variabile, sia perché potrebbero essere in numero molto elevato, sia perché tutte le variabile fanno capo logicamente ad ununica struttura

21 Dati principali 21 Struttura di dati Si parla di struttura di dati quando si raggruppano più oggetti dello stesso tipo o di tipo diverso, assegnando un nome unico alla struttura. Array bidimensionale (matrice) Record monodimensionale (vettore) Tipi di dati strutturati

22 Dati principali 22 Si consideri una struttura composta da 12 elementi di tipo intero chiamata giorni nella quale vengono memorizzati il numero di giorni di cui è composto ciascun mese; è possibile conoscere i giorni di aprile facendo riferimento al 4° elemento della struttura. giorni 1° 2° 3° 4° 5° 6° 7° 8° 9° 10° 11° 12° Esempio 1: il mese

23 Dati principali 23 La struttura giorni è un array monodimensionale o vettore e in C++ viene definito: int giorni [12] ; i array monodimensionale - vettore Tipo base Nome del vettore dimensione del vettore indice di posizione valore di ciascuna componente

24 Dati principali 24 int giorni[12]; lelaborazione del vettore avviene elemento per elemento; lindividuazione del singolo elemento è possibile attraverso luso di una variabile intera denominataindice; la posizione occupata dal primo elemento in C++ è zero; lindice i varia quindi da 0 a 11 (da zero ad ampiezza del vettore diminuita di uno). i Caratteristiche di un vettore

25 Dati principali 25 Lacquisizione e la visualizzazione del vettore giorni prevede lelaborazione di tutti i suoi elementi uno alla volta. Il ciclo for (iterazione enumerativa) è, in questi casi, la più adatta: int giorni[12]; // dichiarazione del vettore int i; // dichiarazione dellindice for (i = 0; i<12; i++) // ciclo di acquisizione cin>>giorni[i]; for (i = 0; i<12; i++) // ciclo di visualizzazione cout<

26 Dati principali 26 Si memorizzano le temperature rilevate per una settimana, ad unora stabilita, in tre città italiane (Milano, Roma, Palermo). Si ottiene una tabella formata da 3 righe (le città) e 7 colonne (i giorni). A tale tabella si assegna il nome temperature e per riferirsi alla temperatura rilevata a Roma di venerdì, bisognerà considerare il valore contenuto nella 2 a riga, 5 a colonna. temperature giorni -> 1° 2° 3° 4° 5° 6° 7° Milano 1° Roma 2° Palermo 3° Esempio 2 : temperature

27 Dati principali 27 La tabella temperature è un array bidimensionale o matrice e in C++ viene definito: int temperature[3][7]; // 3 righe 7 colonne lelaborazione della matrice avviene elemento per elemento; lindividuazione del singolo elemento è possibile attraverso luso di due variabili indice (uno di riga e uno di colonna); la posizione occupata dal primo elemento in C++ è [0][0]; lindice i (di riga) varia quindi da 0 a 2, lindice j (di colonna) varia da 0 a 6. Se il numero di righe è uguale al numero di colonne si ha una matrice quadrata. Array bidimensionale - matrice

28 Dati principali 28 Le stringhe come vettori di caratteri Una stringa così definita char nome [11] è un vettore di caratteri ma ricordiamo che consente di memorizzare parole formate al massimo da 10 caratteri (lundicesimo carattere è riservato a \0 inserito dal sistema come terminatore di stringa) MARIOLINA\ Posizione carattere

29 Dati principali 29 Input e output di stringhe Pur essendo vettori monodimensionali, linput e loutput delle stringhe non ha bisogno di elaborare ogni singolo carattere output: cout<> nome; // lettura di una stringa Comunque la stringa può essere trattata come vettore di caratteri nei casi in cui è necessario controllare il singolo carattere ? Esempio:indicare la lettera iniziale di un nome char nome[11]; …………… cout >nome; char iniziale=' ' ; cout "<

30 Dati principali 30 I record Si definisce record quel dato che, pur rappresentando un unico oggetto di elaborazione, è formato da più elementi (campi), anche di diverso tipo. Esempio:uno studente può essere caratterizzato dallinsieme dei dati: cognome, nome, classe, anno di nascita... Studente1 {Marcoldi, Antonio, 3A, 1995} Studente2 {Angelini, Paolo, 5A, 1993}

31 Dati principali 31 struct stud { string cognome; string nome; int annoNascita; }; definizione di una variabile del tipo record stud definizione dei campi del record definizone di un nuovo tipo di variabile record stud presenza obbligatoria del ; La definzione della struct definisce solo il tracciato record, ma non contiene dati. Occorre definire una variabile di tipo stud Un record è costruito in base ad un tracciato record ben definito. Il tracciato record è lelenco del campi che formano il record Definizione dei record stud studente; Il programma elabora i singoli campi della variabile studente

32 Dati principali 32 struct stud { string cognome; string nome; int annoNascita; }; stud studente ; Esempio: cout<<\ncognome = <

33 Dati principali 33 struct stud { string cognome; string nome; int annoNascita; }; stud classe [20]; In particolare parliamo di vettori di record di solito detti tabella perché formati da tante colonne quanti sono i campi del record e da tante righe quanti sono gli elementi dellarray Tabelle - vettori di record Facendo sempre riferimento al record stud, vogliamo definire 20 studenti di una stessa classe. Perciò scriveremo Tipo base Nome della tabella dimensione della tabella

34 Dati principali 34 Esempio di una tabella indicecognomenomeannoNascita Come nei vettori le righe sono individuate da un indice di posizione (che parte da 0) mentre ogni riga essendo un record, avrà tutti i campi della struttura 6° record Campo nome del 7° record

35 Dati principali 35 Nellelaborazione di una tabella si usano le tecniche già viste per i vettori e per i record. Elaborazione di una tabella In quanto vettore, lelaborazione di ciascuna riga della tabella avviene una alla volta. Poiché ogni riga è un record, ogni campo deve essere elaborato singolarmente Il ciclo for (iterazione enumerativa) è, in questi casi, il più adatto

36 Dati principali 36 Elaborazione di una tabella struct stud { string cognome; string nome; int annoNascita; }; stud classe [20]; int i; // dichiarazione dellindice for (i = 0; i<20; i++) // ciclo di acquisizione {getline(cin,classe[i].cognome,\n); getline(cin,classe[i].nome,\n); cin>>classe[i].annoNascita; cin.ignore(1); } for (i = 0; i<20; i++) // ciclo di visualizzazione {cout<

37 Dati principali 37 Soluzione esercizi Lettura e scrittura di numeri Occupazione di memoria Saluto Prova Getline Elaborazione vettore di numeri Record libro Tabella biblioteca

38 Dati principali 38 Esercizio : lettura e scrittura di numeri #include using namespace std; int main() { int intero; long interoGrande; float decimale; double decimaleGrande; cout >intero; cout<<"\nl'intero indicato vale : "<interoGrande; cout<<"\nl'intero grande indicato vale : "<decimale; cout<<"\nil decimale indicato vale : "<decimaleGrande; cout<<"\nil decimale grande indicato vale : "<

39 Dati principali 39 Esercizio : occupazione di memoria #include using namespace std; int main() { cout<<"\nDimensione di una variabile int :"<

40 Dati principali 40 Esercizio : saluto #include using namespace std; int main() { string nome; cout<<"\ncome ti chiami?"<>nome; cout<<"\nCaio "<

41 Dati principali 41 Esercizio : prova getline #include using namespace std; int main() { string nome; cout<<"\nindica un nome"<

42 Dati principali 42 Esercizio : elaborazione vettore di numeri #include using namespace std; int main() { int v[10]; int i=0; cout<<"\nACQUISIZIONE DI DATI DEL VETTORE "<>v[i]; } cout<<"\nVISUALIZZAZIONE DEI DATI DEL VETTORE "<

43 Dati principali 43 Esercizio : record libro #include using namespace std; struct libro { string titolo; float prezzo; int numeroPagine; }; int main() { libro L1, L2; cout<<"\nindica i dati del primo libro:"<L1.titolo; cout >L1.prezzo; cout >L1.numeroPagine; cout<<"\nindica i dati del secondo libro:"<L2.titolo; cout >L2.prezzo; cout >L2.numeroPagine; Elenco eserciziTeoria Codifica un programma in cui definisci un tipo record con tracciato : titolo del libro, costo, numero di pagine; acquisisci poi due libri e comunica tutti i dati di quello che costa di più if(L1.prezzo>L2.prezzo) { cout<<"\nIl libro piu' costo e' "<

44 Dati principali 44 Esercizio : tabella biblioteca Elenco eserciziTeoria Definisci un tipo record con tracciato : titolo del libro, costo, numero di pagine; definisci poi una tabella di 10 libri; acquisisci i libri della tabella e comunica poi tutti i dati ; calcola il prezzo medio dei libri #include #include #include #define dim 10 using namespace std; struct libro { string titolo; float prezzo; int numeroPagine; }; int main() { libro biblioteca[dim]; int i=0; float s=0, m=0; system("cls"); cout >biblioteca[i].titolo; cout >biblioteca[i].prezzo; cout >biblioteca[i].numeroPagine; } cout<<"\nVISUALIZZAZIONE DEI LIBRI"; for(i=0;i

45 Dati principali 45 FINE


Scaricare ppt "I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE Con particolare riferimenti al linguaggio C++ FINE."

Presentazioni simili


Annunci Google