switch…case w C (instrukcja Switch w C) z przykładami
Co to jest instrukcja Switch w C?
Instrukcja Switch w C testuje wartość zmiennej i porównuje ją z wieloma przypadkami. Po znalezieniu dopasowania przypadku wykonywany jest blok instrukcji powiązanych z tym konkretnym przypadkiem.
Każdy przypadek w bloku przełącznika ma inną nazwę/numer, który nazywany jest identyfikatorem. Wartość podana przez użytkownika jest porównywana ze wszystkimi przypadkami w bloku przełączników, aż do znalezienia dopasowania.
Jeśli NIE zostanie znalezione dopasowanie wielkości liter, wykonywana jest instrukcja domyślna i sterowanie wychodzi z bloku przełączania.
Zmień składnię przypadku
Ogólna składnia implementacji wielkości liter w programie „C” jest następująca:
switch( expression ) { case value-1: Block-1; Break; case value-2: Block-2; Break; case value-n: Block-n; Break; default: Block-1; Break; } Statement-x;
- Wyrażenie może być wyrażeniem całkowitym lub wyrażeniem znakowym.
- Wartości-1, 2, n to etykiety przypadków, które służą do indywidualnej identyfikacji każdego przypadku. Pamiętaj, że etykiety przypadków nie powinny być takie same, gdyż może to spowodować problem podczas wykonywania programu. Załóżmy, że mamy dwa przypadki z tą samą etykietą co „1”. Następnie podczas wykonywania programu zostanie wykonany przypadek, który pojawi się jako pierwszy, nawet jeśli chcesz, aby program wykonał drugi przypadek. Stwarza to problemy w programie i nie zapewnia pożądanych wyników.
- Etykiety przypadków zawsze kończą się dwukropkiem (:). Każdy z tych przypadków jest powiązany z blokiem.
- Blok to nic innego jak wiele instrukcji pogrupowanych dla konkretnego przypadku.
- Za każdym razem, gdy wykonywany jest przełącznik, wartość wyrażenia testowego jest porównywana ze wszystkimi przypadkami, które zdefiniowaliśmy wewnątrz przełącznika. Załóżmy, że wyrażenie testowe zawiera wartość 4. Wartość ta jest porównywana ze wszystkimi przypadkami, aż do przypadku, którego etykieta XNUMX zostanie znaleziona w programie. Gdy tylko przypadek zostanie znaleziony, wykonywany jest blok instrukcji skojarzony z tym konkretnym przypadkiem, a sterowanie zostaje wyłączone.
- Słowo kluczowe break w każdym przypadku wskazuje koniec konkretnego przypadku. Jeśli nie wstawimy breaka w każdym przypadku, to nawet jeśli konkretny przypadek zostanie wykonany, przełącznik w C będzie kontynuował wykonywanie wszystkich przypadków, aż do osiągnięcia końca. To nie powinno się zdarzyć; dlatego zawsze musimy w każdym przypadku umieścić słowo kluczowe break. Break zakończy sprawę po jej wykonaniu, a sterowanie wypadnie z przełącznika.
- Przypadek domyślny jest opcjonalny. Za każdym razem, gdy wartość test-expression nie jest zgodna z żadnym przypadkiem wewnątrz przełącznika, zostanie wykonany domyślny. W przeciwnym wypadku nie trzeba pisać default w przełączniku.
- Po wykonaniu przełącznika sterowanie przejdzie do instrukcji-x i wykonywanie programu będzie kontynuowane.
Schemat blokowy instrukcji przełącznika
Poniższy diagram ilustruje sposób wybierania przypadku w przypadku przełącznika:
Przykład przypadku przełącznika w C
Poniższy program ilustruje użycie przełącznika:
#include <stdio.h> int main() { int num = 8; switch (num) { case 7: printf("Value is 7"); break; case 8: printf("Value is 8"); break; case 9: printf("Value is 9"); break; default: printf("Out of range"); break; } return 0; }
Wyjście:
Value is 8
- W danym programie wyjaśniliśmy zainicjowanie a zmienna liczba o wartości 8.
- Konstrukcja przełącznika służy do porównywania wartości przechowywanej w zmiennej num i wykonywania bloku instrukcji powiązanego z dopasowanym przypadkiem.
- W tym programie, ponieważ wartość przechowywana w zmiennej num wynosi osiem, przełącznik wykona przypadek, którego etykieta wynosi 8. Po wykonaniu przypadku sterowanie wypadnie ze przełącznika, a program zostanie zakończony pomyślnym wynikiem przez wydrukowanie wartości na ekranie wyjściowym.
Spróbuj zmienić wartość zmiennej num i zwróć uwagę na zmianę na wyjściu.
Rozważmy na przykład następujący program, który domyślnie:
#include <stdio.h> int main() { int language = 10; switch (language) { case 1: printf("C#\n"); break; case 2: printf("C\n"); break; case 3: printf("C++\n"); break; default: printf("Other programming language\n");}}
Wyjście:
Other programming language
Pracując z obudową przełączników w C, grupujesz wiele przypadków z unikalnymi etykietami. W każdym przypadku należy wprowadzić instrukcję break, aby rozgałęzić się na końcu instrukcji switch.
Opcjonalny przypadek domyślny jest uruchamiany, gdy nie zostaną dokonane żadne inne dopasowania.
Rozważmy następującą instrukcję switch:
#include <stdio.h> int main() { int number=5; switch (number) { case 1: case 2: case 3: printf("One, Two, or Three.\n"); break; case 4: case 5: case 6: printf("Four, Five, or Six.\n"); break; default: printf("Greater than Six.\n");}}
Wyjście:
Four, Five, or Six.
Zagnieżdżony przełącznik w C
In Cmożemy mieć przełącznik wewnętrzny osadzony w przełączniku zewnętrznym. Ponadto stałe przypadku przełącznika wewnętrznego i zewnętrznego mogą mieć wspólne wartości i nie powodować żadnych konfliktów.
Rozważmy poniższy program, w którym użytkownik musi wpisać swój własny identyfikator. Jeśli identyfikator jest prawidłowy, program poprosi o podanie hasła. Jeśli hasło jest poprawne, program wydrukuje nazwę użytkownika. W przeciwnym razie program wydrukuje komunikat Nieprawidłowe hasło, a jeśli identyfikator nie istnieje, program wydrukuje komunikat Nieprawidłowy identyfikator.
#include <stdio.h> int main() { int ID = 500; int password = 000; printf("Plese Enter Your ID:\n "); scanf("%d", & ID); switch (ID) { case 500: printf("Enter your password:\n "); scanf("%d", & password); switch (password) { case 000: printf("Welcome Dear Programmer\n"); break; default: printf("incorrect password"); break; } break; default: printf("incorrect ID"); break; } }
Wyjście:
Plese Enter Your ID: 500 Enter your password: 000 Welcome Dear Programmer
- W podanym programie wyjaśniliśmy inicjowane dwie zmienne: ID i hasło
- Do porównania wartości wprowadzonej w zmiennej ID używana jest konstrukcja przełącznika zewnętrznego. Wykonuje blok instrukcji powiązany z dopasowanym przypadkiem (gdy ID==500).
- Jeżeli instrukcja block jest wykonywana z dopasowaną wielkością liter, używany jest wewnętrzny przełącznik do porównywania wartości wprowadzonych w zmiennej hasło i wykonywania instrukcji powiązanych z dopasowaną wielkością liter (gdy hasło==000).
- W przeciwnym wypadku przełącznik uruchomi przypadek domyślny i wydrukuje odpowiedni tekst dotyczący zarysu programu.
Dlaczego potrzebujemy obudowy Switch?
Jest jeden potencjalny problem z plikiem instrukcja if-else co oznacza, że złożoność programu wzrasta, gdy wzrasta liczba alternatywnych ścieżek. Jeśli używasz wielu konstrukcji if-else w programie, program może stać się trudny do odczytania i zrozumienia. Czasami może to nawet zdezorientować programistę, który sam napisał program.
Rozwiązaniem tego problemu jest instrukcja switch.
Reguły instrukcji switch
- Wyrażenie musi zawsze zostać wykonane w wyniku.
- Etykiety przypadków muszą być stałe i unikalne.
- Etykiety przypadków muszą kończyć się dwukropkiem ( : ).
- W każdym przypadku musi występować słowo kluczowe break.
- Może istnieć tylko jedna etykieta domyślna.
- Możemy zagnieżdżać wiele instrukcji switch.
Podsumowanie
- Przełącznik jest konstruktem decyzyjnym w 'C".
- Przełącznik jest używany w programie, w którym zaangażowanych jest wiele decyzji.
- Przełącznik musi zawierać wykonywalne wyrażenie testowe.
- Każdy przypadek musi zawierać słowo kluczowe break.
- Etykieta przypadku musi być stała i unikalna.
- Wartość domyślna jest opcjonalna.
- Wiele instrukcji switch może być zagnieżdżonych w sobie.