122 Godzina 8
wyrażenie to dowolne poprawne wyrażenie C++, natomiast instrukcje to dowolne poprawne instrukcje C++ (również bloki instrukcji). Instrukcja switch oblicza wartość podanego wyrażenia i porównuje z wartościami podanymi przy case. Zauważ, że sprawdzana jest tylko relacja równości, nie można tu możliwości wykorzystania innych relacji.
Jeśli któraś z wartości przy case jest równa wartości wyrażenia to program przechodzi do podanych dalej instrukcji i wykonuje wszystko do końca bloku switch tak długo, aż napotka instrukcję break. Jeśli żadna z wartości nie jest równa wartości wyrażenia to wykonywane są instrukcje przy słowie kluczowym default. Jeśli nie określimy instrukcji default i program nie odnajdzie pasującej wartości, to instrukcja switch nie zrobi nic, zostanie pominięta.
Dobrym zwyczajem jest wykorzystywanie instrukcji default. Nawet jeśli nie musisz jej używać, to wykorzystaj ją do ewentualnego wypisania niepoprawnej, nie występującej przy żadnym z case wartości i poinformowania o błędzie. Takie postępowanie pozwoli Ci na łatwiejsze wyszukiwanie błędów w programach.
Bardzo ważne jest, że jeśli nie ma instrukcji break na końcu każdego case, to program wykona wszystkie instrukcje od pasującego case aż do końca switch (jeśli gdzieś niżej napotka break, to oczywiście przerwie wykonywanie). Jeśli decydujesz się na takie rozwiązanie, to pamiętaj o umieszczeniu odpowiedniego komentarza informującego o tym, że brak break jest zamierzony.
Listing 8.15. ilustruje wykorzystanie instrukcji switch.
1
2
3
4
5
6
7
8
9
10 11 12
// Listing 8.15
// Demonstracja instrukcji switch
#include <iostream.h>
int main ()
{
unsigned short int numer;
cout « "Podaj liczbę miedzy 1 a 5:
cin » numer;
switch {
(numer)
13 14 |
case 0 |
cout |
« |
"Przepraszam, za |
mało! "; break; | |
15 |
case 5 |
cout |
« |
"Dobra robota!\n' |
; // idz dalej | |
16 |
case 4 |
cout |
« |
"Dobry strzał!\n' |
; // idz dalej | |
17 |
case 3 |
cout |
« |
"Doskonale!\n"; |
// idz |
dalej |
18 |
case 2 |
cout |
« |
"Władczo!\n"; |
// idz |
dalej |
19 |
case 1 |
cout |
« |
"Niesamowicie!\n’ |
. t |
wyrażenie to dowolne poprawne wyrażenie C++, natomiast instrukcje to dowolne poprawne instrukcje C++ (również bloki instrukcji). Instrukcja switch oblicza wartość podanego wyrażenia i porównuje z wartościami podanymi przy case. Zauważ, że sprawdzana jest tylko relacja równości, nie można tu możliwości wykorzystania innych relacji.
Jeśli któraś z wartości przy case jest równa wartości wyrażenia to program przechodzi do podanych dalej instrukcji i wykonuje wszystko do końca bloku switch tak długo, aż napotka instrukcję break. Jeśli żadna z wartości nie jest równa wartości wyrażenia to wykonywane są instrukcje przy słowie kluczowym default. Jeśli nic określimy instrukcji default i program nie odnajdzie pasującej wartości, to instrukcja switch nie zrobi nic, zostanie pominięta.
Dobrym zwyczajem jest wykorzystywanie instrukcji default. Nawet jeśli nie musisz jej używać, to wykorzystaj ją do ewentualnego wypisania niepoprawnej, nie występującej przy żadnym z case wartości i poinformowania o błędzie. Takie postępowanie pozwoli Ci na łatwiejsze wyszukiwanie błędów w programach.
Bardzo ważne jest, że jeśli nie ma instrukcji break na końcu każdego case, to program wykona wszystkie instrukcje od pasującego case aż do końca switch (jeśli gdzieś niżej napotka break, to oczywiście przerwie wykonywanie). Jeśli decydujesz się na takie rozwiązanie, to pamiętaj o umieszczeniu odpowiedniego komentarza informującego o tym, że brak break jest zamierzony.
Listing 8.15. ilustruje wykorzystanie instrukcji switch.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10
11
12
13
14
15
16
17
18 19
// Listing 8.15
// Demonstracja instrukcji switch
#include <iostream.h>
int main()
(
unsigned short int numer;
cout « "Podaj liczbę miedzy 1 a 5: ";
cin » numer;
switch (numer)
I
case 0 : cout « "Przepraszam, za mało!
break;
case 5 : cout « "Dobra robota!\n"; // idz dalej case 4 ; cout « "Dobry strzał!\n"; // idz dalej case 3 : cout « "Doskonale!\n"; // idz dalej
case 2 : cout « "Władczo!\n”; // idz dalej
case 1 : cout « "Niesamowicie!\n";