İçindekiler

Koşul ve if-else Yapıları
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ürn");
    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ürn");
    }
    else {
           printf("Girilen sayı 100'den küçüktürn");
    }
    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 sayidirn");
    printf("Sayinin 3 kati : %d", 3 * s1);
  }

  else {
    printf("Girilen sayi cift bir sayidirn");
    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>
#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);
}
 
 

Örnek

void mantiksal1(){
   
   int a=15, b=-10, c=0;
   
   float d=15.5, e=0.2, f=0;
   
   printf("n a:%d b:%d c:%d d:%d !!e:%d", !a, !b, !c, !d, !!!!e);
   
   printf("n a>b:%d b>=c:%d a>b>c:%d a>c<=d:%d !a>=e:%d", a>b, b>=c, a>b>c, a>c<=d, !a>=e);
   
   printf("n a=b mi:%d a=b degilmi:%d d>c mi:%d a&&b:%d a&&c:%d c&&f:%d a||bmi:%d", a==b, a!=b, d>c, a&&b, a&&c, f&&c, a||b);
   
}

 

Örnek

void eger1() {

    int yas;
    char mer[7] = {'m', 'e', 'r', 'h', 'a', 'b', 'a'};

    printf("yasinizi giriniz");
    scanf("%d", &yas);

    if (yas > 65) {

        printf("n %s dede", mer);

    } else if (yas < 50) {
        printf("n %s amca", mer);
    }
   
}

 

Örnek

void maas1() {

    int yas;
    float boy;
    char eb[1];

    printf("n yasinizi giriniz: ");
    scanf("%d", &yas);

    printf("n boyunuzu giriniz: ");
    scanf("%f", &boy);

    printf("n Medeni Durumunuzu Giriniz: ");
    scanf("%s", eb);

    //printf("n %d %f, %s %d", yas, boy, eb, strcmp(eb, "e"));


    if (yas > 50 && boy > 70 && (strcmp(eb, "e") == 0 || strcmp(eb, "E") == 0)) {

        printf("n maasiniz 1,830.00TL");

    } else if (yas > 50 && boy > 70 && (strcmp(eb, "b") == 0 || strcmp(eb, "B") == 0)) {

        printf("n maasiniz 1,500.00TL");

    } else if ((yas > 30 && yas < 40) && boy > 80 && (strcmp(eb, "b") == 0 || strcmp(eb, "B") == 0)) {

        printf("n maasiniz 2,500.00TL");

    } else if ((yas > 25 && yas < 35) && boy > 80 && (strcmp(eb, "e") == 0 || strcmp(eb, "E") == 0)) {

        printf("n maasiniz 2,300.00TL");

    } else {

        printf("Kriterlerimize uymadigindan size güle güle");

    }
}

 

Örnek

void IMMO(int sayici) {

    int sayi;
    printf("n Bir Anahtar Kodu Giriniz");
    scanf("%d", &sayi);

    if (sayici > 3) {
        printf("n Sistemi Kilitlenmistir");
        return;

    } else if (sayi > 800 && sayi < 900) {

        printf("n Sistem Devrede");

    } else {

        printf("n %d kere Hatali Kod Girdiniz Sistem Devre Disi Birakildi", sayici);

        sayici++;

        IMMO(sayici);

    }
}

 

Örnek: Girilen 3 sayıdan en büyüğünü bulan C fonksiyonu

int enbuyuksayi() {

    int Sayi1, Sayi2, Sayi3;
    int Enbuyukleri;


    printf("n Birinci Sayiyi Giriniz: ");
    scanf("%d", &Sayi1);

    printf("n Ikinci Sayiyi Giriniz: ");
    scanf("%d", &Sayi2);

    printf("n Ucuncu Sayiyi Giriniz: ");
    scanf("%d", &Sayi3);

    if (Sayi1 > Sayi2) {
        Enbuyukleri = Sayi1;
    }

    if (Enbuyukleri < Sayi3) {
        Enbuyukleri = Sayi3;
    }

    return Enbuyukleri;
}

 

Örnek: Girilen Sayının Tek Mi Çift Mi Olduğunu bulan program

const char* tekcift() {

    int Sayi;

    printf("Sayiyi Giriniz: ");
    scanf("%d", &Sayi);


    if (Sayi % 2 == 0) {
        return "Sayi Cifttir";
    }
    else return "Sayi Tektir";
}

 

Örnek:

 

int main(int argc, char** argv) {

    char ch;
    char str[100];
    printf("Enter any character n");
    scanf("%c", &ch);
   
    printf("Entered character is %c n", ch);
   
    printf("Enter any string(upto 100 character) n");
    scanf("%s", &str);

    printf("Entered string is %s n", str);
   
    if(ch=='e'){
        printf("evet");
    }
   
    if(strcmp(str, "test")==0){
        printf("test");
    }

    return (EXIT_SUCCESS);
}

 

Kısa If

if (ifade1)
     değişken = ifade_2;
else
     değişken = ifade_3;


şeklindeki bir if deyimi, koşullu işleç kullanılarak

degisken = ifade1 ? ifade2 : ifade3

şeklinde basitçe yazılabilir. Genelde, C dilindeki tek üç-işlenenli (üçlü) işleç olan “?:” işleci, önce ifade_1’i hesaplar ve eğer ifade_1 doğru ise ifade_2’nin değerini, aksi takdirde ifade_3’ün değerini verir. Son iki ifadeden sadece biri hesaplanır.

Sonucun tipi,  ifade_2 ve ifade_3 birlikte dikkate alınarak belirlenir. “?:” işlecinin sağdan sola doğru birleşme özelliği vardır.

“?:” işlecinin işleri nasıl kolaylaştırdığına bir örnek:
 

printf(yas>65 ? "Yasli birisiniz.n" : "Henuz yasli degilsiniz.n");

 

Örnek:

void kisaif() {

    int Deger;
    char* Sonuc;

    printf("n Bir Sayi Giriniz: ");
    scanf("%d",&Deger);
   
    Sonuc=(Deger%2==0)?"Sayi Cift":"Sayi Tek";

    /* Uzun Yazım
    if (Deger % 2 == 0) {
        Sonuc = "Sayi Cift";
    } else {
        Sonuc = "Sayi Tek";

    }*/

   
    //printf(Sonuc, "n");
    printf (Deger%2==0?"Sayi Cift":"Sayi Tek");
}