Jäsenrekisteriohjelmamme päävalinta olisi näppärintä toteuttaa switch - lauseella:
int paavalinta(cKerho &kerho) { char nappain; while (1) { paamenu(kerho); // Huom päämenun muuttunut parametrilista nappain = odota_nappain("?012345",0,MERKKI_ISOKSI); switch (nappain) { case '?': avustus(nappain); break; case '0': return 0; case '1': lisaa_uusi_jasen(nappain); break; case '2': etsi_jasenen_tiedot(nappain); break; case '3': tulosteet(nappain); break; case '4': tietojen_korjailu(nappain); break; case '5': paivita_jasenmaksuja(nappain); break; default : cout << "Näin ei voi käydä!" << endl; return 1; } } }
switch - lauseessa case osien lopuksi break on yleensä välttämätön. break estää suorittamasta seuraavia rivejä.
Joskus harvoin breakin puuttumista voidaan käyttää hyväksi, mutta tällöin pitää olla todella tarkkana:
switch (operaatio) { case 5: /* Operaatio 5 tekee saman kuin 4 */ case 4: x *= 2; break; /* 4 laskee x=2*x */ case 3: x += 2; /* 3 laskee x=x+4 */ case 2: x++; /* 2 laskee x=x+2 */ case 1: x++; break; /* 1 laskee x=x+1 */ default: x=0; break; /* Muut nollaavat x:än */ }
Lause default suoritetaan jos mikään case- osista ei ole täsmännyt (tai tietysti jos jokin break puuttuu). default- lauseen ei tarvitse olla viimeisenä, mutta tällöin vaaditaan taitavaa breakin käyttöä, siis paras pitää default viimeisenä!
Yleistä switch- lausetta ei voi korvata joukolla if- lauseita käyttämättä goto- lausetta. Mikäli kuitenkin jokaisen case rakenteen perässä on break, voidaan switch- korvata sisäkkäisillä if- else - rakenteilla.