Konular

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");
}

 

Kaynaklar:

Yorumunuzu Ekleyin

C Programlama Dilinde Değişkenler

Değişkenler bir programlama dilinin en önemli bileşenlerindendir. En basit bir aritmetik işlemin bile kullanıcının girdiği değerleri saklamak için çeşitlik bellek alanlarına ihtiyacı vardır. İşte değişkenler bu bellek adreslerine verilen isimlerdir.

11,298 Okunma 1 Yorum 12/05/2015 00:26:24 22/05/2015 19:41:38

#define Ve #include Önişlemci Tanımlamaları

Hemen bütün C derleyicileri, özel önişlemci emirlerini tanıyan bir önişlemciyi yapılarında bulundururlar.

10,216 Okunma Henüz yorum yapılmamış 22/05/2015 19:27:09 29/05/2015 14:10:10

C Programlama printf() Fonksiyonu

Standart C kütüphanesinin bir parçası olan printf() C Programlama Dili'nin genel amaçlı çıktı alma fonksiyonudur.

9,046 Okunma Henüz yorum yapılmamış 22/05/2015 18:53:57 03/06/2015 15:57:27

DEV C++ Kurulumu

C çalışmak için bir editöre ve Derleyiciye ihtiyacınız var. Belkide en kolay çözüm DEV C++ kullanmak. Çünkü ücretsiz ve GNU lisansı ile dağıılmakta ve Mingw/GCC derleyiciside içerisinde bulunmaktadır.

8,972 Okunma Henüz yorum yapılmamış 12/05/2015 14:32:18 12/05/2015 14:33:21

C Diline Giriş

Blok Yapısı, Açıklamalar, Boşluklar, Kapsam

8,353 Okunma Henüz yorum yapılmamış 15/05/2015 19:07:26 29/05/2015 14:03:24

C Fonksiyon Yapısı

7,987 Okunma Henüz yorum yapılmamış 17/06/2015 18:31:11 17/06/2015 18:46:12

Tip Dönüşümleri

7,689 Okunma Henüz yorum yapılmamış 22/05/2015 17:39:09 29/05/2015 17:50:06

Operatörler

C programlamada toplama, çıkarma, çarpma, mod alma operatörleri

7,546 Okunma Henüz yorum yapılmamış 29/05/2015 16:49:24 29/05/2015 16:49:35

Yükleniyor...