Arduino'da switch-case yapısı, belirli bir değişkenin değerine göre farklı kod bloklarını çalıştırmak için kullanılan, oldukça kullanışlı bir kontrol yapısıdır. Özellikle birden fazla if-else if koşulunu yönetmek yerine daha düzenli ve okunabilir bir alternatif sunar.


switch-case Yapısı Nedir?

switch-case yapısı, bir değişkenin (veya ifadenin) olası değerlerini kontrol eder ve bu değerlerden birine eşit olduğunda ilgili kod bloğunu yürütür. Temel yapısı şu şekildedir:

switch (değişken_adı) 

{

  case değer1:

    // değişken_adı değer1'e eşitse çalışacak kod

    break;

  case değer2:

    // değişken_adı değer2'ye eşitse çalışacak kod

    break;

  case değer3:

  case değer4: // Aynı kod bloğunu paylaşan birden fazla case

    // değişken_adı değer3 veya değer4'e eşitse çalışacak kod

    break;

  default:

    // Yukarıdaki case'lerin hiçbirine uymadığında çalışacak kod

    break;

}


switch (değişken_adı)    : switch anahtar kelimesinden sonra parantez içinde kontrol edilecek değişken veya ifade yer alır. Bu değişken genellikle bir tamsayı (int, char, byte vb.) tipinde olmalıdır.

case değer:     : case anahtar kelimesi, switch içindeki değişkenin alabileceği olası değerleri belirtir. Her case'den sonra bir değer ve iki nokta üst üste gelir. Eğer switch içindeki değişken bu değer'e eşitse, ilgili case bloğundaki kodlar çalıştırılır.

break;     : Her case bloğunun sonunda mutlaka break; komutunu kullanmak önemlidir. break; komutu, o case bloğunun tamamlandığını ve switch yapısından çıkılması gerektiğini bildirir. Eğer break; kullanılmazsa, ilgili case çalıştıktan sonra switch yapısı içinde bir sonraki case'e düşer ve o bloğun kodunu da çalıştırır (bu duruma "fall-through" denir). Bazen bilinçli olarak break kullanılmayabilir, ancak genellikle beklenmeyen sonuçlara yol açtığı için dikkatli olunmalıdır.

default:     : İsteğe bağlıdır. Eğer switch içindeki değişken, belirtilen case değerlerinden hiçbirine eşit değilse, default bloğundaki kodlar çalıştırılır. Bu, bir "hiçbiri eşleşmezse" durumu için kullanılır. default bloğundan sonra da break; kullanmak iyi bir alışkanlıktır, özellikle default son case değilse.


1. Örnek Program Kodları

Hangi ayda kaç gün olduğunu ekrana yazdırır.


int ay = 2;

void setup()

{

      Serial.begin(9600);

      switch (ay)

      {

            case 1:  //ay değişkeni 1 ise.

                  Serial.println("Aydaki Gün Sayısı=31");

                  break;

            case 2:  //ay değişkeni 2 ise.

                  Serial.println("Aydaki Gün Sayısı= 28 veya 29");

                  break;

            case 3:

                  Serial.println("Aydaki Gün Sayısı= 31");

                  break;

            case 4:

                  Serial.println("Aydaki Gün Sayısı= 30");

                  break;

            case 5:

                  Serial.println("Aydaki Gün Sayısı= 31");

                  break;

            case 6:

                  Serial.println("Aydaki Gün Sayısı= 30");

                  break;

            case 7:

                  Serial.println("Aydaki Gün Sayısı= 31");

                  break;

             case 8:

                  Serial.println("Aydaki Gün Sayısı= 31");

                  break;

            case 9:

                  Serial.println("Aydaki Gün Sayısı= 30");

                  break;

            case 10:

                  Serial.println("Aydaki Gün Sayısı= 31");

                  break;

            case 11:

                  Serial.println("Aydaki Gün Sayısı= 30");

                  break;

            case 12:

                  Serial.println("Aydaki Gün Sayısı= 31");

                  break;

            default:  //yukarıdaki case lerin dışında bir durum varsa

                  Serial.println(" Lütfen 1 ile 12 arasında bir değer giriniz");

                  break;

      }

}


void loop()

{


}


2. Örnek Program Kodları

Hangi ayda kaç gün olduğunu ekrana yazdıran farklı bir uygulama.


int ay = 15;

void setup()

{

      Serial.begin(9600);

      switch (ay)

      {

            case 1:

            case 3:

            case 5:

            case 7:

            case 8:

            case 10:

            case 12:

                  Serial.println("Aydaki Gün Sayısı: 31");

                  break;

            case 4:

            case 6:

            case 9:

            case 11:

                  Serial.println("Aydaki Gün Sayısı: 30");

                  break;

            case 2:

                  Serial.println("Aydaki Gün Sayısı: 30");

                  break;

            default:

                  Serial.println("Lütfen 1 ile 12 arasında bir değer girin");

                  break;

  }

}


void loop()

{


}



3. Örnek Program Kodları

int sayi = 5;

char karakter = 'd';

void setup()

{

  Serial.begin(9600);

  switch (sayi)

  {

        case 1 ... 12:  //sayi değişkeni 4 ile 12 arasında ise.

              Serial.println("sayı= 1 ile 12 arasında");

              break;

        default:    //sayi değişkeni bunların dışında ise.

              Serial.println("Lütfen 1 ile 12 arasında bir değer girin");

              break;

  }


  switch (karakter)

  {

      case 'a':  //karakter değişkeni a ise.

            Serial.println("karakter = a");

            break;

      case 'b':  //karakter değişkeni b ise.

            Serial.println("karakter = b");

            break;

      case 'c' ... 'z':  //karakter değişkeni c ile z arasında ise.

            Serial.println("karakter = c ile z arasında");

            break;

      default:    //karakter değişkeni bunların dışında ise.

            Serial.println("Lütfen a ile z arası karakter giriniz");

            break;

  }

}


void loop()

{


}



___________________________________________________________________________________________________________________________________________________________


0 comments:

Yorum Gönder

Toplam Sayfa Görüntüleme Sayısı

Seri İletişim Protokolleri

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com