Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Silvia Rossi » 4.Strutture di controllo


C++ istruzione di assegnazione


C++ istruzione di assegnazione


C++ istruzione di assegnazione


C++ istruzioni semplici e composte

Le istruzioni del programma sono classificate come:

  • Semplici: istruzioni di assegnazione, istruzioni di I/O, dichiarazioni di costanti e variabili
    • Divise dal simbolo speciale “;”
  • Composte: sequenze di istruzioni semplici
    • Racchiuse da parentesi graffe

Un istruzione composta è anche detta blocco di istruzioni.

C++ istruzione di controllo if

L’istruzione di controllo if (o selezione) indica al calcolatore di eseguire una tra due istruzioni (semplici o blocchi) al verificarsi di una certa condizione:

if (condizione) istruzione;

dove

condizione é una espressione logica se la condizione é true il programma esegue l’istruzione, altrimenti passa direttamente all’istruzione successiva.


C++ istruzione di controllo if

Nel caso di due scelte alternative, all’istruzione di controllo if si può associare l’istruzione else:

if (condizione) istruzioneA;
else istruzioneB;

dove

  • condizione é una espressione logica
  • se la condizione é true il programma esegue l’istruzioneA
  • altrimenti esegue l’istruzioneB

C++ istruzione di controllo if


Esempio

Dati due numeri qualsiasi a, b risolvere l’equazione di primo grado:
ax +b = 0.

L’algoritmo:
leggi(a,b)
stampa(-b/a)

non è corretto.

Esempio

Infatti il problema dice che a può essere un numero qualsiasi e, se a fosse zero, si avrebbe un errore a run time poiché la divisione non è definita quando il divisore è zero. In questo caso occorrerà dunque inviare un opportuno messaggio.
Un algoritmo corretto è riportato nelle foto a lato.
Si veda l’ esercizio 4.1


Esempio

Programma per il calcolo dell’area del cerchio che accetta solo input di numeri positivi.
Si veda l’ esercizio 4.2


Esempio

Vediamo cosa accade quando non conosciamo bene la matematica

a=1

b=a

b*a=a*a

b*a – b*b = a*a – b*b

b*(a – b) = a2 – b2

b*(a – b) = (a+b)*(a – b)

b = (a+b)

1=2

Esempio

Calcoliamo il massimo tra due numeri a e b

Se a è minore di b allora il massimo è b, altrimenti è a.

Scrittura dell’algoritmo in C++:

  • if (a<b)
    cout<<“MASSIMO=”<<b;
  • else
    cout<<“MASSIMO=”<<a;

Supponiamo che a=15 e b=20; quando il computer esegue questa istruzione scriverà “Massimo=20″;
se invece a=30 e b=10 scriverà “Massimo=30″.

C++ istruzione di controllo if

Errori tipici di programmazione

Errori tipici di programmazione


C++ istruzione di controllo if

Per evitare questo errore (figura a lato) si può scrivere prima l’espressione e poi la variabile (cosa non consentita con l’assegnazione):

NON si può scrivere
if (0=N)

perché il computer segnala un errore, mentre è consentito scrivere
if (0==N)

Errori tipici di programmazione

Errori tipici di programmazione


IF ……. ELSE

Stampare il voto degli Esercizi

  • Se il voto dello studente è maggiore/uguale di 28
    Visualizza A
  • Se il voto dello studente è maggiore/uguale di 25 e minore di 28
    Visualizza B
  • Se il voto dello studente è maggiore/uguale di 22 e minore di 25
    Visualizza C
  • Se il voto dello studente è maggiore/uguale di 18 e minore di 22
    Visualizza D

IF ……. ELSE ……… annidati

Si possono inserire IF/ELSE all’interno di altri IF/ELSE

  • Se il voto dello studente è maggiore di 28
    Visualizza A
  • Se il voto dello studente è maggiore di 25
    visualizza B
  • Se il voto dello studente è maggiore di 22
    visualizza C
  • Se il voto dello studente è maggiore di 18
    visualizza D

IF ……. ELSE ……… annidati


Else pendente

  • if (x > 5)
    if (y > 5)
    cout << "x e y sono > 5";
  • else
    cout << "x è minore di 5";

Cosa stampa se x=6 e y=7?

C++ istruzione di controllo if

Se l’istruzione controllata da un if consiste a sua volta in un altro if (istruzioni if nidificate), ogni eventuale else si riferisce sempre all’if immediatamente superiore (in assenza di parentesi graffe).

Esempio:
if (cond1)
if (cond2) istr1;
else istr2;

Suggerimento:
Mettere sempre le parentesi anche in caso di istruzioni semplici

  1. Consente di controllar meglio il risultato di annidamenti di if
  2. Riduce gli errori in caso di aggiunte di altre istruzioni come caso dell’if (o dell’else)

C++ istruzione di controllo if

IF o IF……… ELSE?

if (a<b)
cout<<"MASSIMO="<<b;
else
cout<<"MASSIMO="<<a;

if (a<b)
cout<<"MASSIMO="<<b;
if (b<a)
cout<<"MASSIMO="<<a;

C++ istruzione di controllo if


C++ istruzione di controllo if


C++ istruzione di controllo if


C++ istruzione di controllo if


C++ istruzione di controllo if


C++ istruzione di controllo if


C++ istruzione di controllo if

Esercizi

  • Determinare se un numero è intero.
    Suggerimenti:

    • Per risolvere il problema pensiamo di confrontare il numero letto con la sua parte intera: se i due valori sono uguali allora il numero è intero, altrimenti non lo è
    • La parte intera si calcola con floor (n) (si deve includere anche il file <cmath>)
  • Determinare se un numero intero è pari.
    Suggerimenti:

    • Per risolvere il problema pensiamo di calcolare il resto modulo 2;
      se tale resto è zero allora il numero è pari altrimenti non lo è.

I materiali di supporto della lezione

Esercizio 4-1

Esercizio 4-2

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion