Le istruzioni del programma sono classificate come:
Un istruzione composta è anche detta blocco di istruzioni.
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.
Nel caso di due scelte alternative, all’istruzione di controllo if si può associare l’istruzione else:
if (condizione) istruzioneA;
else istruzioneB;
dove
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.
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
Programma per il calcolo dell’area del cerchio che accetta solo input di numeri positivi.
Si veda l’ esercizio 4.2
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
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″.
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)
Stampare il voto degli Esercizi
Si possono inserire IF/ELSE all’interno di altri IF/ELSE
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?
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
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;
Esercizi
floor
(n) (si deve includere anche il file <cmath>
)1. Prime nozioni di Programmazione
2. C++ elementi di un programma
3. Le istruzioni di I/O standard
5. C++ funzioni matematiche ed espressioni booleane
6. Le strutture di controllo - parte seconda
8. Array di caratteri e tipi astratti
9. Astrazione procedurale: Procedure e Funzioni
10. Astrazione procedurale: Procedure e Funzioni -parte seconda
11. Astrazione procedurale: Procedure e Funzioni - parte terza
12. Librerie
13. Le strutture di controllo - parte terza
14. Algoritmi
16. I File di testo
17. La classe string