C’de Karar Yapıları

Karar yapıları adından da anlaşılacağı gibi program akışında belirli şart(lar) doğrultusunda hangi kod bloklarının çalışacağına karar vermemize olanak tanır. C dili gibi bir çok dilde 2 farklı karar yapısı vardır. Biri if diğeri ise switch (veya case) ismiyle anılır.

if yapısı
Lojik bir işlemin sonucunun doğru veya yanlış oluşuna göre 2 bloktan birini tercih etmeyi sağlar. Yanlışsa için yazılan blok tercihe bağlıdır. Yapıyı görelim;

if(şart)
{
//Doğru ise burası çalışır
}
else
{
//Yanlış ise burası çalışır
}

Yanlışsa için yazılan blok tercihe bağlıdır demiştim, else ve sonrasını yazmasanız da olur.

Gelelim şarta yani lojik işleme;
Mantıksal bir işlem için bir kaç operatörümüz var.
Eşittir: ==
Eşit değildir: !=
Büyüktür: >
Büyük eşittir:>=
Küçüktür: <
Küçük eşittir: <= Bu operatörler ile mantıksal bir kaç ifade örneği verecek olursak; a ve b diye 2 int değişkenimiz olsun. a==b a!=b a>b gibi…

int a=10;
int b=10;
if(a==b)
{
    printf("a ve b esittir");
}
else
{
    printf("a ve b esit degildir");
}

Diğer operatörlerle de çalıştığını görebilirsiniz veya sayıları kullanıcıdan alırsınız vs. örnekler çoğaltılabilir.

Bir de şart veya şartlar arasında ilişki kurmamızı sağlayan ilişkisel operatörler var.
Ve: &&
Veya: ||
Değil: !
Bunları kullanırken parantezler de kullanabilirsiniz. Bu sayede işlem önceliği sağlayabilirsiniz. Örneğin:
(a==b) || (c>=d)
!(a==b) (Bu işlemin denki (a!=b))

switch (case) yapısı
Bu yapıda değişkenin değerine göre belirli kod aralıkları çalıştırılabilir. Bkz:

switch(degisken)
{
    case deger1:
    //degisken==deger1 ise çalışır
    break;

    case deger2:
    //degisken==deger2 ise çalışır
    break;

    case deger3:
    //degisken==deger3 ise çalışır
    break;

    default:
    //yukarıdaki değerlerden hiç biri değilse çalışır.
}

İstediğimiz kadar senaryo yazabiliriz. Ayrıca default kısmı opsiyoneldir. Burada dikkat edilmesi gereken bir unsur break; komutlarıdır. Eğer kullanmazsanız o senaryodan sonra gelen diğer senaryoları da çalıştıracaktır. Dolayısıyla bu ifadenin standart kullanımında break komutları da vardır.

int a=1;
switch(a)
{
    case 1:
    printf("a 1e esittir");
    break;

    case 2:
    printf("a 2ye esittir");
    break;

    case 3:
    printf("a 3e esittir");
    break;

    case 4:
    printf("a 4e esittir");
    break;

    default:
    printf("a 1 2 3 4e eşit değil");
}

Burada kod blokları kullandığımız için önemli bir kaç unsura değinmek istiyorum:
Tek komutluk iş yaptıracaksak süslü parantez “{}” kullanmak zorunda değiliz. Yani yukarıdaki örneği şöyle yazsak da çalışırdı;

int a=10;
int b=10;
if(a==b)
    printf("a ve b esittir");
else
    printf("a ve b esit degildir");

Ancak unutmayın ki bu blok tek komuttan ibaretse geçerlidir, çok satırda böyle bir kullanım söz konusu değildir.

Süslü parantez “{}” açmadan önce, bloğa girmeden önce noktalı virgül “;” kullanmamalıyız. Çünkü noktalı virgül o yapıya sana bağlı bir blok yok mesajını verir.

Örnek Sorular

  1. Kullanıcının girdiği sayıyla önceden tanımlı bir sayıyı karşılaştıran şifre programının kodunu yazınız
  2. Kullanıcının girdiği 2 sayının büyük olanını bulan program kodunu yazınız
  3. Kullanıcının girdiği sayının mutlak değerini bulan program kodunu yazınız
  4. Kullanıcının girdiği sayının işaretini bulan program kodunu yazınız (Pozitif, Negatif, Sıfır)
  5. Kullanıcının girdiği vize ve final notunun ortalamasını bulup geçip kaldığını söyleyen program kodunu yazınız (vize:%40, final:%60, geçme notu:60)
  6. Kullanıcının girdiği sayıya denk gelen haftanın gününü söyleyen program kodunu yazınız(1: Pazartesi, 2: Salı, …, 7: Pazar, switch-case kullanarak)
  7. Kullanıcının girdiği sayıya denk gelen ayı söyleyen program kodunu yazınız(1: Ocak, 2: Şubat, …, 12: Aralık, switch-case kullanarak)
  8. Kullanıcının girdiği sayının 7’ye bölünebilirliğini kontrol eden program kodunu yazınız
  9. Kullanıcının girdiği sayının 7’ye ve 11’e bölünebilirliğini kontrol eden program kodunu yazınız
  10. Kullanıcının girdiği vize ve final notunun ortalamasını bulup not değerini veren program kodunu yazınız (vize:%40, final:%60)
    • 90-100 AA
    • 85-89 BA
    • 75-84 BB
    • 70-74 CB
    • 60-69 CC
    • 55-59 DC
    • 50-54 DD
    • 40-49 FD
    • 0-39 FF

Çözümlerini buradan indirebilirsiniz.

Tags: , , , , , , , , , , ,

No comments yet.

Leave a Reply

*