36
I Dati . i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è un’aggregazione di dati; ogni linguaggio di programmazione mette a disposizione un set di tipi di dati le cui proprietà e struttura sono definite da esso: essi prendono il nome di tipi di dati predefiniti, ma lascia anche l’opportunità al programmatore di definirne altri che prendono il nome di dati definiti dall’utente

I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

Embed Size (px)

Citation preview

Page 1: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

I Dati.i tipi di dati possono essere classificati in:

tipi semplici o elementaritipi strutturati al cui interno vi è un’aggregazione di dati;ogni linguaggio di programmazione mette a disposizione un set di tipi di dati le cui proprietà e struttura sono definite da esso: essi prendono il nome di tipi di dati predefiniti, ma lascia anche l’opportunità al programmatore di definirne altri che prendono il nome di dati definiti dall’utente

Page 2: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

Il tipo intero

Rappresenta un sottoinsieme dell’insieme Z dei numeri relativi la cui estensione è determinata dal numero dei bit (N) che il linguaggio mette a disposizione per rappresentarlo secondo la regola -2N-1, +2N-1 con un bit riservato al segno.Qualora il risultato di un’operazione esce fuori da questo intervallo si genera un errore di overflow o underflow. Un altro errore che si può verificare è la divisione by 0. questi errori che si possono verificare durante l’esecuzione di un programma vengono segnalati come errori di run-time.

Page 3: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

Il tipo intero

Le operazioni che si possono eseguire su questi dati sono le quattro operazioni algebriche la cui divisione deve dare risultato intero (10/4=2) con l’accorgimento di evitare una divisione per 0. Essi permettono anche l’aritmetica modulare che rappresenta il resto delle divisione intera.Le operazioni di confronto sono comuni a tutti i tipi di dati il cui dominio è totalmente ordinato e sono >, >=, <,<=, = e != che indica il diverso o not=.Il risultato delle operazioni di confronto è un valore vero o falso.

Page 4: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

Il tipo realeIl tipo reale è rappresentato in virgola mobile dove una serie di bit sono destinati alla mantissa che rappresenta le cifre che compongono il numero e una parte destinata all’esponente che determina la posizione della virgola se N sono i bit destinati alla mantissa e M quelli per l’esponente il loro range sarà -2N-1*10 -exp, +2N-1*10 –exp dove exp vale 2M-1.Con i dati di tipo reale si possono effettuare tutte le operazioni degli interi tranne la divisione intera che diventa decimale e il modulo. Ma si allarga ad esso tutte le operazioni di potenza, esponente, e si definiscono tutte le funzioni matematiche che hanno per dominio e condominio i valori reali. Anche in questo insieme sono definite le operazioni di confronto e gli errori di run-time degli interi.

Page 5: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

Il tipo carattereRappresentano tutti i caratteri disponibili nel computer. Su di essi si possono effettuare le operazioni di confronto, essendo un insieme totalmente ordinato.Ma quale valore essi assumono? Assumono tutti i valori definiti nel codice ASCII, il quale ad ogni carattere fa corrispondere un valore numerico Per distinguere il carattere 1 dal numero 1 i caratteri vano racchiusi tra apici cosi ‘1’ è il carattere che è diverso dal valore intero o numerico 1.Del resto con il simbolo a si intende una variabile che può contiene la lettera ‘a’.Va anche sottolineato che ‘a’ è diversa da’A’, infatti il loro codice differisce di un valore di 32 (97 la prima, 65 la seconda).

Page 6: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

Il tipo booleanoLe variabili booleane possono assumere due soli valori costanti: vero o falso; questi tipi di dati sono importanti nella definizione delle condizioni e dei risultati dei confronti.Le operazioni che si possono effettuare sono l’or, l’and e il not:l’operatore not nega il valore di verità dell’operando su cui agisce.L’operatore or richiede due operandi e dà come risultato vero se almeno una dei due operandi è veroL’operatore and richiede due operandi e dà come risultato vero se entrambi gli operandi sono veri.

Page 7: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

Le istruzioni

• La sequenza

• La selezione

• L’iterazione

Page 8: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

La sequenza

Lettura cin>>a;

Scrittura cout<<“questo è un messaggio”

Assegnamento a=3; a=b; a=b+4;

Incremento a++; a--; a=a+b;

Richiamo di funzioni a=sqrt(b);

Richiamo di procedure line(3,3,10,10);

Page 9: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

La selezione

Binaria

Permette di modificare il flusso dell’algoritmo tra due possibili vie:

Una relativa al verificarsi della condizione testata e l’altra al caso falso

Multipla

Permette di modificare il flusso dell’algoritmo tra diverse possibili alternative ognuna relativa ad un valore dell’espressione che si valuta:

Page 10: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

La selezione Binaria if (condizione){ blocco_istruzione_caso_vero}else{ blocco_istruzione_caso_falso}

Page 11: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

La selezione BinariaLa condizione è un’espressione booleanaa==ba!=ba>b && a<ca<b ||a>=c

Page 12: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

La selezione Binaria Il ramo della condizione falsa (caso else) è opzionaleE può avere la seguente sintassiif (condizione){ blocco_istruzione_caso_vero}

Page 13: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

La selezione Binariail blocco istruzione contiene istruzioni in sequenza e può contenere al suo interno un’altra istruzione di selezione:Infatti il blocco di selezione è considerato un’unica istruzioneif (condizione){ if (condizione) { blocco_istruzione_caso_vero } else { blocco_istruzione_caso_falso }}else{ blocco_istruzione_caso_falso}

Page 14: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

La selezione multipla

Permette di modificare il flusso dell’algoritmo tra diverse possibili alternative ognuna relativa ad un valore dell’espressione che si valuta:

Page 15: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

La selezione multiplaHa la seguente sintassi:Switch (espressione){ Case 1:{ blocco_istruzione_caso_1 } break;Case 2:{ blocco_istruzione_caso_2 } break ;Case 3:{ blocco_istruzione_caso_3 } break;Default { blocco_istruzione } }

Page 16: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

La selezione multiplaCome si nota a differenza della selezione binaria non si valuta una condizione, ma un’espressione che può assumere diversi valori di tipo numerico, carattere o di valori costantiIl caso default è opzionale

Page 17: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione

Con controllo in testa while

Con controllo in coda do.. while

Con contatore for

Page 18: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione while

La sintassi è la seguente:while (condizione){ blocco istruzione}Il blocco di istruzione viene ripetuto fino a quando la condizione risulta veraQuante volte viene ripetuto il ciclo?

Page 19: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione while

Quante volte viene ripetuto il ciclo?

Questo dipende da come viene espressa la condizione e la modalità di modificarne il valore di veritàVi sono dei cicli che non vengono mai eseguiti

nel caso la condizione risulta falsa al primo test

EsempioInt a=0While (a<0){ cout <<a;}

Page 20: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione while

Quante volte viene ripetuto il ciclo?

Vi sono dei cicli che non terminano mainel caso la condizione risulta sempre vera

EsempioInt a=0;While (a==0){ cout <<a;}

Page 21: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione while

Quante volte viene ripetuto il ciclo?

Vi sono dei cicli di cui possiamo dire quante volte vengono eseguitinel caso la condizione ha un valore iniziale e un valore finale

EsempioInt a=0;While (a<10){ cout <<a; a++;}

Il ciclo verrà eseguito esattamente 10 volte

Page 22: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione while

Quante volte viene ripetuto il ciclo?

Vi sono dei cicli che non possiamo prevedere quante volte vengono eseguiti

nel caso la condizione diventa falsa al verificarsi di un certo evento che non possiamo prevedere

Esempio

while(!kbhit());

Int ,n,a=0;While (a<100){ cin>>n; a=a+n;}cout<<a;

Page 23: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione do… whileViene definito con controllo in coda perché prima esegue il blocco di istruzione e poi valuta se lo deve ripetere:

La sintassi è la seguente:do{ blocco _struzione}while (condizione);

Il blocco di istruzione viene ripetuto fino a quando la condizione risulta veraQuante volte viene ripetuto il ciclo? la risposta è almeno una voltaIl numero preciso dipende da come viene posta la condizione secondo i criteri visti per il WhileCon il do…while non si può implementare il caso che il ciclo non venga mai eseguito.

Page 24: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione

In realtà si può affermare che ogni ciclo while si può tradurre in un ciclo do..while e viceversa, con opportuni accorgimenti

Vediamo alcuni esempi:

Page 25: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione

Int a=0;While (a<10){ cout <<a; a++;}

Int a=0;do{ cout <<a; a++;}While (a<10);

Page 26: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione: un uso particolare costruire menù di scelta:

bool continua = true;

int scelta;

int main(){

do{

cout<<“inserire un numero tra 1 e 3 , 0 per terminare”

cin>>scelta;

switch(scelta){

case 1: cout<<endl<<“hai premuto 1”; break;

case 2: cout<<endl<<“hai premuto 2”; break;

case 3: cout<<endl<<“hai premuto 3”; break;

case 0: continua = false; break;

default cout<<endl<<“scelta errata”;

} //fine switch

} while (continua);

return 0;

} // fine main

Page 27: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione for

Detto anche ciclo con contatoreSi utilizza quando è noto il numero delle volte che si vuole eseguire il ciclo

La sintassi è la seguente:

for (contatore = valore_iniziale; condizione_di_uscita; incermento/decremento ){ blocco istruzione}

Page 28: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione for

Contatore = valore_inizialeVuol dire che devo attribuire alla variabile che funge da contatore del ciclo un valore iniziale Es cont=0; cont=1; cont=1000; cont=-30;

Page 29: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione for

Condizione di uscitaEsprime la condizione di uscita del ciclo, cioè il valore finale che deve assumere la variabile contatoreEs cont<100; cont<=100; cont>0;cont>=1;cont>= -10;cont <-100:

Page 30: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione for

Incremento/decrementoIndica ad ogni ciclo di quanto (il passo) la variabile contatore deve essere incrementata o decrementata.Di solito il passo è unitarioE si incrementa quando il valore iniziale della variabile contatore è minore del valore finale, altrimenti si decrementaEsempifor(cont=0; cont<100; cont++) //cont è di tipo int{}for(cont=10; cont>0; cont--){}for(cont=0; cont<100; cont+=2){}for(cont=0; cont<100; cont+=0.20) // cont è di tipo float{}

Page 31: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione for

Il ciclo for può essere tradotto nel while e viceversa?La risposta è si Vediamo alcuni esempiInt a=10;while (a>0){ cout <<a; a--;}

for (int a=10; a>0; a--) cout<<a;

Page 32: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione for

Il ciclo for può essere tradotto nel while e viceversa?La risposta è si Vediamo alcuni esempichar c=‘a’;while (c<=‘z’){ cout <<c; c++;}

for (char c=‘a’; c<=‘z’; c++) cout<<c<<“ “;

Page 33: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

L’iterazione for

Anche questo costrutto si può nidificare vediamo il codice che calcola e stampa a video la tavola pitagorica

for (i=1;i<=10;i++){ for (j=1;J<=10;j++) cout<<i*j<<“ “; cout<<endl;}

Page 34: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

Esercizio

Scrivere un programma C++ che permette di scegliere una delle seguenti funzionalità

1. Visualizzare i primi n numeri

2. Visualizzare i primi n numeri pari

3. Visualizzare i primi n numeri dispari

4. Visualizzare i primi n numeri primi

5. Visualizzare i primi n numeri della serie di Fibonacci

6. Dato in input n calcolare n!

7. Dato in input n stampare le prime n righe del triangolo di Tartaglia

Il compito deve essere consegnato non oltre la prima ora di lunedì 7 maggio

Indicazioni e suggerimenti per lo svolgimento

Nelle pagine successive

Page 35: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

Indicazioni

Il programma deve essere realizzato con l’uso di:

Selezione multipla e deve contenere un ciclo continuo fino a quando l’utente decide di uscire dal programma

Ogni caso di scelta deve essere realizzato con un sottoprogramma

Ogni caso deve essere realizzato con il ciclo for

Page 36: I Dati. i tipi di dati possono essere classificati in: tipi semplici o elementari tipi strutturati al cui interno vi è unaggregazione di dati; ogni linguaggio

Suggerimenti

Serie di Fibonacci

0 1 1 2 3 5 8 13……

n!

è il fattoriale di n esso assume i seguenti valori

se n=0 fatt(n)=1

Altrimenti fatt(n(= n*n-1*n-2* *2*1

cioè è il prodotto dei numeri da 1 a n

Triangolo di Tartaglia

Ogni elemento è dato da j!/(k!*(j-k)!

Con J che va da 0 a n dove n è il numero delle righe

e k va da 0 a j