C Programlama Koşul ve if else Yapıları

C Programlama 

Koşullu (Conditional) İfadeler : C Programlama Dilinde tüm işlem satırlarını herhangi bir koşula bağlı olmaksızın çalıştırabiliriz fakat, bazı durumlarda belirli işlemler için istenen koşullar sağlandığında çalışması gerekebilecek satırların belirlenmesi gerekebilir. Bu koşulları devreye sokmaya yarayan program yapılarına "Program Kontrol Terimleri" adı verilir. Programlarınızda sizin tarafınızdan belirlenen koşullara bağlı olarak çalıştırmak istediğiniz işlem satır veya satırları olacaktır. Tanımlanan koşul sağlanmadığı zaman söz konusu işlem satır veya satırları programda hiç yer almamış gibi değerlendirilecek başka bir ifade ile hiç çalışmayacaklardır. Program aynı işlem satırı içinde yer alan koşul bölümünü değerlendirdiğinde sadece olumlu sonuç alırsa satırın geri kalanına işlem yapacak aksi takdirde bu satırları görmeden atlayacaktır. 

if, if-else Yapıları : Bu yapılar, koşullu işlem yapan kontrol yapılarıdırlar. if ve else tek bir karşılaştırma deyimi olup else kullanımı isteğe bağlıdır. Eğer bu koşul olumlu ise if den sonraki bölüm yürütülür ve else den sonraki bölüm atlanır. Koşul olumsuz ise if den sonraki satırlar atlanır ve eğer varsa, else den sonraki işlemler gerçekleştirilir. 

if yapısının genel biçimi: 
if(koşul)
{
........
işlem satırı; (ifade) ........
}
if ile başlayan komut satırında if'den sonra yer alan parantezler içindeki koşul doğru ise (koşul sonucu 0'dan farklı ise) aynı satırda if yapısından sonra yer alan işlem satırı çalışır. Eğer koşul yanlış ise (ifade sonucu 0'a eşit ise) if yapısından sonra yer alan işlem satırı devre dışı kalır. Programımız o işlem satırı hiç yazılmamış gibi bir sonraki işlem satırından çalışmaya devam eder.

Örnek  if kullanımı :
#include<stdio.h>
int main( void )
{
 int s1; //girilen sayimiz//
 printf("Lütfen bir tam sayı giriniz: ");
 scanf("%d",&s1);
 if( s1 > 100 )
  printf("Girilen sayı 100'den büyüktür\n");
 return 0;
}

Örnek programımızda klavyeden, bir tam sayı girilmesi istenmektedir. Ve bizde girilen sayı, 100'den büyükse koşulunu vererek ekrana "Girilen sayı 100'den büyüktür" yazdırmaktayız.

if yapısının else ile genel biçimi :
if(koşul)
{
… işlem satırı; (ifade1)
… }
else
{
… işlem satırı; (ifade2)

}
else yapısı tek başına değil sadece if arkasından kullanılabilir. if ve else komut işlem satırlarının program içindeki genel biçimi yukarıdaki şekilde olmalıdır. if satırında yer alan koşulun sonucu doğru ise, program if satırındaki işlem satırının gereğini yerine getirir, else satırını dikkate almaz. Eğer if satırında yer alan koşul yanlış ise, program if satırını dikkate almaz, else satırındaki işlem satırı devreye girer. 

Örnek if else kullanımı :
#include<stdio.h>
int main( void )
{
 int s1;
 printf("Lütfen bir tam sayı giriniz: ");
 scanf("%d",&s1);
 if( s1 > 100 )
  printf("Girilen sayı 100'den büyüktür\n");
 else
  printf("Girilen sayı 100'den küçüktür\n");
 return 0;
}

Örnekte görüldüğü gibi, bir koşulun doğruluğunun if ile kontrolünü yaptırıp koşul karşılanıyorsa bir sonraki komut satırı devreye giriyor ve "Girilen sayı 100'den büyüktür" ekrana yazdırılıyor. Şayet verilen koşul yanlışsa, o zaman else satırı dikkate alınıyor ve ekrana "Girilen sayı 100'den küçüktür" yazdırılıyor. Ancak ikisini de yapması gibi bir durum söz konusu değildir.

Kod Blokları - İki veya daha fazla koşul kullanımında genel biçim : C Programlama Dilinde 2 veya daha fazla komut işlem satırını birleştirerek belirli bir koşula veya döngüye bağlı olarak çalıştırabiliriz.

if (ifade)
{
işlem satırı;
. . .
işlem satırı;
}
else
{
işlem satırı;
. . .
işlem satırı;
}

Yukarıdaki örneklerde, if komut işlem satırındaki koşul doğru sonuç veriyorsa, program aynı satırda yer alan tek bir işlem satırını devreye almaktaydı. Ancak iki veya daha fazla koşul kullanımında if komut işlem satırındaki koşul doğru sonuç verdiği zaman, program if yapısının hemen devamında gelen ({ }) işaretleri arasında bulunan komut işlem satırlarından oluşan kod bloğunun gereğini yerine getirir. Eğer koşul yanlış sonuç veriyorsa, program bu kez else yapısının hemen devamında bulunan ({ }) işaretleri arasındaki komut işlem satırlarından oluşan kod bloğunun gereğini yerine getirir. Yani if ve else deyimleri tek bir işlem satırının çalışmasını sağlayabilecekleri gibi aynı anda birden fazla işlem satırının da çalışmasını sağlayabilirler. Bir if veya else satırında koşul sağlandığında, koşula bağlı olarak devreye giren kod bloğu içinde yer alan işlem satırları sıra ile çalıştırılır. C'de, if ve else deyimlerinden sonra yer alan tek bir işlem satırı ya da kod bloğu kendisi ile bağlantılı olan diğer if ya da else satırında işlem satırı ya da kod bloğu kullanılması konusunda belirleyici değildir. 

Örnek İki veya daha fazla koşul kullanımı :
#include "stdio.h"

main()
{
  int s1;

  printf("Bir integer deger giriniz: ");
  scanf("%d", &s1);

  if(s1%2) {
    printf("Girilen sayi tek bir sayidir\n");
    printf("Sayinin 3 kati : %d", 3 * s1);
  }

  else {
    printf("Girilen sayi cift bir sayidir\n");
    printf("Sayinin 2 kati : %d", 2 * s1);
  }
}

Örnekte integer bir değer girmemiz isteniyor. Girilen değer s1 değişkenine atanıyor. if satırında s1 değişken değerinin tek sayı olup olmadığı konrolü yapılır. Tek bir sayı ise if koşuluna bağlı olarak tanımlanmış kod bloğu içindeki karakter dizisini ve değişken değerinin 3 katını hesaplayarak ekrana yazar. Sayı çift ise else satırına bağlı olarak tanımlanmış kod bloğu içindeki karakter dizisini ve değişken değerinin 2 katını hesaplayarak ekrana yazar.

if else Örnek Programlar

Üç tamsayıyı okuyan ve bu üç tamsayının en küçüğünü bulup ekrana yazdıran bir C Programı 
#include <stdio.h>;

int main () {

   int s1,s2,s3;
   int minValue;

   printf("Lutfen birinci tamsayiyi giriniz: ");
   scanf("%d", &s1);

   printf("Lutfen ikinci tamsayiyi giriniz: ");
   scanf("%d", &s2);

   printf("Lutfen ucuncu tamsayiyi giriniz: ");
   scanf("%d", &s3);

   if (s1<s2)
   minValue = s1;
   else
      minValue = s2;

   if (s3<minValue)
      minValue = s3;

   printf("En kucuk deger: %d \n", minValue);
   return(0);
}

Klavyeden girilen harfin sesli harf olup olmadığını kontrol eden bir C Programı
#include <stdio.h>
#include <conio.h>

void main(void)
{
      char H = ' ';

      printf("\n Sesli Harf Kontrolu........");
      printf("\n ===========================");

      printf("\n Bir Harf giriniz :");
      scanf("%c",&H);
      fflush(stdin);

      if( H == 'A' || H == 'E' || H == 'I' || H == 'O' || H == 'U' )
      printf("\n %c Bir SESLI Harftir.",H);

      else
      printf("\n %c Bir SESLI harf Degildir.",H);

      return(0);
}

Bir yılın artık yıl olup olmadığını bulan bir C Programı
#include <stdio.h>

main()
{
  int y1;

  printf("Bir yil girin: ");
  scanf("%d",&y1);

  if( y1 % 4 == 0 && y1 % 100 != 0 || y1 % 400 == 0 )
  printf("%d Artik Yil\n",y1);

  else
  printf("%d Artik Yil Degil\n",y1);

  return(0);
}