SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Esercizi su
Operatori relazionali e logici

Istruzioni di scelta: selezione
Esercizi precedenti
    Dubbi?


    Domande?





                                 2
Tipo booleano
    Scrivere un programma che



        definisca una variabile di tipo
    

        bool,
        le assegni true e la stampi
    


        successivamente assegni false
    

        alla stessa variabile e la stampi
        di nuovo
        stampa_bool.cc
    
                                            3
Espr. logiche semplici 1/2
    Scrivere un programma che:



        chieda all'utente di inserire due
    

        valori interi a e b;
        stampi 1 se a < b, 0 altrimenti
    


    Attenzione: l'operatore << ha


    precedenza minore di <, >,
    >=, ...

                                            4
Espr. logiche semplici 2/2
    Esempio di output:



Inserisci i valori di a e di b: 3 4
Valore di 3 < 4: 1

    stampa_logica_semplice.cc





                                      5
Espressioni logiche composte
    Scrivere un programma che:



        chieda all'utente di inserire tre
    

        valori interi a, b e c;
        stampi 1 se a < b oppure se a <
    

        c, 0 altrimenti
    Attenzione       di    nuovo     alle


    precedenze
    stampa_logica_composta.cc

                                        6
Errore logico 1/2
    Quanto vale l'espressione logica:


    1<3<2?
    Equivale a


    (1 < 3) < 2
    Ossia


    true < 2


                                        7
Errore logico 2/2
    true è convertito ad 1, quindi


    1<2


    Quindi: true !!!!!!!!


    Problema: abbiamo confuso le


    regole di valutazione di una
    formula matematica con quelle di
    una espressione logica in C/C++


                                     8
Esercizio
    Scrivere un programma che:



        chieda all'utente di inserire tre
    

        valori interi a, b ed x;
        stampi 1 se a≤x≤b, 0 altrimenti
    


    stampa_1_se_in_intervallo.cc





                                            9
Indentazione 1/3
    Se C1 e' la colonna rispetto alla


    quale sono allineate
    l'intestazione di una funzione,


    una istruzione condizionale o una


    istruzione iterativa,
    o l'inizio di una istruzione


    composta o di un blocco


                                      10
Indentazione 2/3
    Tutte le istruzioni appartenenti al


    loro    corpo,    devono    essere
    allineate a partire da una colonna
    C2,
    spostata a destra di un numero


    prefissato di spazi rispetto a C1.




                                      11
Indentazione 3/3
int main()
{
    int i ;
    ...
    if (...)
          cout<<quot;messaggioquot; ;

    return 0 ;
}



                                 12
Consigli
    Scrivere/progettare i programmi


    prima carta e penna
    Rileggerli mettendosi nei panni



        del compilatore prima
    


        e del computer (esecutore) dopo
    


    Guardare le soluzioni solo quando


    si è sicuri di non essere in grado
    di risolvere l'esercizio da soli
                                      13
Esercizio 1/2
    Scrivere un programma che legge un


    numero intero da standard input (cin)
    e stampa
    Il numero inserito è positivo
    se il numero inserito è positivo.
    Altrimenti non stampa nulla ed esce.




                                        14
Esercizio 2/2
int main()
{
  int i ;
  cin>>i ;
  if (i > 0)
    cout<<quot;Il numero inserito è positivonquot; ;

 return 0 ;
}



                                                15
Esercizio 1/2
    Scrivere un programma che legge un


    numero intero da stdin e stampa
    Il numero inserito è non negativo
    se il numero inserito è positivo o
    nullo. Altrimenti stampa
    Il numero inserito è negativo




                                        16
Esercizio 2/2
int main()
{
  int i ;
  cin>>i ;

 if (i >= 0)
   cout<<quot;Il numero inserito è non negativonquot; ;
 else
   cout<<quot;Il numero inserito è negativoquot; ;

  return 0 ;
}


                                              17
Esercizio
    Scrivere un programma che stampi il


    massimo tra due numeri interi letti
    dallo stdin
    Esempio:


    Inserire i due numeri interi: 21 -3
    Il massimo tra 21 e -3 è 21
    Nota: non è necessario andare a capo


    quando si immettono i due numeri
    Soluzione: stampa_max.cc


                                          18
Messaggi di errore g++
    Ogni riga inizia con il nome del file


    sorgente
    Poi c'è



        il nome della funzione
    


        oppure il numero di riga e colonna
    


 in cui si è verificato l'errore
 Poi il termine error o warning

    Infine la descrizione del problema


    (può proseguire su più righe)
                                             19
Esercizio: divisione intera 1/4
    Riprendiamo l'esercizio di calcolo


    della divisione intera tra due numeri
    interi
    Inserisci i due numeri: 5 2

    5/2=2




                                            20
Esercizio: divisione intera 2/4
int main()
{
  int i, j ;
  cout<<Inserisci due numeri interi: quot; ;
  cin>>i>>j ;

 cout<<i<<” / “<<j<<”=”<<i/j<<endl;

 return 0 ;
}



                                           21
Esercizio: divisione intera 3/4
    Proviamo ad inserire ad esempio 3 e 0



    Inserisci i due numeri: 3 0

    ????????

    Cosa è successo?





                                        22
Alcune cause comuni ...
    ... di fallimenti a tempo di


    esecuzione:
        Le variabili non sono inizializzate
    


        I valori dei parametri attuali o
    

        dei valori letti non sono quelli
        attesi
        C'è stato un overflow
    

             Lo vedremo meglio nella prossima
         
             esercitazione
                                                23
Correggiamo ...
    ... l'esercizio sulla divisione intera





                                             24
Esercizio: divisione intera 4/4
int main()
{
  int i, j ;
  cout<<Inserisci due numeri interi: quot; ;
  cin>>i>>j ;

 if (j == 0)
    cout<<quot;Attenzione: il divisore è nullonquot; ;
 else
    cout<<i<<” / “<<j<<”=”<<i/j<<endl;

  return 0 ;
}



                                                  25
Gestione delle eccezioni
    Spesso è necessario controllare il


    valore dei parametri attuali o dei
    valori    letti  e      prendere
    contromisure

        Segnalare errore ed uscire
    


        Modificare i valori per riportarli
    

        forzatamente in intervalli validi


                                         26
Esercizio 1/2
    Scrivere un programma che definisca


    ed inizializzi due costanti intere a e b,
    poi legga in ingresso un numero
    intero e scriva un messaggio se il
    numero         non     è       compreso
    nell'intervallo [a, b]

    Inserisci un numero intero: 101
    101 non è in [1, 100]

                                            27
Esercizio 2/2
int main()
{
  int i, a = 1, b = 100 ;

 cout<<quot;Inserisci un numero intero: quot; ;
 cin>>i ;

 if (i < a || i > b)
   cout<<i<<quot; non è in [“<<a<<”, “<<b<<”]n”;

  return 0 ;
}




                                                28
Domanda
    La precedente soluzione contiene una


    imprecisione rispetto alla traccia
      Provate ad individuarla prima di
    

    guardare la risposta nella slide
    successiva




                                       29
Risposta
    a e b sono variabili e non costanti





                                          30
Esercizio 1/2
    Scrivere un programma che definisca


    ed inizializzi due costanti intere a e b,
    poi legga in ingresso un numero
    intero e scriva un messaggio se il
    numero è compreso nell'intervallo
    [a, b]
    Inserisci un numero intero: 5
    5 è in [1, 100]


    Non utilizzare l'operatore ||

                                            31
Esercizio 2/2
int main()
{
  const int i, a = 1, b = 100 ;

 cout<<quot;Inserisci un numero intero: quot; ;
 cin>>i ;

 if (i >= a && i <= b)
   cout<<i<<quot; è in [“<<a<<”, “<<b<<”]n”;

  return 0 ;
}




                                             32
Domanda
    La precedente soluzione contiene un


    errore
      Provate ad individuarlo prima di
    

    guardare la risposta nella slide
    successiva




                                          33
Risposta
    i è erroneamente definita costante





                                         34
Esercizio 1/2
    Scrivere un programma che definisca


    ed inizializzi due costanti intere a e b,
    poi legga in ingresso un numero
    intero e scriva un messaggio se il
    numero è compreso nell'intervallo
    [a, b]
    Inserisci un numero intero: 5
    5 è in [1, 100]


    Non utilizzare l'operatore &&

                                            35
Esercizio 2/2
int main()
{
  const int a = 1, b = 100 ;

 cout<<quot;Inserisci un numero intero: quot; ;
 int i ; cin>>i ;

if (!(i < a || i > b) )
   cout<<i<<quot; è in [“<<a<<”, “<<b<<”]n”;

  return 0 ;
}




                                            36
Esercizio 1/3
    Scrivere un programma che definisca ed


    inizializzi due costanti intere a e b, poi
    legga in ingresso due numeri interi:
    controllo ed i
    L'intero controllo si utilizza per controllare il


    comportamento del programma
    In particolare,



        se controllo è diverso da 0,
    


            il programma scrive un messaggio se i
        

            non è compreso nell'intervallo [a, b]
        altrimenti non stampa nulla
    

                                                   37
Esercizio 2/3
    Esempio:





    Inserisci il valore per controllo: 1
    Inserisci un numero intero: 0
    0 non è in [1, 100]




                                           38
Esercizio 3/3
int main()
{
  const int a = 1, b = 100 ;
  int i, controllo ;

 cout<<”Inserisci un numero intero: quot; ;
 cin>>i ;

 cin>>controllo ;

 if (controllo != 0 && (i < a || i > b) )
  cout<<i<<quot; non è in [“<<a<<”, “<<b<<”]n”;

 return 0 ;
}


                                               39
Compiti per casa
    multiplo.cc



    tre_ordinati.cc





                                    40

Contenu connexe

Tendances

Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012STELITANO
 
Esercitazione 2 (29 febbraio 2012)
Esercitazione 2 (29 febbraio 2012)Esercitazione 2 (29 febbraio 2012)
Esercitazione 2 (29 febbraio 2012)STELITANO
 
15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: AlgoritmiMajong DevJfu
 
4 Strutture Condizionali
4   Strutture Condizionali4   Strutture Condizionali
4 Strutture Condizionaliguest60e9511
 
05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: FunzioniMajong DevJfu
 
Programmazione a blocchi
Programmazione a blocchiProgrammazione a blocchi
Programmazione a blocchiFabio Biscaro
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili06 - Programmazione: Scope Variabili
06 - Programmazione: Scope VariabiliMajong DevJfu
 
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0Strutture fondamentali della_programmaizone_visual_basicv2014_1.0
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0I.S.I.S. "Antonio Serra" - Napoli
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Marcello Missiroli
 
5 Strutture Iterative
5   Strutture Iterative5   Strutture Iterative
5 Strutture Iterativeguest60e9511
 

Tendances (20)

Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012
 
Esercitazione 2 (29 febbraio 2012)
Esercitazione 2 (29 febbraio 2012)Esercitazione 2 (29 febbraio 2012)
Esercitazione 2 (29 febbraio 2012)
 
15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi15 - Programmazione: Algoritmi
15 - Programmazione: Algoritmi
 
4 Strutture Condizionali
4   Strutture Condizionali4   Strutture Condizionali
4 Strutture Condizionali
 
05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: Funzioni
 
Programmazione a blocchi
Programmazione a blocchiProgrammazione a blocchi
Programmazione a blocchi
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
3 Linguaggioc
3   Linguaggioc3   Linguaggioc
3 Linguaggioc
 
06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili06 - Programmazione: Scope Variabili
06 - Programmazione: Scope Variabili
 
come costruire un algoritmo
come costruire un algoritmocome costruire un algoritmo
come costruire un algoritmo
 
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0Strutture fondamentali della_programmaizone_visual_basicv2014_1.0
Strutture fondamentali della_programmaizone_visual_basicv2014_1.0
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
 
Linguaggio C++ - Basi
Linguaggio C++ - BasiLinguaggio C++ - Basi
Linguaggio C++ - Basi
 
Programmazione
ProgrammazioneProgrammazione
Programmazione
 
Algoritmi
Algoritmi Algoritmi
Algoritmi
 
Scomposizione di programmi e approccio in visual basic
Scomposizione di programmi e approccio in visual basicScomposizione di programmi e approccio in visual basic
Scomposizione di programmi e approccio in visual basic
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
 
5 Strutture Iterative
5   Strutture Iterative5   Strutture Iterative
5 Strutture Iterative
 
La metodologia Top - Down - applicazione al C++
La metodologia Top - Down - applicazione al C++La metodologia Top - Down - applicazione al C++
La metodologia Top - Down - applicazione al C++
 
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
 

En vedette

L'esperienza del trasporto deve trasmettere benessere
L'esperienza del trasporto deve trasmettere benessereL'esperienza del trasporto deve trasmettere benessere
L'esperienza del trasporto deve trasmettere benessereFabio Fimiani
 
L\'analisi del consumo infantile di cinema. Una ricerca interculturale
L\'analisi del consumo infantile di cinema. Una ricerca interculturaleL\'analisi del consumo infantile di cinema. Una ricerca interculturale
L\'analisi del consumo infantile di cinema. Una ricerca interculturalePier Cesare Rivoltella
 
4 Algebra Di Boole
4   Algebra Di Boole4   Algebra Di Boole
4 Algebra Di Booleguest60e9511
 
Comunica digitale: tra personale e aziendale
Comunica digitale: tra personale e aziendaleComunica digitale: tra personale e aziendale
Comunica digitale: tra personale e aziendaleFrancesca Sanzo
 

En vedette (8)

Banane
BananeBanane
Banane
 
L'esperienza del trasporto deve trasmettere benessere
L'esperienza del trasporto deve trasmettere benessereL'esperienza del trasporto deve trasmettere benessere
L'esperienza del trasporto deve trasmettere benessere
 
Prepariamo le fragole
Prepariamo le fragolePrepariamo le fragole
Prepariamo le fragole
 
Aurantia case history
Aurantia case historyAurantia case history
Aurantia case history
 
L\'analisi del consumo infantile di cinema. Una ricerca interculturale
L\'analisi del consumo infantile di cinema. Una ricerca interculturaleL\'analisi del consumo infantile di cinema. Una ricerca interculturale
L\'analisi del consumo infantile di cinema. Una ricerca interculturale
 
Thermography
ThermographyThermography
Thermography
 
4 Algebra Di Boole
4   Algebra Di Boole4   Algebra Di Boole
4 Algebra Di Boole
 
Comunica digitale: tra personale e aziendale
Comunica digitale: tra personale e aziendaleComunica digitale: tra personale e aziendale
Comunica digitale: tra personale e aziendale
 

Similaire à Laboratorio Programmazione: Operatori logici

Laboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabiliLaboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabiliMajong DevJfu
 
Laboratorio Programmazione: Funzioni
Laboratorio Programmazione: FunzioniLaboratorio Programmazione: Funzioni
Laboratorio Programmazione: FunzioniMajong DevJfu
 
Laboratorio Programmazione: Visibilita' e tipi di dato
Laboratorio Programmazione: Visibilita' e tipi di datoLaboratorio Programmazione: Visibilita' e tipi di dato
Laboratorio Programmazione: Visibilita' e tipi di datoMajong DevJfu
 
Laboratorio Programmazione: Istruzioni Iterative
Laboratorio Programmazione: Istruzioni IterativeLaboratorio Programmazione: Istruzioni Iterative
Laboratorio Programmazione: Istruzioni IterativeMajong DevJfu
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiAngela Cristina
 
07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioni07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioniMajong DevJfu
 
Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio cughetta
 
Excel: calcolare il costo del prodotto
Excel: calcolare il costo del prodottoExcel: calcolare il costo del prodotto
Excel: calcolare il costo del prodottoSin Tesi Forma
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)STELITANO
 
A brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA eventA brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA eventPietro Di Bello
 
09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del CodiceMajong DevJfu
 
Fondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdfFondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdflorenzosalvi30
 
14 - Programmazione: Stream e File
14 - Programmazione: Stream e File14 - Programmazione: Stream e File
14 - Programmazione: Stream e FileMajong DevJfu
 

Similaire à Laboratorio Programmazione: Operatori logici (20)

Laboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabiliLaboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabili
 
Laboratorio Programmazione: Funzioni
Laboratorio Programmazione: FunzioniLaboratorio Programmazione: Funzioni
Laboratorio Programmazione: Funzioni
 
Laboratorio Programmazione: Visibilita' e tipi di dato
Laboratorio Programmazione: Visibilita' e tipi di datoLaboratorio Programmazione: Visibilita' e tipi di dato
Laboratorio Programmazione: Visibilita' e tipi di dato
 
Laboratorio Programmazione: Istruzioni Iterative
Laboratorio Programmazione: Istruzioni IterativeLaboratorio Programmazione: Istruzioni Iterative
Laboratorio Programmazione: Istruzioni Iterative
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
 
07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioni07 - Programmazione: Tipi di base e conversioni
07 - Programmazione: Tipi di base e conversioni
 
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
 
1 Programmazione
1   Programmazione1   Programmazione
1 Programmazione
 
Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio c
 
Programmazione Top Down in C++
Programmazione Top Down in C++Programmazione Top Down in C++
Programmazione Top Down in C++
 
Modulo 1 - Lezione 1
Modulo 1 - Lezione 1Modulo 1 - Lezione 1
Modulo 1 - Lezione 1
 
Excel: calcolare il costo del prodotto
Excel: calcolare il costo del prodottoExcel: calcolare il costo del prodotto
Excel: calcolare il costo del prodotto
 
Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)Lezione 12 (28 marzo 2012)
Lezione 12 (28 marzo 2012)
 
A brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA eventA brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA event
 
1.01 Algoritmi
1.01 Algoritmi1.01 Algoritmi
1.01 Algoritmi
 
09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice
 
Algorithmist guide II
Algorithmist guide IIAlgorithmist guide II
Algorithmist guide II
 
Fondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdfFondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdf
 
Lezione1 Linguaggio C
Lezione1 Linguaggio CLezione1 Linguaggio C
Lezione1 Linguaggio C
 
14 - Programmazione: Stream e File
14 - Programmazione: Stream e File14 - Programmazione: Stream e File
14 - Programmazione: Stream e File
 

Plus 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
 

Plus 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
 

Dernier

Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 

Dernier (9)

Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 

Laboratorio Programmazione: Operatori logici

  • 1. Esercizi su Operatori relazionali e logici Istruzioni di scelta: selezione
  • 2. Esercizi precedenti Dubbi?  Domande?  2
  • 3. Tipo booleano Scrivere un programma che  definisca una variabile di tipo  bool, le assegni true e la stampi  successivamente assegni false  alla stessa variabile e la stampi di nuovo stampa_bool.cc  3
  • 4. Espr. logiche semplici 1/2 Scrivere un programma che:  chieda all'utente di inserire due  valori interi a e b; stampi 1 se a < b, 0 altrimenti  Attenzione: l'operatore << ha  precedenza minore di <, >, >=, ... 4
  • 5. Espr. logiche semplici 2/2 Esempio di output:  Inserisci i valori di a e di b: 3 4 Valore di 3 < 4: 1 stampa_logica_semplice.cc  5
  • 6. Espressioni logiche composte Scrivere un programma che:  chieda all'utente di inserire tre  valori interi a, b e c; stampi 1 se a < b oppure se a <  c, 0 altrimenti Attenzione di nuovo alle  precedenze stampa_logica_composta.cc  6
  • 7. Errore logico 1/2 Quanto vale l'espressione logica:  1<3<2? Equivale a  (1 < 3) < 2 Ossia  true < 2 7
  • 8. Errore logico 2/2 true è convertito ad 1, quindi  1<2  Quindi: true !!!!!!!!  Problema: abbiamo confuso le  regole di valutazione di una formula matematica con quelle di una espressione logica in C/C++ 8
  • 9. Esercizio Scrivere un programma che:  chieda all'utente di inserire tre  valori interi a, b ed x; stampi 1 se a≤x≤b, 0 altrimenti  stampa_1_se_in_intervallo.cc  9
  • 10. Indentazione 1/3 Se C1 e' la colonna rispetto alla  quale sono allineate l'intestazione di una funzione,  una istruzione condizionale o una  istruzione iterativa, o l'inizio di una istruzione  composta o di un blocco 10
  • 11. Indentazione 2/3 Tutte le istruzioni appartenenti al  loro corpo, devono essere allineate a partire da una colonna C2, spostata a destra di un numero  prefissato di spazi rispetto a C1. 11
  • 12. Indentazione 3/3 int main() { int i ; ... if (...) cout<<quot;messaggioquot; ; return 0 ; } 12
  • 13. Consigli Scrivere/progettare i programmi  prima carta e penna Rileggerli mettendosi nei panni  del compilatore prima  e del computer (esecutore) dopo  Guardare le soluzioni solo quando  si è sicuri di non essere in grado di risolvere l'esercizio da soli 13
  • 14. Esercizio 1/2 Scrivere un programma che legge un  numero intero da standard input (cin) e stampa Il numero inserito è positivo se il numero inserito è positivo. Altrimenti non stampa nulla ed esce. 14
  • 15. Esercizio 2/2 int main() { int i ; cin>>i ; if (i > 0) cout<<quot;Il numero inserito è positivonquot; ; return 0 ; } 15
  • 16. Esercizio 1/2 Scrivere un programma che legge un  numero intero da stdin e stampa Il numero inserito è non negativo se il numero inserito è positivo o nullo. Altrimenti stampa Il numero inserito è negativo 16
  • 17. Esercizio 2/2 int main() { int i ; cin>>i ; if (i >= 0) cout<<quot;Il numero inserito è non negativonquot; ; else cout<<quot;Il numero inserito è negativoquot; ; return 0 ; } 17
  • 18. Esercizio Scrivere un programma che stampi il  massimo tra due numeri interi letti dallo stdin Esempio:  Inserire i due numeri interi: 21 -3 Il massimo tra 21 e -3 è 21 Nota: non è necessario andare a capo  quando si immettono i due numeri Soluzione: stampa_max.cc  18
  • 19. Messaggi di errore g++ Ogni riga inizia con il nome del file  sorgente Poi c'è  il nome della funzione  oppure il numero di riga e colonna  in cui si è verificato l'errore  Poi il termine error o warning Infine la descrizione del problema  (può proseguire su più righe) 19
  • 20. Esercizio: divisione intera 1/4 Riprendiamo l'esercizio di calcolo  della divisione intera tra due numeri interi Inserisci i due numeri: 5 2 5/2=2 20
  • 21. Esercizio: divisione intera 2/4 int main() { int i, j ; cout<<Inserisci due numeri interi: quot; ; cin>>i>>j ; cout<<i<<” / “<<j<<”=”<<i/j<<endl; return 0 ; } 21
  • 22. Esercizio: divisione intera 3/4 Proviamo ad inserire ad esempio 3 e 0  Inserisci i due numeri: 3 0 ???????? Cosa è successo?  22
  • 23. Alcune cause comuni ... ... di fallimenti a tempo di  esecuzione: Le variabili non sono inizializzate  I valori dei parametri attuali o  dei valori letti non sono quelli attesi C'è stato un overflow  Lo vedremo meglio nella prossima  esercitazione 23
  • 24. Correggiamo ... ... l'esercizio sulla divisione intera  24
  • 25. Esercizio: divisione intera 4/4 int main() { int i, j ; cout<<Inserisci due numeri interi: quot; ; cin>>i>>j ; if (j == 0) cout<<quot;Attenzione: il divisore è nullonquot; ; else cout<<i<<” / “<<j<<”=”<<i/j<<endl; return 0 ; } 25
  • 26. Gestione delle eccezioni Spesso è necessario controllare il  valore dei parametri attuali o dei valori letti e prendere contromisure Segnalare errore ed uscire  Modificare i valori per riportarli  forzatamente in intervalli validi 26
  • 27. Esercizio 1/2 Scrivere un programma che definisca  ed inizializzi due costanti intere a e b, poi legga in ingresso un numero intero e scriva un messaggio se il numero non è compreso nell'intervallo [a, b] Inserisci un numero intero: 101 101 non è in [1, 100] 27
  • 28. Esercizio 2/2 int main() { int i, a = 1, b = 100 ; cout<<quot;Inserisci un numero intero: quot; ; cin>>i ; if (i < a || i > b) cout<<i<<quot; non è in [“<<a<<”, “<<b<<”]n”; return 0 ; } 28
  • 29. Domanda La precedente soluzione contiene una  imprecisione rispetto alla traccia Provate ad individuarla prima di  guardare la risposta nella slide successiva 29
  • 30. Risposta a e b sono variabili e non costanti  30
  • 31. Esercizio 1/2 Scrivere un programma che definisca  ed inizializzi due costanti intere a e b, poi legga in ingresso un numero intero e scriva un messaggio se il numero è compreso nell'intervallo [a, b] Inserisci un numero intero: 5 5 è in [1, 100] Non utilizzare l'operatore ||  31
  • 32. Esercizio 2/2 int main() { const int i, a = 1, b = 100 ; cout<<quot;Inserisci un numero intero: quot; ; cin>>i ; if (i >= a && i <= b) cout<<i<<quot; è in [“<<a<<”, “<<b<<”]n”; return 0 ; } 32
  • 33. Domanda La precedente soluzione contiene un  errore Provate ad individuarlo prima di  guardare la risposta nella slide successiva 33
  • 34. Risposta i è erroneamente definita costante  34
  • 35. Esercizio 1/2 Scrivere un programma che definisca  ed inizializzi due costanti intere a e b, poi legga in ingresso un numero intero e scriva un messaggio se il numero è compreso nell'intervallo [a, b] Inserisci un numero intero: 5 5 è in [1, 100] Non utilizzare l'operatore &&  35
  • 36. Esercizio 2/2 int main() { const int a = 1, b = 100 ; cout<<quot;Inserisci un numero intero: quot; ; int i ; cin>>i ; if (!(i < a || i > b) ) cout<<i<<quot; è in [“<<a<<”, “<<b<<”]n”; return 0 ; } 36
  • 37. Esercizio 1/3 Scrivere un programma che definisca ed  inizializzi due costanti intere a e b, poi legga in ingresso due numeri interi: controllo ed i L'intero controllo si utilizza per controllare il  comportamento del programma In particolare,  se controllo è diverso da 0,  il programma scrive un messaggio se i  non è compreso nell'intervallo [a, b] altrimenti non stampa nulla  37
  • 38. Esercizio 2/3 Esempio:  Inserisci il valore per controllo: 1 Inserisci un numero intero: 0 0 non è in [1, 100] 38
  • 39. Esercizio 3/3 int main() { const int a = 1, b = 100 ; int i, controllo ; cout<<”Inserisci un numero intero: quot; ; cin>>i ; cin>>controllo ; if (controllo != 0 && (i < a || i > b) ) cout<<i<<quot; non è in [“<<a<<”, “<<b<<”]n”; return 0 ; } 39
  • 40. Compiti per casa multiplo.cc  tre_ordinati.cc  40