I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE Con particolare riferimenti al...

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

Transcript of I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE Con particolare riferimenti al...

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

I DATII PRINCIPALI TIPI DI DATO

UTILIZZATI IN PROGRAMMAZIONE

Con particolare riferimenti al linguaggio C++

FINE

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

Dati principali 2

Indice

• Cosa sono i dati• I tipi di dato• Dati semplici

– Interi

– Reali

– Caratteri

– Booleani

• Le stringhe

• Dati strutturati– Array

– Matrice

– Record

• Tabella • Soluzioni degli esercizi

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

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 l’utente 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,...

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

Dati principali 4

DATI

Semplicio

predefiniti

Strutturati o

composti

I TIPI DI DATO

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

Dati principali 5

Dati semplici

short int int long float char bool

Numerici Alfanumerici

intero reale

carattere booleani

In C++

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

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 l’ampiezza del dato.

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

Dati principali 7

Riepilogo dei dati di tipo intero

Tipo Numero di byte

Valore minimo Valore massimo

short int 2 byte -32.768 +32.767

long int 4 byte -2.147.483.648 +2.147.483.647

int 2 byte Coincide con short nella rappresentazione in 2 byte e con long in quella a 4 byte

unsigned int 2 byte 0 ...+65.535

unsigned long

4 byte 0 + 4.294.967.295

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

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

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

Dati principali 9

Riepilogo dei dati di tipo reale

TIPO DIM. VALORI float 4 bytes da ±1.2E-38 a ±3.4E38 double 8 bytes da ±2.2E-308 a ±1.8E308

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

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

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

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

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

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

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 dell’elaboratore 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

“<<sizeof(double); ESERCIZIO : OCCUPAZIONE DI MEMORIA

Codifica un programma in cui verifichi l’occupazione in byte dei diversi tipi di variabili utilizzando l’istruzione sizeof

soluzione

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

Dati principali 13

Un particolare tipo di dato: le stringheUna stringa è una sequenza finita di caratteri

Esempio : il nome di una persona, il codice fiscale, la targa di un’automobile

Es: char nome [11] è una stringa che consente di memorizzare parole formate al massimo da 10 caratteri (l’undicesimo carattere è riservato a ‘\0’ inserito dal sistema come terminatore di stringa)

IMPORTANTE : In C++ la stringa è chiusa da un carattere dicontrollo (‘\0’) che determina la fine della stringa.

A L D O \0

0 1 2 3 4 5 6 7 8 9 10Posizione

carattere

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

Dati principali 14

Le stringhe definite con il tipo string

Nelle versioni più recenti di C++ , includendo la libreria <string> si può definire una variabile di tipo string

#include <string>….string nome;cin>>nome //input di una stringacout<<“ciao signor “<<nome<<endl; //output di una stringa..

Potremmo utilizzare la typedef (per la definizione di un nuovo tipo di dato):typedef char stringa[11]; // nuovo tipo vettore di caratteri chiamato stringa stringa nome; // variabile nome di tipo stringa

ESERCIZIO : SALUTOCodifica un programma che mette a video un messaggio di saluto indirizzato ad una persona il cui nome è chiesto in input; il nome deve essere definito di tipo string

soluzione

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

Dati principali 15

Anomalie nell’input di stringhePerò c’è da notare che l’input con le stringhe presenta due inconvenienti:

1) non è possibile fare alcun controllo sulle dimensioni della stringa;

2) se nella stringa è presente uno spazio l’acquisizione si interrompe.

Esempio: char nome[11];cin>>nome se l’utente digita “maria pia” il programma acquisisce

solo “maria”

l’utente può digitare “mariangelamaria” (più di 11caratteri) e il programma li acquisisce

cout<<“\nil nome è : “<<nome<<endl;

Esempio: string cognome;cin>>cognome se l’utente digita “de carolis” il programma acquisisce

solo “de”

cout<<“\nil cognome è : “<<cognome<<endl;

PROVA A CODIFICARE QUESTI DUE ESEMPI PER VERFIFICARE TALI ANOMALIE

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

Dati principali 16

Soluzione delle anomalie nell’input di stringhe

Adottando l’uso della libreria <string> e definendo una variabile di tipo string

si può utilizzare la seguente istruzione per l’input

Questa istruzione consente di acquisire anche le stringhe che presentano spazi al loro interno

#include <string>..string nome;

getline(cin,nome,'\n');

soluzione

ESERCIZIO : PROVA GETLINECodifica un programma in cui definisci una stringa di tipo string , la acquisisci con getline e la mostri in output; nel test scrivi “carlo alberto”

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

Dati principali 17

Altre anomalie nell’input di stringhe

C’è da notare che quando si termina l’input e si preme il pulsante “invio”, tale pulsante invia un carattere di terminazione dell’input che rimane in memoria e che potrebbe essere male interpretato nei casi in cui si debbano acquisire ulteriori caratteriint main( ){ string nome; int altezza;

cout<<"\nindica l'altezza"<<endl; cin>>altezza; cout<<"\nl'altezza è -->"<<altezza<<endl; cout<<"\nindica un nome"<<endl; getline(cin,nome,'\n'); cout<<"\nil nome è -->"<<nome<<endl; system("PAUSE"); return EXIT_SUCCESS;}

Se provi ad eseguire questo programma, cosa accade?

Non ti è permesso digitare il nome!!!

PERCHE’?

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

Dati principali 18

Il buffer dell’input

Si tratta di un’area 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 dell’input

Perciò nel buffer troviamo: a b c d e\0 \n

Alcune istruzione per l’input non “puliscono” il buffer, cioè non eliminano il carattere ‘\n’, e l’istruzione cin è una di queste

E allora come si deve fare se in un programma si devono acquisire numeri (utilizzando l’istruzione cin) e poi stringhe (utilizzando l’istruzione getline) senza incorrere in questi inconvenienti?

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

Dati principali 19

Pulizia del buffer dell’inputPer 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"<<endl; cin>>altezza; cin.ignore(1); cout<<"\nl'altezza è -->"<<altezza<<endl; cout<<"\nindica un nome"<<endl; getline(cin,nome,'\n'); cout<<"\nil nome è -->"<<nome<<endl; system("PAUSE"); return EXIT_SUCCESS;}

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

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 correlatiEsempio:

•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 un’unica struttura

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

Dati principali 21

Struttura di datiSi 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

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

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°31 28 31 30 31 30 31 31 30 31 30 31

Esempio 1: il mese

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

Dati principali 23

La struttura giorni è un array monodimensionale o vettore e in C++ viene definito:

int giorni [12] ;

i 0 1 2 3 4 5 6 7 8 9 10 11

31 28 31 30 31 30 31 31 30 31 30 31

array monodimensionale - vettore

Tipo base Nome del vettore dimensione del vettore

indice di posizione valore di ciascuna componente

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

Dati principali 24

int giorni[12];

• l’elaborazione del vettore avviene elemento per elemento;

• l’individuazione del singolo elemento è possibile attraverso l’uso di una variabile intera denominata“indice”;

• la posizione occupata dal primo elemento in C++ è zero;

• l’indice i varia quindi da 0 a 11 (da zero ad ampiezza del vettore diminuita di uno).

i 0 1 2 3 4 5 6 7 8 9 10 11

31 28 31 30 31 30 31 31 30 31 30 31

Caratteristiche di un vettore

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

Dati principali 25

L’acquisizione e la visualizzazione del vettore giorni prevede l’elaborazione 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 dell’indicefor (i = 0; i<12; i++) // ciclo di acquisizione cin>>giorni[i]; for (i = 0; i<12; i++) // ciclo di visualizzazione cout<<giorni[i];

Elaborazione di array monodimensionale

ESERCIZIO : ELEBORAZIONE VETTORE DI NUMERI

Codifica un programma in cui definisci un vettore di 10 numeri , lo acquisisci e lo mostri in output, utilizzando un ciclo enumerativo

soluzione

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

Dati principali 26

Si memorizzano le temperature rilevate per una settimana, ad un’ora 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 2a riga, 5a colonna.

temperature

giorni -> 1° 2° 3° 4° 5° 6° 7°

Milano 1° Roma 2° Palermo 3°

Esempio 2 : temperature

12 11 13 16 15 10 14 15 15 13 18 16 12 17 17 18 15 20 16 12 20

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

Dati principali 27

La tabella “temperature” è un array bidimensionale o matrice e in C++ viene definito: int temperature[3][7]; // 3 righe 7 colonne

• l’elaborazione della matrice avviene elemento per elemento;

• l’individuazione del singolo elemento è possibile attraverso l’uso di due variabili indice (uno di riga e uno di colonna);

• la posizione occupata dal primo elemento in C++ è [0][0];

• l’indice i (di riga) varia quindi da 0 a 2 , l’indice 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

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

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 (l’undicesimo carattere è riservato a ‘\0’ inserito dal sistema come terminatore di stringa)

M A R I O L I N A \0

0 1 2 3 4 5 6 7 8 9 10Posizione

carattere

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

Dati principali 29

Input e output di stringhe

Pur essendo vettori monodimensionali, l’input e l’output delle stringhe non ha bisogno di elaborare ogni singolo carattere

output: cout<<nome; // visualizzazione di una stringa

input: cin>> 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<<"\ndigita un nome : ";cin>>nome; char iniziale=' ' ;cout<<"\nil nome inizia con la lettera --> "<<nome[0]<<endl;

digita un nome: paola

Il nome inizia con la lettera p

Risultato dell’esecuzione

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

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 caratterizzatodall’insieme dei dati: cognome, nome, classe, anno di nascita...

Studente1{Marcoldi, Antonio, 3A, 1995}

Studente2{Angelini, Paolo, 5A, 1993}

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

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 è l’elenco del campi che formano il record

Definizione dei record

stud studente;

Il programma elabora i singoli campi della variabile studente

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

Dati principali 32

struct stud{ string cognome; string nome; int annoNascita;};

stud studente;

Esempio: cout<<“\ncognome = “<<studente.cognome; cout<<“\nnome = “<<studente.nome; cout<<“\nanno di nascita = “<<studente.annoNascita;

La visualizzazione del record prevede l’output dei singoli campi

Dato un record stud

e una variabile studente di tipo stud

L’input e l’output dei record avviene un campo alla volta

ESERCIZIO:RECORD LIBROCodifica 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ù

soluzione

Trattamento dei campi di un record

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

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 dell’array

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

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

Dati principali 34

Esempio di una tabella

indice cognome nome annoNascita

0

1

2

3

4

5

6

7

8

9

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

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

Dati principali 35

Nell’elaborazione di una tabella si usano le tecniche già viste per i vettori e per i record.

Elaborazione di una tabella

• In quanto vettore, l’elaborazione 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

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

Dati principali 36

Elaborazione di una tabellastruct stud{ string cognome; string nome; int annoNascita;}; stud classe [20];

int i; // dichiarazione dell’indicefor (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<<classe[i].cognome<<endl; cout<<classe[i].nome<<endl; cout<<classe[i]. annoNascita <<endl; }

Acquisizione e visualizzazione della tabella classe

ESERCIZIO: TABELLA BIBLIOTECA 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

soluzione

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

Dati principali 37

Soluzione esercizi

• Lettura e scrittura di numeri• Occupazione di memoria• Saluto• Prova Getline• Elaborazione vettore di numeri• Record libro• Tabella biblioteca

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

Dati principali 38

Esercizio : lettura e scrittura di numeri#include <cstdlib>#include <iostream>using namespace std;

int main(){ int intero; long interoGrande; float decimale; double decimaleGrande;

cout<<"\nindica un intero"<<endl; cin>>intero; cout<<"\nl'intero indicato vale : "<<intero<<endl;

cout<<"\nindica un intero grande"<<endl; cin>>interoGrande; cout<<"\nl'intero grande indicato vale : "<<interoGrande<<endl;

cout<<"\nindica un decimale"<<endl; cin>>decimale; cout<<"\nil decimale indicato vale : "<<decimale<<endl;

cout<<"\nindica un decimale grande"<<endl; cin>>decimaleGrande; cout<<"\nil decimale grande indicato vale : "<<decimaleGrande<<endl;

system("PAUSE"); return EXIT_SUCCESS;}

Elenco eserciziTeoria

Codifica un programma in cui definisci diversi tipi di variabili numeriche; acquisisci le variabili in input e le riscrivi in output

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

Dati principali 39

Esercizio : occupazione di memoria

#include <cstdlib>#include <iostream>#include <string>using namespace std;int main(){ cout<<"\nDimensione di una variabile int :"<<sizeof(int)<<endl; cout<<"\nDimensione di una variabile short int :"<<sizeof(short int)<<endl; cout<<"\nDimensione di una variabile long int :"<<sizeof(long int)<<endl; cout<<"\nDimensione di una variabile float :"<<sizeof(float)<<endl; cout<<"\nDimensione di una variabile double :"<<sizeof(double)<<endl; cout<<"\nDimensione di una variabile char :"<<sizeof(char)<<endl; cout<<"\nDimensione di una variabile bool :"<<sizeof(bool)<<endl; system("PAUSE"); return EXIT_SUCCESS;}

Elenco eserciziTeoria

Codifica un programma in cui verifichi l’occupazione in byte dei diversi tipi di variabili utilizzando l’istruzione sizeof

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

Dati principali 40

Esercizio : saluto

#include <cstdlib>#include <iostream>#include <string>using namespace std;

int main(){ string nome;

cout<<"\ncome ti chiami?"<<endl; cin>>nome; cout<<"\nCaio "<<nome<<", io sono il computer !"<<endl; system("PAUSE"); return EXIT_SUCCESS;}

Elenco eserciziTeoria

Codifica un programma che mette a video un messaggio di saluto indirizzato ad una persona il cui nome è chiesto in input; il nome deve essere definito di tipo string

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

Dati principali 41

Esercizio : prova getline

#include <cstdlib>#include <iostream>#include <string>using namespace std;

int main(){ string nome;

cout<<"\nindica un nome"<<endl; getline(cin,nome,'\n'); cout<<"\nil nome è -->"<<nome<<endl; system("PAUSE"); return EXIT_SUCCESS;}

Elenco eserciziTeoria

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”

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

Dati principali 42

Esercizio : elaborazione vettore di numeri

#include <cstdlib>#include <iostream>#include <string>using namespace std;int main(){ int v[10]; int i=0; cout<<"\nACQUISIZIONE DI DATI DEL VETTORE "<<endl; for(i=0;i<10;i++) {cout<<"\nindica il numero in posizione "<<i+1<<" : "; cin>>v[i]; } cout<<"\nVISUALIZZAZIONE DEI DATI DEL VETTORE "<<endl; for(i=0;i<10;i++) {cout<<"\nil numero in posizione "<<i+1<<" e' "<<v[i]<<endl; } system("PAUSE"); return EXIT_SUCCESS;} Elenco eserciziTeoria

Codifica un programma in cui definisci un vettore di 10 numeri , lo acquisisci e lo mostri in output, utilizzando un ciclo enumerativo

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

Dati principali 43

Esercizio : record libro#include <cstdlib>#include <iostream>#include <string>using namespace std;struct libro { string titolo; float prezzo; int numeroPagine; };

int main(){ libro L1, L2; cout<<"\nindica i dati del primo libro:"<<endl; cout<<"\ntitolo : "; cin>>L1.titolo; cout<<"\nprezzo : "; cin>>L1.prezzo; cout<<"\npagine : "; cin>>L1.numeroPagine; cout<<"\nindica i dati del secondo libro:"<<endl; cout<<"\ntitolo : "; cin>>L2.titolo; cout<<"\nprezzo : "; cin>>L2.prezzo; cout<<"\npagine : "; cin>>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' "<<L1.titolo; cout<<" con prezzo "<<L1.prezzo; cout<<" e pagine "<<L1.numeroPagine<<endl; } else { cout<<"\nIl libro piu' costo e' "<<L2.titolo; cout<<" con prezzo "<<L2.prezzo; cout<<" e pagine "<<L2.numeroPagine<<endl; }

system("PAUSE"); return EXIT_SUCCESS;}

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

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 <cstdlib>#include <iostream>#include <string>#define dim 10using 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<<"\nACQUISIZIONE DEI LIBRI"; for(i=0;i<dim;i++) { cout<<"\ntitolo : "; cin>>biblioteca[i].titolo; cout<<"\nprezzo : "; cin>>biblioteca[i].prezzo; cout<<"\npagine : "; cin>>biblioteca[i].numeroPagine; }

cout<<"\nVISUALIZZAZIONE DEI LIBRI"; for(i=0;i<dim;i++) { cout<<"\ntitolo : "<<biblioteca[i].titolo; cout<<" prezzo : "<<biblioteca[i].prezzo; cout<<" pagine : "<<biblioteca[i].numeroPagine<<endl; } for(i=0;i<dim;i++) { s=s+biblioteca[i].prezzo; } m=s/dim; cout<<"\nla media dei prezzi e' : "<<m<<endl; system("PAUSE"); return EXIT_SUCCESS;}//fine

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

Dati principali 45

FINE

FINE