C'deki switch…case (C'deki Switch İfadesi) Örneklerle
⚡ Akıllı Özet
C dilindeki switch ifadesi, bir ifadeyi birden fazla durum etiketiyle karşılaştırır ve eşleşen bloğu çalıştırır; bu da bir programın birçok sabit tamsayı veya karakter değeri arasından seçim yapması gerektiğinde uzun if-else zincirlerine göre daha temiz bir alternatif sunar.
C'deki Switch İfadesi Nedir?
C dilinde switch ifadesi, bir değişkenin değerini test eder ve birden fazla durumla karşılaştırır. Durum eşleşmesi bulunduğunda, o duruma ait bir dizi ifade 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:
Anahtar Nasıl Çalışır?
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 bir değişkeni başlattı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.
Aşağıdaki programı ele alalım; bu program kullanıcıdan kendi kimlik numarasını girmesini ister. Kimlik numarası geçerliyse, şifresini girmesi istenir; şifre doğruysa, program kullanıcının adını yazdırır, aksi takdirde "Yanlış Şifre" yazdırır; kimlik numarası mevcut değilse, "Yanlış Kimlik" yazdırı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 ID ve password olmak üzere iki değişken tanımladık.
- Dış switch yapısı, ID değişkenine girilen değeri karşılaştırmak için kullanılır. Eşleşen durumla (ID==500 olduğunda) ilişkili ifade bloğunu yürütür.
- Blok ifadesi eşleşen durumla birlikte yürütülürse, password değişkenine girilen değerleri karşılaştırmak ve eşleşen durumla bağlantılı ifadeleri yürütmek için (password==000 olduğunda) iç içe bir switch yapısı kullanılır.
- 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
C dilinde switch ifadesi yazarken şu kurallara uyun:
- 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.




