C'deki switch…case (C'deki Switch İfadesi) Örneklerle
C'deki Switch İfadesi Nedir?
C'deki anahtar ifadesi bir değişkenin değerini test eder ve onu birden fazla durumla karşılaştırır. Durum eşleşmesi bulunduğunda, o belirli durumla ilişkili bir ifade bloğu yürütülür.
Bir anahtar bloğundaki her durumun, tanımlayıcı olarak adlandırılan farklı bir adı/numarası vardır. Kullanıcı tarafından sağlanan değer, eşleşme bulunana kadar anahtar bloğu içindeki tüm durumlarla karşılaştırılır.
Bir vaka eşleşmesi bulunamazsa, varsayılan ifade yürütülür ve kontrol, anahtar bloğunun dışına çıkar.
Switch Case Söz Dizimi
Bir 'C' programında anahtar durumunun nasıl uygulandığına ilişkin genel bir sözdizimi aşağıdaki gibidir:
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;
- İfade tamsayı ifadesi veya karakter ifadesi olabilir.
- Değer-1, 2, n, her durumu ayrı ayrı tanımlamak için kullanılan durum etiketleridir. Bir programı çalıştırırken sorun yaratabileceği için durum etiketlerinin aynı olmaması gerektiğini unutmayın. '1' ile aynı etikete sahip iki durumumuz olduğunu varsayalım. Daha sonra programı çalıştırırken, programın ikinci bir durumu yürütmesini isteseniz bile, ilk görünen durum yürütülecektir. Bu durum programda sorunlar yaratır ve istenilen çıktıyı sağlamaz.
- Büyük/küçük harf etiketleri her zaman iki nokta üst üste ( : ) ile biter. Bu durumların her biri bir blokla ilişkilidir.
- Bir blok, belirli bir durum için gruplandırılmış birden fazla ifadeden başka bir şey değildir.
- Anahtar her çalıştırıldığında test ifadesinin değeri, anahtarın içinde tanımladığımız tüm durumlarla karşılaştırılır. Test ifadesinin 4 değerini içerdiğini varsayalım. Bu değer, programda etiketi XNUMX bulunana kadar tüm durumlarla karşılaştırılır. Bir vaka bulunur bulunmaz, söz konusu özel durumla ilişkili ifade bloğu yürütülür ve kontrol, anahtardan çıkar.
- Break anahtar sözcüğü her durumda belirli bir durumun sonunu belirtir. Her duruma bir mola vermezsek, belirli bir durum yürütülse bile, C'deki anahtar, sonuna ulaşılana kadar tüm durumları yürütmeye devam edecektir. Bu olmamalı; bu nedenle her durumda break anahtar sözcüğünü koymak zorundayız. Break, yürütüldüğünde durumu sonlandıracak ve kontrol, anahtardan düşecektir.
- Varsayılan durum isteğe bağlı bir durumdur. test ifadesinin değeri anahtar içindeki durumlardan herhangi biriyle eşleşmediğinde, varsayılan yürütülecektir. Aksi takdirde, anahtara varsayılan yazmak gerekli değildir.
- Anahtar çalıştırıldığında kontrol-x ifadesine gidecek ve programın yürütülmesine devam edilecektir.
Anahtar Bildirimi Akış Şeması
Aşağıdaki diyagram, switch case'de bir case'in nasıl seçildiğini göstermektedir:

C'de Switch Case Örneği
Aşağıdaki program switch kullanımını göstermektedir:
#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; }
Çıktı:
Value is 8
- Verilen programda, başlatılan bir işlemi açıkladık. değişken değeri 8 olan sayı.
- Num değişkeninde saklanan değeri karşılaştırmak ve eşleşen durumla ilişkili ifade bloğunu yürütmek için bir anahtar yapısı kullanılır.
- Bu programda num değişkeninde saklanan değer sekiz olduğundan, durum etiketi 8 olan durumu bir anahtar çalıştıracaktır. Durum yürütüldükten sonra kontrol anahtardan düşecek ve program başarılı sonuçla sonlandırılacaktır. değerin çıktı ekranına yazdırılması.
Num değişkeninin değerini değiştirmeyi deneyin ve çıktıdaki değişikliği fark edin.
Örneğin, varsayılan olarak şu programı ele alalım:
#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");}}
Çıktı:
Other programming language
C'de anahtar durumuyla çalışırken, birden fazla durumu benzersiz etiketlerle gruplandırırsınız. Switch ifadesinin sonunda dallanmak için her durumda bir break ifadesi eklemeniz gerekir.
İsteğe bağlı varsayılan durum, başka bir eşleşme yapılmadığında çalışır.
Aşağıdaki switch ifadesini ele alalım:
#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");}}
Çıktı:
Four, Five, or Six.
C'de Yuvalanmış Anahtar
In C, bir dış anahtara gömülü bir iç anahtara sahip olabiliriz. Ayrıca iç ve dış anahtarın durum sabitleri herhangi bir çelişki olmaksızın ortak değerlere sahip olabilir.
Kullanıcının kendi kimliğini girmesini isteyen aşağıdaki programı ele alalım, eğer kimlik geçerliyse kullanıcıdan şifresini girmesi istenecek, şifre doğruysa program kullanıcının adını yazdıracak, aksi takdirde program Yanlış Şifre yazdıracak ve eğer kimlik mevcut değilse program Yanlış Kimlik yazdıracaktır.
#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; } }
Çıktı:
Plese Enter Your ID: 500 Enter your password: 000 Welcome Dear Programmer
- Verilen programda başlatılan iki değişkeni açıkladık: Kimlik ve şifre
- Değişken kimliğine girilen değeri karşılaştırmak için bir dış anahtar yapısı kullanılır. Eşleşen durumla ilişkili ifade bloğunu yürütür (ID==500 olduğunda).
- Eğer blok ifadesi eşleşen durumla yürütülürse, şifre değişkenine girilen değerleri karşılaştırmak ve eşleşen durumla bağlantılı ifadeleri yürütmek için bir iç anahtar kullanılır (şifre==000 olduğunda).
- Aksi takdirde switch case varsayılan durumu tetikleyecek ve program taslağına ilişkin uygun metni yazdıracaktır.
Neden bir Switch kasasına ihtiyacımız var?
ile ilgili potansiyel bir sorun var if-else ifadesi alternatif yol sayısı arttıkça programın karmaşıklığı da artar. Programda birden fazla if-else yapısı kullanırsanız, bir programın okunması ve anlaşılması zorlaşabilir. Bazen programı kendisi yazan geliştiriciyi bile şaşırtabilir.
Bu sorunun çözümü switch ifadesidir.
Switch ifadesi için kurallar
- Bir ifadenin her zaman bir sonuca varması gerekir.
- Vaka etiketleri sabit ve benzersiz olmalıdır.
- Büyük/küçük harf etiketleri iki nokta üst üste (:) ile bitmelidir.
- Her durumda bir break anahtar sözcüğü bulunmalıdır.
- Yalnızca bir varsayılan etiket olabilir.
- Birden fazla switch ifadesini iç içe yerleştirebiliriz.
ÖZET
- Bir anahtar 'de karar verme yapısıdır'C. '
- Birden fazla kararın yer aldığı bir programda anahtar kullanılır.
- Bir anahtarın çalıştırılabilir bir test ifadesi içermesi gerekir.
- Her durumda bir break anahtar sözcüğü bulunmalıdır.
- Kutu etiketi sabit ve benzersiz olmalıdır.
- Varsayılan isteğe bağlıdır.
- Birden fazla switch ifadesi birbirinin içine yerleştirilebilir.