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.

  • 🔀 Çok yönlü dallanma: Bir switch ifadesi bir ifadeyi test eder ve eşleşen durum etiketine atlar.
  • ???? ️ Kutu etiketleri: Her bir örnek, iki nokta üst üste ile biten benzersiz bir sabit tamsayı veya karakter etiketi kullanır.
  • Break anahtar kelimesi: `break` ifadesi bir durumu sonlandırır; bu ifade olmadan, işlem devam eder.
  • 🧩 Varsayılan durum: İsteğe bağlı varsayılan blok, hiçbir durum etiketi ifadeyle eşleşmediğinde çalışır.
  • ???? Anahtar kuralları: Dosya etiketleri sabit ve benzersiz kalır, yalnızca bir varsayılan etikete izin verilir.

C'de Switch İfadesi

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 Bildirimi Akış Şeması

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

C'de Switch Case Örneği

  1. Verilen programda bir değişkeni başlattık. değişken değeri 8 olan sayı.
  2. 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.
  3. 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

C'de Yuvalanmış Anahtar

  1. Verilen programda ID ve password olmak üzere iki değişken tanımladık.
  2. 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.
  3. 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.
  4. 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.

SSS

AC anahtarı yalnızca int, char ve enum değerlerini kabul eder; float veya string değerlerini asla kabul etmez, çünkü her etiket sabit bir tamsayı olmalıdır.

Kesinti olmazsa, kontrol aksar ve sonraki her vaka da aynı şekilde çalışır; bazen kasıtlıdır, ancak genellikle kazara oluşan bir hatadır.

Hayır. C, dizeler üzerinde switch işlemi yapamaz; etiketler sabit tamsayılar olmalıdır. Bunun yerine if-else yapısı içinde metni strcmp ile karşılaştırın.

Standart C, aralık kullanımını yasaklar; ancak GCC, taşınabilir olmayan bir duruma izin verir (1…5): taşınabilir kodun kaçınması gereken bir uzantı.

Hayır. Varsayılan durum herhangi bir yerde olabilir; yalnızca hiçbir etiket eşleşmediğinde çalışır. Son yerleştirme sadece bir gelenektir.

Evet, ancak durum gövdesini süslü parantezler içine alın; aksi takdirde etiket sonrasında yapılan bir bildirim derleyici hatalarına yol açabilir.

Evet. Yapay zeka kodlama asistanları switch bloklarını taslak haline getirir, her kesmeyi ekler ve yanlışlıkla oluşan hataları işaretler. Oluşturulan mantığı her zaman gözden geçirin.

GitHub Yardımcı Pilotu Durum etiketlerini otomatik olarak tamamlar, kesme ifadeleri ekler ve uzun if-else zincirlerini yorumdan switch yapısına dönüştürür.

Bu yazıyı şu şekilde özetleyin: