W poprzednim wpisie było o instrukcji warunkowej If (link tutaj). W tym wpisie skupimy się nad instrukcją warunkową Switch. Jest to również instrukcja wyboru, może zostać zastosowana zamiast kilku instrukcji If sprawiając, że kod jest bardziej przejrzysty i łatwiej jest zobaczyć, jakie mamy warunki decyzyjne.

Konstrukcja pętli switch wygląda następująco:

Switch(<wyrażenie>)
{
    case <pierwszy_przypadek>:
	//kod który będzie się wykonywał
          break;

    case drugi_przypadek:
	//kod który będzie się wykonywał
	//kod który będzie się wykonywał
          break;
    case trzeci_przypadek:
	//kod który będzie się wykonywał
          break;
   
/*ilość przypadków jest dowolna*/

   default: //może wystąpić, ale nie musi
	//kod który będzie się wykonywać jeżeli nie zostanie dopasowane nic wcześniej
          break;
}

Przejdźmy do przykładu 🙂

Pierwszy przykład to kawałek kodu napisany w wersji z “if”.

String szkola = liceum

If(szkola == "przedszkole"){
	Console.WriteLine("Chodzisz do przedszkola");
}
If(szkola == "podstawowa"){
	Console.WriteLine("Chodzisz do szkoły podstawowej");
}
If(szkola == "liceum"){
	Console.WriteLine("Chodzisz do liceum");
}
If(szkola == "technikum"){
	Console.WriteLine("Chodzisz do technikum");
}
If(szkola == "zawodowa"){
	Console.WriteLine("Chodzisz do szkoły zawodowej");
}
If(szkola == "studia"){
	Console.WriteLine("Chodzisz na studia");
}else{
	Console.WriteLine("Nie wiadomo do jakiej szkoły chodzisz");
}

Teraz zamieńmy to na konstrukcję Switch.

Switch(szkola)
{
	Case "przedszkole":
		Console.WriteLine("Chodzisz do przedszkola");
		Break;
	Case "podstawowa":
		Console.WriteLine("Chodzisz do szkoły podstawowe");
		Break;
	Case "liceum":
		Console.WriteLine("Chodzisz do liceum");
		Break;
	Case "technikum":
		Console.WriteLine("Chodzisz do technikum");
		Break;
	Case "zawodowa":
		Console.WriteLine("Chodzisz do szkoły zawodowej");
		Break;
	Case "studia":
		Console.WriteLine("Chodzisz na studia");
		Break;
	Default:
		Console.WriteLine("Nie wiadomo do jakiej szkoły chodzisz");
		Break;
}

Czas na wyjaśnienie słów kluczowych.

Switch(<wyrażenie>)
{
    case <pierwszy_przypadek>:
	//kod który będzie się wykonywał
          break;
….

Switch(<wyrażenie>) – tutaj w miejscu <wyrażenie> wpisujemy, co chcemy porównać w sekcji  <pierwszy_przypadek> wpisujemy z czym chcemy porównać. Jeżeli obie wartości są sobie równe (jest ty przyrównanie, a nie porównanie np. mniejszy, większy), wtedy jest wykonywany kod, aż do wystąpienia instrukcji break;

Na koniec case może występować jedna z trzech instrukcji

Break – gdy konczymy sekcję case

Return – gdy nie chcemy już dalej wykonywać kodu i chcemy zwrócić np. wynik metody (o metodach będzie w kolejnych wpisach)

Goto – gdy chcemy przejśc do innego case

Np.


Switch(szkola)
{
	Case "przedszkole":
		Console.WriteLine("Chodzisz do przedszkola");
		Break;
	Case "podstawowa":
		Console.WriteLine("Chodzisz do szkoły podstawowe");
		Break;
	Case "liceum":
		Console.WriteLine("Chodzisz do liceum");
		Break;
	Case "technikum":
		Console.WriteLine("Chodzisz do technikum");
		Goto "studia";//gdybyśmy chcieli po wykonaniu sekcji dla "technikum" chceli przejśc do case dla "studia"
	Case "zawodowa":
		Console.WriteLine("Chodzisz do szkoły zawodowej");
		Break;
	Case "studia":
		Console.WriteLine("Chodzisz na studia");
		Break;
	Default:
		Console.WriteLine("Nie wiadomo do jakiej szkoły chodzisz");
		Break;
}

Jak widać istnieję 2 metody na obsługę decyzji w naszym programie. If jest najbardziej podstawowe i najczęściej stosowane, ale gdy mamy więcej przypadków wtedy warto pomyśleć o instrukcji switch.

Tak jak ostatnio tym razem również spróbuj zrobić kilka ćwiczeń z tą instrukcją tak, żeby poczuć o co chodzi 🙂

W razie problemów pamiętaj, że zawsze chętnie ci pomogę pisz chcezostacprogramista@gmail.com