Pillole C++ n.3

In questa lezione parleremo delle strutture condizionali. Le strutture condizionali sono delle strutture dell’algoritmo che permettono di modificare l’esecuzione dello stesso sulla base di una o pià condizioni.
Esse sono distinte in:

  • Condizione Semplice
  • Condizione nidificata o annidata
  • Condizione Multipla

Condizione semplice

Lo svolgimento dell’algoritmo cambia sulla base di una condizione essa in termini generali di diagramma di flusso si rappresenta:

L’esempio qui mostrato non è unico. L’algoritmo nel momento in cui incontra la condizione esegue l’istruzione 1 se la condizione è verificata, l’istruzione 2 e 3 se la condizione non è verificata.
Ad esempio modifichiamo lo spezzone di flow chart in:

In termini di codifica in Linguaggio C++ si ha

if (A>B)
SOMMA:=A+B:
else
{DIFFERENZA:=A-B;
SOMMA=0;}

Da notare che il linguaggio C++ obbliga al’utilizzo delle parentesi graffe di apertura e chiusura solo nel caso in cui all’interno della condizione vero o falso indifferentemente sia presente più di un’istruzione. e virgola.

Condizioni nidificate

Molto spesso durante lo svolgimento dell’algoritmo è necessario verificare se si verificano più condizioni. Ad esempio per verificare che un numero x è interno ad un’intervallo a e b occorrono più condizioni. La struttura con condizioni nidificate proprio perchè deriva da un insieme di condizioni semplice connesse secondo quelle che sono le richieste del problema non ha una struttura unica.
un tipico esempio di una condizione concatenata è sotto riportata.

Questa struttura mostra che all’interno della prima condizione è presente un’altra condizione.
In termini di codifica C++ si ha:

if condizione
if condizione
istruzione 3
else
istruzione 4
else {
istruzione 1;
istruzione 3;
}

E’ utile notare come quando ci sono più istruzioni if .. then non sono necessarie le parentesi graffe.

Condizione multipla

Quando all’interno di un algoritmo occorre controllare che una variabile assuma una gamma finita di valori conviene utilizzare una struttura detta di condizione multipla che però risulta essere utilizzabile solo se la variabile oggetto della condizione ha un numero finito di valori interi o di tipo carattere. Non è quindi possibile a meno di manipolazioni all’interno dell’algoritmo utilizzare la condizione multipla nel C++ per controllare se una data variabile assume un range di valori.
Nel flow chart la condizione multipla si può rappresentare come tante condizioni in cascata come mostrato sotto:

La codifica in C++ di questo spezzone di codice è:

switch (variabile){
case valore 1:{
istruzione;
break;}
case valore 2:{
istruzione;
break;}
case valore 2:{
istruzione;
break;}
default:
istruzione;}

In C++ la condizione multipla prende nome di switch in quanto lè possibile controllare solo valori enumerativi e non intervalli. Infatti non è possibile controllare se una data variabile è all’interno di un intervallo numerico ma solo se assume valori precisi.

Esercizio:

Un giocatore partecipa ad un gioco a estrazione di palline puntando un importo x. A seconda del colore della pallina estratta egli realizza una vincita secondo lo scherma sotto riportato:

COLOREVINCITA
NERA0
ROSSA2 VOLTE LA PUNTATA
VERDE4 VOLTA LA PUNTATA

Questo problema ha le seguenti variabili

Input X reale, C colore pallina estratta “N”,”R”,”V” per i colori nero, rosso, verde quindi un tipo carattere
Output Vincita Reale.

L’algoritmo viene lasciato per esercizio allo studente.
La codifica in C++ è:

#include <iostream>
#include <string>
using namespace std;
char c;
float x,vincita;
int main () {
vincita=0;
cout << “Inserisci l’importo che desideri giocare” << endl;
cin >> x;
cout << endl << “Inserisci colore estratto” << endl;
cin >> c;
switch (c) {
case ‘n’:
vincita=0;
break;
case ‘r’:
vincita =2*x;
break;
case ‘v’:
vincita=4*x;
break;
default:
cout << “colore non valido” << endl;
}
cout << “Hai totalizzato vincita pari a : “;
cout <<endl<< vincita << endl;
}

In questo listato C++ è utile notare che è importante racchiudere fra apici singoli i valori di tipo char. E’ gestito anche l’errore qualora il colore inserito non sia valido.