switch(wyrażenie)
{
case wart1:
instrA;
break;
case wart2:
instrB;
break;
default:
instrC;
break;
}
Instrukcja switch jak sugeruje nazwa - służy do podejmowania wielowariantowych decyzji. Jeśli wartość wyrażenia odpowiada którejś z wartości podanej w jednej z etykiet case, wówczas wykonywane są instrukcje począwszy od tej etykiety. Wykonywanie ich kończy się po napotkaniu instrukcji break. Powoduje to wyskok z instrukcji switch - czyli wyjście poza jej dolną klamrę.
Jeśli wartość wyrażenia nie zgadza się z żadną z wartości podanych przy etykietach case, wówczas wykonują się instrukcje umieszczone po etykiecie default. W przykładzie etykieta ta znajduje się na końcu instrukcji switch, jednak może być w dowolnym miejscu, nawet na samym jej początku. Co więcej, etykiety default może nie być wcale. Jeśli wartość wyrażenia nie zgadza się z żadną z wartości przy etykietach case, a etykiety default nie ma wcale, wówczas opuszcza się instrukcję switch nie wykonując niczego.
#include <iostream>
using namespace std;
int main()
{
int nr;
cout << "Podaj numer: ";
cin >> nr;
switch (nr)
{
case 3:
cout << "*";
break;
case 2:
cout << "-";
break;
case 1:
cout << "!";
break;
default:
cout << "&&&&";
}
}
Uruchom powyższy program i przeanalizuj jego działanie.
Zmodyfikuj program tak, aby zależnie od wartości zmiennej nr na ekranie pojawiły się następujące wydruki:
dla nr=3 *-!
dla nr=2 -!
dla nr=1 !
dla innego n nic się nie wydrukuje
Uwaga: każda etykieta może zawierać instrukcję wyświetlającą tylko jeden znak.
Zapoznaliśmy się powyżej z działaniem instrukcji break - polegającym na przerwaniu wykonywania instrukcji switch. Jest jeszcze inne, choć podobne działanie break w stosunku do instrukcji pętli: for, while, do...while. Instrukcja ta powoduje natychmiastowe przerwanie wykonywania tych pętli.
Jeśli mamy do czynienia z kilkoma pętlami - zagnieżdżonymi jedna wewnątrz drugiej, to instrukcja break powoduje przerwanie tylko tej pętli, w której bezpośrednio tkwi. Jest to więc przerwanie z wyjściem tylko o jeden poziom wyżej.
int i=7;
while(1)
{
cout << "Petla, i=" << i << "\n";
i = i-1;
if(i<5){
cout << "Przerywamy!";
break;
}
}
Przeanalizuj powyższy program i podaj wynik jego działania. Następnie uruchom go.
Instrukcja continue przydaje się wewnątrz pętli for, while, do...while. Powoduje ona zaniechanie realizacji instrukcji będących treścią pętli, jednak (w przeciwieństwie do instrukcji break) sama pętla nie zostaje przerwana. Continue przerywa tylko ten obieg pętli i zaczyna następny, kontynuując pracę pętli.
int k;
for(k=0; k<8; k=k+1)
{
cout << "A";
if(k>1)
continue;
cout << "b" << endl;
}
Przeanalizuj powyższy program i podaj wynik jego działania. Następnie uruchom go.
Napisz program KALKULATOR, który pozwala wykonywać podstawowe działania na dwóch liczbach, tj: dodawanie, odejmowanie, mnożenie i dzielenie. Rodzaj działania jest określany przez wpisanie na klawiaturze operatora odpowiadającego operacji matematycznej. Program kończy się po udzieleniu przez użytkownika odpowiedzi pozytywnej ('t') na pytanie „czy zakończyć program?”.
Napisz program obliczający dla trzech liczb a, b i c średnie:
A: arytmetyczną: $S_{a} = \frac{a + b + c}{3}$
G: geometryczną: $S_{g} = \sqrt[3]{a \bullet b \bullet c}$
H: harmoniczną: $S_{h} = \frac{3}{\frac{1}{a} + \frac{1}{b} + \frac{1}{c}}$
Wybór średniej która ma być policzona powinien odbywać się przez wybranie odpowiednio a, g lub h (użyj instrukcji wyboru switch).
Napisz program wypisujący liczby od 1 do 20 do momentu kiedy kolejna liczba będzie podzielna przez 7. Użyj pętli for i instrukcji break.
Napisz program wyświetlający na ekranie liczby nieparzyste z zakresu od 1 do 20. Skorzystaj w tym celu z pętli for i instrukcji continue.