Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

La strutura di selezione Switch

Il costrutto switch serve per effettuare decisioni multiple sulla base di una variabile.
Esso prevede varie etichette case più una opzionale default.

Facciamo subito un esempio: poniamo di voler contare i voti immessi secondo i parametri di giudizio da A (voto più alto) a F (voto più basso), permettendo di inserire i voti fino a che non viene premuto il carattere EOF (sotto windows si ottiene premendo CTRL+Z sotto UNIX CTRL+D).

(L'articolo continua più sotto...)

//Uso dello switch
#include <iostream>

using namespace std;

int main()
{
    int voto,     //voto generico
    aCount = 0,   //occorrenze di a
    bCount = 0,   //occorrenze di b
    cCount = 0,   //occorrenze di c
    dCount = 0,   //occorrenze di d
    eCount = 0,   //occorrenze di e
    fCount = 0;   //occorrenze di f
    
    cout << "Inserisci la lettera corrispondente al voto."
         << endl
         << "Premi CTRL+Z per smettere di immettere voti."
         << endl;
         
    while (( voto = cin.get() ) != EOF )
    {
      switch (voto)
      {
        case 'A':     //voto A maiuscola
        case 'a':     //voto a minuscola
            ++aCount; // incrementa le a
            break;    //esce dallo switch  

        case 'B':     //voto B maiuscola
        case 'b':     //voto b minuscola
            ++bCount; // incrementa le b
            break;    //esce dallo switch
            
        case 'C':     //voto C maiuscola
        case 'c':     //voto c minuscola
            ++cCount; // incrementa le c
            break;    //esce dallo switch
            
        case 'D':     //voto D maiuscola
        case 'd':     //voto d minuscola
            ++dCount; // incrementa le d
            break;    //esce dallo switch
            
        case 'E':     //voto E maiuscola
        case 'e':     //voto e minuscola
            ++eCount; // incrementa le e
            break;    //esce dallo switch
            
        case 'F':     //voto F maiuscola
        case 'f':     //voto f minuscola
            ++fCount; // incrementa le f
            break;    //esce dallo switch
           
        case '\n':     //ignora nuova linea
        case '\t':     //ignora tabulazoni
        case ' ':      //ignora spazi vuoti
            break;     //esce dallo switch             
            
        default:       //tutti gli altri caratteri
           cout << "Voto non consentito."
                << "Immettere un nuovo voto." << endl;
           break;                 
       }
    }            
    
cout << endl << endl << "Occorrenze di tutti i voti:"
     << endl << "A: " << aCount   
     << endl << "B: " << bCount
     << endl << "C: " << cCount
     << endl << "D: " << dCount
     << endl << "E: " << eCount
     << endl << "F: " << fCount << endl;
system("PAUSE");
return 0;    
}
Lo switch quindi non fa altro che eseguire l'istruzione ++xCount dove x rappresenta il carattere digitato nel caso in cui esso sia ammissibile altrimenti come descritto nel caso di default viene richiesto di inserire un nuovo voto.

while (( voto = cin.get() ) != EOF )
questa istruzione sta a significare "ripeti tutto (cioè la struttura switch con i vari case) fino a che non viene immesso EOF".

Per il resto leggendo i commenti contenuti nel codice è facile capire come funziona il costrutto switch.

Nota: la funzione cin.get() non fa altro che leggere un singolo carattere da tastiera e porlo nella variabile voto.

Corsi
Corso JavascriptCorso Javascript
Guida completa allo scripting lato client. A partire da 39 €.
Corso LinuxCorso Linux
Guida completa al sistema open-source. A partire da 39 €.
Corso Webmaster AvanzatoCorso Webmaster Avanzato
Diventa un Webmaster professionista. A partire da 39 €.
Sommario
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122