Switch
Przekierowano z Case
Instrukcja wyboru switch to tzw. zwrotnica wielokierunkowa. Instrukcja ta pozwala na zdefiniowanie działań dla różnych wyników jednego wyrażenia.
Jej konstrukcja pozwala na łatwiejsze od zwykłej pętli definiowanie przypadków (większej ich liczby). Wygląda ona następująco:
Jak widać instrukcja jest dosyć prosta i można jej używać dla każdego działania zwracającego wartości wyliczeniowe (znak, liczba całkowita).
Instrukcja break potrzebna jest na końcu każdej szufladki. Jeżeli jej nie będzie, automatycznie wykona się kolejna szufladka. Nie jest ona natomiast wymagane, jeżeli szufladka jest ostatnią.
Case to tzw. szufladka. Szufladki nie mogą mieć takich samych wartości i nie muszą być wypisywane w jakim kolwiek porządku.
Wariant default nie jest wymagany i realizuje się on wtedy gdy wartość_kluczowa nie pasuje do żadnej z szufladek. Default nie musi być ostatnią zakładką jednak wtedy musi zawierać instrukcję break.
Operować instrukcją Switch można np. na typach Integer czy Chararcter. Nie można natomiast przekazywać typu np. String - kompilator zwróci błąd o niezgodności typu przekazanego do instrukcji.
Przykład dla okna dialogowego MessageBox:
Zobacz też:
Jej konstrukcja pozwala na łatwiejsze od zwykłej pętli definiowanie przypadków (większej ich liczby). Wygląda ona następująco:
switch(wyrażenie_kluczowe)
{
case wartosc_1:
instrukcje;
break;
case wartosc_2:
instrukcje;
break;
// ...
default:
cout << "Błąd";
}
{
case wartosc_1:
instrukcje;
break;
case wartosc_2:
instrukcje;
break;
// ...
default:
cout << "Błąd";
}
Jak widać instrukcja jest dosyć prosta i można jej używać dla każdego działania zwracającego wartości wyliczeniowe (znak, liczba całkowita).
Instrukcja break potrzebna jest na końcu każdej szufladki. Jeżeli jej nie będzie, automatycznie wykona się kolejna szufladka. Nie jest ona natomiast wymagane, jeżeli szufladka jest ostatnią.
Case to tzw. szufladka. Szufladki nie mogą mieć takich samych wartości i nie muszą być wypisywane w jakim kolwiek porządku.
Wariant default nie jest wymagany i realizuje się on wtedy gdy wartość_kluczowa nie pasuje do żadnej z szufladek. Default nie musi być ostatnią zakładką jednak wtedy musi zawierać instrukcję break.
Operować instrukcją Switch można np. na typach Integer czy Chararcter. Nie można natomiast przekazywać typu np. String - kompilator zwróci błąd o niezgodności typu przekazanego do instrukcji.
Przykłady
#include <iostream>
using namespace std;
int main()
{
int liczba;
cout << "Podaj liczbe: ";
cin >> liczba;
cout << endl;
switch(liczba)
{
case 2: cout << "Dwa"; break;
case 4: cout << "Cztery"; break;
case 8: cout << "Osiem"; break;
default: cout << "Iles tam :)";
}
}
using namespace std;
int main()
{
int liczba;
cout << "Podaj liczbe: ";
cin >> liczba;
cout << endl;
switch(liczba)
{
case 2: cout << "Dwa"; break;
case 4: cout << "Cztery"; break;
case 8: cout << "Osiem"; break;
default: cout << "Iles tam :)";
}
}
Przykład dla okna dialogowego MessageBox:
#include <windows.h>
switch(MessageBox(NULL,"Jakiś text","Jakiś tytuł",MB_ABORTRETRYIGNORE+MB_ICONEXCLAMATION))
{
case IdAbort: MessageBox(NULL,"Wybrałeś Przerwij","Wynik",MB_OK); break;
case IdRetry: MessageBox(NULL,"Wybrałeś Ponów","Wynik",MB_OK); break;
case IdIgnore: MessageBox(NULL,"Wybrałeś Ignoruj","Wynik",MB_OK); break;
default: MessageBox(NULL,"Wartość błędna","Wynik",MB_OK);
}
switch(MessageBox(NULL,"Jakiś text","Jakiś tytuł",MB_ABORTRETRYIGNORE+MB_ICONEXCLAMATION))
{
case IdAbort: MessageBox(NULL,"Wybrałeś Przerwij","Wynik",MB_OK); break;
case IdRetry: MessageBox(NULL,"Wybrałeś Ponów","Wynik",MB_OK); break;
case IdIgnore: MessageBox(NULL,"Wybrałeś Ignoruj","Wynik",MB_OK); break;
default: MessageBox(NULL,"Wartość błędna","Wynik",MB_OK);
}
Zobacz też:



czyli dałes link strony do samej siebie
link do default też jest bezsensu
case default i switch wszsystkie powinny wskazywac na ten sam tekst mówiący o instrukcji switch
Pomysłkę usunąłem.
Nie mogę np. chararcter?
np.
char znak;
cin >> znak;
switch(znak)
{
case 'e' : jakas_fukcja();
break;
default: cos_innego();
break;
}