Instrukcja "switch". Coś Wam to mówi? To kolejny ze sposobów czytelniejszego zapisu rozgałęzienia instrukcji warunkowej. W odróżnieniu od poprzednio omawianego operatora trójargumentowego, pozwala to obsłużyć wiele wartości w jednej klauzuli. Nie myślcie tylko, że to jest zapis bez wad bo jak w całej informatyce, wszystko ma swoje plusy i minusy. Zachęcam do lektury.

INSTRUKCJA SWITCH. WYJAŚNIENIE I ZASTOSOWANIE

Tytułowy "przełącznik" (albo bardziej elegancko "instrukcja wielokrotnego wyboru") jest kolejną odmianą możliwości sterowania przebiegiem programu w zależności od spełnionych warunków. Działa tak samo jak rozgałęziony "if else", tylko udostępnia "piękniejszą", czytelniejszą i bardziej profesjonalną formę zapisu. Instrukcja switch w całej okazałości wygląda w taki sposób:

switch (zmienna typu liczba całkowita)
{
	case warunek1:
		instrukcja1;
		break;
		
	case warunek2:
		instrukcja2a;
		instrukcja2b;
		break;
		
	case warunek3:
	case warunek4:
		instrukcja3;
		break;

	default:
		instrukcja4;
}

Po słowie kluczowym "switch", wprowadzamy w środek nawiasów zmienną przechowującą liczbę całkowitą. Może to być również zmienna znakowa (char) albo typ wyliczeniowy znany pod słowem "enum" (szczegóły na temat typu wyliczeniowego znajdziecie tutaj). Potem po otwarciu bloku kodu inicjujemy warunek za pomocą słowa kluczowego "case". Następnie dorzucamy stałą wartość liczbową, a po niej znak dwukropka. W nowej linii kodu wprowadzamy dowolne instrukcje, które mają dotyczyć określonego warunku.

Instrukcja "switch" wymaga wprowadzenia słowa "break", aby poinformować komputer jak "daleko" określone instrukcje mają być wykonywane. Tutaj występuje mała pułapka! Pominięcie tego słowa nie spowoduje błędu. Zamiast tego, gdy dany przypadek zostanie spełniony i nie napotka na "break", wtedy komputer "przeskoczy" kolejną klauzulę "case" i zacznie wykonywać instrukcje NASTĘPNEGO warunku!!! Dlatego nie zapominajcie o "zaznaczeniu" końca instrukcji dla danego przypadku jeśli dany "case" ma jakieś instrukcje. W przeciwnym wypadku zostawiacie to w takiej postaci jak na powyższym fragmencie z warunkiem #3 i #4. Taki zapis również nie jest błędny i spowoduje potraktowanie tych przypadków jak alternatywy (jeśli warunek #3 jest prawdziwy LUB warunek #4 jest prawdziwy).

Przełącznik jest bardzo elastyczny, ale trzeba mieć na względzie te drobne pułapki o których przed chwilą skończyłem pisać. Poniższa "klasyczna" instrukcja warunkowa charakteryzuje się identycznym działaniem w porównaniu do powyższego fragmentu:

if(warunek1)
	instrukcja1;
else if(warunek2)
{
	instrukcja2a;
	instrukcja2b;
}
else if(warunek3 || warunek4)
	instrukcja3;
else
	instrukcja4;

Instrukcja "switch" powinna być jak najbardziej wykorzystywana, ale pod pewnymi warunkami opisanymi powyżej. Trzeba uważać na te drobne pułapki, ponieważ istnieje kilka sposobów zapisu, które komputer może zinterpretować zupełnie inaczej niż przewidywano.

Instrukcja switch

Przełącznik (ang. "switch") umożliwia dużo czytelniejszą obsługę wielu rozgałęzień zawartych w klauzulach "if else" w postaci objęcia wszystkich przypadków w jeden uszeregowany blok.

INSTRUKCJA SWITCH. PRZYKŁADOWY KOD ŹRÓDŁOWY

Po takiej charakterystyce tytułowej instrukcji ponownie zostawię Wam przykład ilustrujący zastosowanie "switcha" w praktyce. Język C, oczywiście.

#include <stdio.h>
 
int main(void)
{
	int i = 0, x = 0;
	
	puts("Wprowadz wartosc dla zmiennej i (0 / 1 / 2 / 3)");
	scanf("%d", &i);
	
	switch (i)
	{
		case 0:
			x = 5;
			break;
			
		case 1:
			x = 26;
			break;
			
		case 2:
		case 3:
			x = 45;
			break;
 
		default:
			x = -1;
	}
	
	printf("Wartosc zmiennej x jest rowna %d.\n", x);
	getchar();
	
	return 0;
}

Wszystko na ten temat. Cóż więcej można dodać?

PODOBNE ARTYKUŁY