SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Esercizi su
                  Overflow

Istruzioni di scelta: scelta
                   multipla
I tempi di un programma 1/3
    Una certa azione può essere eseguita


    dal programmatore, dal compilatore, dal
    programma    o   dall'utilizzatore   del
    programma (utente) in tre diversi tempi:
        A tempo di scrittura del programma,
    

        da   parte    del     programmatore

        Es.: il valore iniziale di una variabile o
        di una costante viene definito a tempo
        di scrittura del programma da parte
        del programmatore mediante una
        inizializzazione
                                                 2
I tempi di un programma 2/3
    A   tempo    di   compilazione    del


    programma, da parte del compilatore

    Es.: un errore di sintassi viene
    comunicato dal compilatore appunto
    durante la compilazione del programma




                                            3
I tempi di un programma 3/3
    A tempo di esecuzione del programma,


    da parte dell'utente o del programma
    stesso

    Es.: (su richiesta del programma)
    l'utente decide il valore di una variabile
    mentre il programma stesso è in
    esecuzione




                                                 4
Operatore sizeof
    Restituisce   la    dimensione       di


    un'espressione o di un tipo
        sizeof (espressione)
    

        Numero di byte (char) necessari per
        memorizzare i possibili valori
        dell'espressione
        sizeof (nome_tipo)
    

        Numero di byte (char) necessari per
        memorizzare un oggetto del tipo
        passato come parametro

                                              5
Esercizio: dimensione int 1/2
    Scrivere un programma che stampi


    sullo schermo la dimensione in byte di
    un oggetto di tipo int sulla macchina
    su cui è eseguito




                                         6
Esercizio: dimensione int 2/2

int main()

{

    cout<<sizeof(int)<<endl ;

    return 0 ;

}



                                7
Valori possibili per il tipo int
    Tipicamente un oggetto di tipo int che


    sta su n byte, ossia 8*n bit, può
    contenere valori interi nell'intervallo
    [-2^(8*n – 1), 2^(8*n – 1) - 1]
    Quindi, per esempio su 4 byte si ha



    [-2^31,   2^31     –    1]         =
    [-2147483648, 2147483647]
    Lo standard prevede la presenza di


    costanti o funzioni per conoscere i limiti
    per ogni tipo di dato
                                             8
Overflow




           9
Esercizio 1/3
    Scrivere un programma che definisce


    una variabile i di tipo int, la inizializza ad
    un valore qualsiasi e
    stampa il valore di i



    incrementa i di una unita'



    stampa il nuovo valore di i





                                                10
Esercizio 2/3
main()
{
  int i = 23 ;
  cout<<i<<endl ;
  i++ ;
  cout<<i<<endl ;
}




                               11
Esercizio 3/3
    Modificare il programma affinché


    inizializzi i al seguente valore:

    2147483647
    Quale sarà l'output del programma?



    Eseguirlo per controllare





                                         12
Overflow 1/3
    Si ha quando il valore di una espressione è


    troppo grande (in modulo) per essere
    contenuto
        nel tipo di dato del risultato, oppure
    


        nell'oggetto a cui si vuole assegnare tale
    

        valore
    In tal caso, il risultato o il nuovo valore


    dell'oggetto sarà in generale logicamente
    non correlato con l'operazione effettuata
        E potrà variare da sistema a sistema
    


                                                 13
Overflow 2/3
    E' stato segnalato automaticamente


    qualche errore durante l'esecuzione del
    precedente programma?

    Lo standard non prescrive segnalazioni


    d'errore di overflow a tempo di esecuzione

    Quello che succede è che le operazioni


    sono effettuate senza controllare se il
    risultato sarà corretto



                                                 14
Overflow 3/3
    Una          conoscenza           approfondita


    dell'architettura del sistema e della
    rappresentazione      del    tipo    di  dato
    permetterebbe di prevedere il valore
    risultante in caso di overflow
    Ma, come si è detto, tale valore potrebbe


    variare da sistema a sistema
    Per semplicità, in tutti i programmai che


    faremo in questo corso, considereremo
    come casuale il risultato di una operazione
    in caso di overflow

                                                15
Esercizio 1/2
    Scrivere un programma che, letti due


    numeri interi in ingresso, stampi il
    risultato della somma e dica se tale
    somma ha generato overflow oppure no
    Esempio:



    Inserisci i due numeri da sommare:
    2147483647 78
    2147483647 + 78 = -2147483571
    Attenzione: il risultato non è attendibile
    perché c'e' stato overflow
                                                 16
Esercizio 2/2
    Attenzione al fatto che l'utente può


    inserire anche numeri negativi !!!
    Soluzione in: somma_overflow.cc





                                           17
Esercizio per casa
    Scrivere un programma che, letti due


    numeri interi in ingresso, stampi il
    risultato del prodotto e dica se tale
    prodotto ha generato overflow oppure
    no
    Soluzione non fornita





                                            18
Scelta
multipla



           19
Esercizio 1/2
    Scrivere un programma che chieda


    all'utente di scegliere tra varie opzioni
    e stampi il nome dell'opzione scelta
    Esempio 1:


    1   Opzione A
    2   Opzione B
    3   Opzione C
    4   Opzione D

    Scegli un'opzione: 2
    Hai scelto l'opzione B
                                            20
Esercizio 2/2
    Esempio 2:


    1   Opzione A
    2   Opzione B
    3   Opzione C
    4   Opzione D

    Scegli un opzione: -1
    Scelta non valida

    Soluzione in: primo_menu.cc





                                       21
Esercizio 1/2
    Scrivere un programma che chieda


    all'utente di scegliere tra le seguenti
    opzioni (di cui una ripetuta due volte)
    e stampi il nome dell'opzione scelta
    1   Opzione A
    3   Opzione B
    4   Opzione C
    5   Opzione C
    6   Opzione D

    Scegli un'opzione: 4
    Hai scelto l'opzione C
                                          22
Esercizio 2/2
    Esempio 2:




    1   Opzione A
    3   Opzione B
    4   Opzione C
    5   Opzione C
    6   Opzione D

    Scegli un'opzione: 2
    Scelta non valida


    Soluzione in: menu_multiplo.cc

                                      23
Esercizio: calcolatrice
    Testo e soluzione in


    calcolatrice.cc




                                 24

Mais conteúdo relacionado

Mais procurados

Esercitazione 2 (29 febbraio 2012)
Esercitazione 2 (29 febbraio 2012)Esercitazione 2 (29 febbraio 2012)
Esercitazione 2 (29 febbraio 2012)STELITANO
 
Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)STELITANO
 
Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Nicola Paoletti
 
Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012STELITANO
 
Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012STELITANO
 
Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio cughetta
 
Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012STELITANO
 
06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili06 - Programmazione: Scope Variabili
06 - Programmazione: Scope VariabiliMajong DevJfu
 
08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimenti08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimentiMajong DevJfu
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)STELITANO
 
15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: AlgoritmiMajong DevJfu
 
Python - Primi passi
Python - Primi passi Python - Primi passi
Python - Primi passi orestJump
 
01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai Programmi01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai ProgrammiMajong DevJfu
 

Mais procurados (20)

Esercitazione 2 (29 febbraio 2012)
Esercitazione 2 (29 febbraio 2012)Esercitazione 2 (29 febbraio 2012)
Esercitazione 2 (29 febbraio 2012)
 
Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)
 
7 Sottoprogrammi
7   Sottoprogrammi7   Sottoprogrammi
7 Sottoprogrammi
 
I sotto programmi in Python 3
I sotto programmi in Python 3I sotto programmi in Python 3
I sotto programmi in Python 3
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
 
Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011
 
Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1
 
Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012
 
Algoritmi
Algoritmi Algoritmi
Algoritmi
 
Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012
 
Flow chart
Flow chartFlow chart
Flow chart
 
Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio c
 
Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012
 
06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili
 
08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimenti08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimenti
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)
 
15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi
 
Python - Primi passi
Python - Primi passi Python - Primi passi
Python - Primi passi
 
Lezione1 Linguaggio C
Lezione1 Linguaggio CLezione1 Linguaggio C
Lezione1 Linguaggio C
 
01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai Programmi01 - Programmazione: Dai Problemi ai Programmi
01 - Programmazione: Dai Problemi ai Programmi
 

Destaque

PresentacióN Enfluenza Liada
PresentacióN Enfluenza LiadaPresentacióN Enfluenza Liada
PresentacióN Enfluenza Liadaliada blair
 
SOCIEDAD ANÓNIMA ABIERTA Y CERRADA-EDUARDO AYALA TANDAZO ULADECH PIURA
SOCIEDAD ANÓNIMA ABIERTA Y CERRADA-EDUARDO AYALA TANDAZO ULADECH PIURASOCIEDAD ANÓNIMA ABIERTA Y CERRADA-EDUARDO AYALA TANDAZO ULADECH PIURA
SOCIEDAD ANÓNIMA ABIERTA Y CERRADA-EDUARDO AYALA TANDAZO ULADECH PIURAJOSÉ EDUARDO AYALA TANDAZO
 
Por uma pratica doscente Critica e construtiva
Por uma pratica doscente Critica e construtivaPor uma pratica doscente Critica e construtiva
Por uma pratica doscente Critica e construtivaJefjac
 
Olimpíadas do sistema 2015 - Esportes coletivos
Olimpíadas do sistema 2015 - Esportes coletivosOlimpíadas do sistema 2015 - Esportes coletivos
Olimpíadas do sistema 2015 - Esportes coletivosPortal NE10
 
Internet e professioni social articolodef
Internet e professioni social articolodefInternet e professioni social articolodef
Internet e professioni social articolodefMarco Di Lullo
 

Destaque (6)

PresentacióN Enfluenza Liada
PresentacióN Enfluenza LiadaPresentacióN Enfluenza Liada
PresentacióN Enfluenza Liada
 
SOCIEDAD ANÓNIMA ABIERTA Y CERRADA-EDUARDO AYALA TANDAZO ULADECH PIURA
SOCIEDAD ANÓNIMA ABIERTA Y CERRADA-EDUARDO AYALA TANDAZO ULADECH PIURASOCIEDAD ANÓNIMA ABIERTA Y CERRADA-EDUARDO AYALA TANDAZO ULADECH PIURA
SOCIEDAD ANÓNIMA ABIERTA Y CERRADA-EDUARDO AYALA TANDAZO ULADECH PIURA
 
Bolsas De Plastico
Bolsas De PlasticoBolsas De Plastico
Bolsas De Plastico
 
Por uma pratica doscente Critica e construtiva
Por uma pratica doscente Critica e construtivaPor uma pratica doscente Critica e construtiva
Por uma pratica doscente Critica e construtiva
 
Olimpíadas do sistema 2015 - Esportes coletivos
Olimpíadas do sistema 2015 - Esportes coletivosOlimpíadas do sistema 2015 - Esportes coletivos
Olimpíadas do sistema 2015 - Esportes coletivos
 
Internet e professioni social articolodef
Internet e professioni social articolodefInternet e professioni social articolodef
Internet e professioni social articolodef
 

Semelhante a Laboratorio Programmazione: Overflow e switch

Laboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabiliLaboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabiliMajong DevJfu
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Marcello Missiroli
 
05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: FunzioniMajong DevJfu
 
Fondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdfFondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdflorenzosalvi30
 
09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del CodiceMajong DevJfu
 
Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)STELITANO
 
5 Strutture Iterative
5   Strutture Iterative5   Strutture Iterative
5 Strutture Iterativeguest60e9511
 
Let's give it a GO!
Let's give it a GO!Let's give it a GO!
Let's give it a GO!MarioTraetta
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
Sistemi Operativi: Il kernel linux - Lezione 06
Sistemi Operativi: Il kernel linux - Lezione 06Sistemi Operativi: Il kernel linux - Lezione 06
Sistemi Operativi: Il kernel linux - Lezione 06Majong DevJfu
 
Extended summary of code building genetic programming
Extended summary of code building genetic programmingExtended summary of code building genetic programming
Extended summary of code building genetic programmingMartinaMaione1
 
Analizzatori di programmi in C
Analizzatori di programmi in CAnalizzatori di programmi in C
Analizzatori di programmi in CBoymix81
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
A static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming ErrorsA static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming ErrorsLino Possamai
 

Semelhante a Laboratorio Programmazione: Overflow e switch (19)

La scomposizione in sotto programmi in C++.pptx
La scomposizione in sotto programmi in C++.pptxLa scomposizione in sotto programmi in C++.pptx
La scomposizione in sotto programmi in C++.pptx
 
Laboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabiliLaboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabili
 
1 Programmazione
1   Programmazione1   Programmazione
1 Programmazione
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
 
05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: Funzioni
 
Fondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdfFondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdf
 
09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice
 
Algoritmi
Algoritmi Algoritmi
Algoritmi
 
Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)
 
5 Strutture Iterative
5   Strutture Iterative5   Strutture Iterative
5 Strutture Iterative
 
Let's give it a GO!
Let's give it a GO!Let's give it a GO!
Let's give it a GO!
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
Sistemi Operativi: Il kernel linux - Lezione 06
Sistemi Operativi: Il kernel linux - Lezione 06Sistemi Operativi: Il kernel linux - Lezione 06
Sistemi Operativi: Il kernel linux - Lezione 06
 
Extended summary of code building genetic programming
Extended summary of code building genetic programmingExtended summary of code building genetic programming
Extended summary of code building genetic programming
 
Guida C++
Guida C++Guida C++
Guida C++
 
Analizzatori di programmi in C
Analizzatori di programmi in CAnalizzatori di programmi in C
Analizzatori di programmi in C
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
Video python3 n2
Video python3 n2Video python3 n2
Video python3 n2
 
A static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming ErrorsA static Analyzer for Finding Dynamic Programming Errors
A static Analyzer for Finding Dynamic Programming Errors
 

Mais de Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 

Mais de Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

Laboratorio Programmazione: Overflow e switch

  • 1. Esercizi su Overflow Istruzioni di scelta: scelta multipla
  • 2. I tempi di un programma 1/3 Una certa azione può essere eseguita  dal programmatore, dal compilatore, dal programma o dall'utilizzatore del programma (utente) in tre diversi tempi: A tempo di scrittura del programma,  da parte del programmatore Es.: il valore iniziale di una variabile o di una costante viene definito a tempo di scrittura del programma da parte del programmatore mediante una inizializzazione 2
  • 3. I tempi di un programma 2/3 A tempo di compilazione del  programma, da parte del compilatore Es.: un errore di sintassi viene comunicato dal compilatore appunto durante la compilazione del programma 3
  • 4. I tempi di un programma 3/3 A tempo di esecuzione del programma,  da parte dell'utente o del programma stesso Es.: (su richiesta del programma) l'utente decide il valore di una variabile mentre il programma stesso è in esecuzione 4
  • 5. Operatore sizeof Restituisce la dimensione di  un'espressione o di un tipo sizeof (espressione)  Numero di byte (char) necessari per memorizzare i possibili valori dell'espressione sizeof (nome_tipo)  Numero di byte (char) necessari per memorizzare un oggetto del tipo passato come parametro 5
  • 6. Esercizio: dimensione int 1/2 Scrivere un programma che stampi  sullo schermo la dimensione in byte di un oggetto di tipo int sulla macchina su cui è eseguito 6
  • 7. Esercizio: dimensione int 2/2 int main() { cout<<sizeof(int)<<endl ; return 0 ; } 7
  • 8. Valori possibili per il tipo int Tipicamente un oggetto di tipo int che  sta su n byte, ossia 8*n bit, può contenere valori interi nell'intervallo [-2^(8*n – 1), 2^(8*n – 1) - 1] Quindi, per esempio su 4 byte si ha  [-2^31, 2^31 – 1] = [-2147483648, 2147483647] Lo standard prevede la presenza di  costanti o funzioni per conoscere i limiti per ogni tipo di dato 8
  • 10. Esercizio 1/3 Scrivere un programma che definisce  una variabile i di tipo int, la inizializza ad un valore qualsiasi e stampa il valore di i  incrementa i di una unita'  stampa il nuovo valore di i  10
  • 11. Esercizio 2/3 main() { int i = 23 ; cout<<i<<endl ; i++ ; cout<<i<<endl ; } 11
  • 12. Esercizio 3/3 Modificare il programma affinché  inizializzi i al seguente valore: 2147483647 Quale sarà l'output del programma?  Eseguirlo per controllare  12
  • 13. Overflow 1/3 Si ha quando il valore di una espressione è  troppo grande (in modulo) per essere contenuto nel tipo di dato del risultato, oppure  nell'oggetto a cui si vuole assegnare tale  valore In tal caso, il risultato o il nuovo valore  dell'oggetto sarà in generale logicamente non correlato con l'operazione effettuata E potrà variare da sistema a sistema  13
  • 14. Overflow 2/3 E' stato segnalato automaticamente  qualche errore durante l'esecuzione del precedente programma? Lo standard non prescrive segnalazioni  d'errore di overflow a tempo di esecuzione Quello che succede è che le operazioni  sono effettuate senza controllare se il risultato sarà corretto 14
  • 15. Overflow 3/3 Una conoscenza approfondita  dell'architettura del sistema e della rappresentazione del tipo di dato permetterebbe di prevedere il valore risultante in caso di overflow Ma, come si è detto, tale valore potrebbe  variare da sistema a sistema Per semplicità, in tutti i programmai che  faremo in questo corso, considereremo come casuale il risultato di una operazione in caso di overflow 15
  • 16. Esercizio 1/2 Scrivere un programma che, letti due  numeri interi in ingresso, stampi il risultato della somma e dica se tale somma ha generato overflow oppure no Esempio:  Inserisci i due numeri da sommare: 2147483647 78 2147483647 + 78 = -2147483571 Attenzione: il risultato non è attendibile perché c'e' stato overflow 16
  • 17. Esercizio 2/2 Attenzione al fatto che l'utente può  inserire anche numeri negativi !!! Soluzione in: somma_overflow.cc  17
  • 18. Esercizio per casa Scrivere un programma che, letti due  numeri interi in ingresso, stampi il risultato del prodotto e dica se tale prodotto ha generato overflow oppure no Soluzione non fornita  18
  • 20. Esercizio 1/2 Scrivere un programma che chieda  all'utente di scegliere tra varie opzioni e stampi il nome dell'opzione scelta Esempio 1:  1 Opzione A 2 Opzione B 3 Opzione C 4 Opzione D Scegli un'opzione: 2 Hai scelto l'opzione B 20
  • 21. Esercizio 2/2 Esempio 2:  1 Opzione A 2 Opzione B 3 Opzione C 4 Opzione D Scegli un opzione: -1 Scelta non valida Soluzione in: primo_menu.cc  21
  • 22. Esercizio 1/2 Scrivere un programma che chieda  all'utente di scegliere tra le seguenti opzioni (di cui una ripetuta due volte) e stampi il nome dell'opzione scelta 1 Opzione A 3 Opzione B 4 Opzione C 5 Opzione C 6 Opzione D Scegli un'opzione: 4 Hai scelto l'opzione C 22
  • 23. Esercizio 2/2 Esempio 2:  1 Opzione A 3 Opzione B 4 Opzione C 5 Opzione C 6 Opzione D Scegli un'opzione: 2 Scelta non valida Soluzione in: menu_multiplo.cc  23
  • 24. Esercizio: calcolatrice Testo e soluzione in  calcolatrice.cc 24