8- C PROGRAMLAMAYA GİRİŞ: KOŞULLU (CONDITIONAL) İFADELER

Koşullu (Conditional) İfadeler:

Bilgisayarda yapılan mantıksal işlemlerin hepsi kaba bir temele dayanır. Koşullar sağlandığı zaman [EVET(1)] ve koşullar sağlanmadığı zaman [HAYIR(0)] yapılacak işlemler bellidir. Koşulların kontrol edilmesini if operatörüyle sağlarız. Bu operatörün genel kullanım şekli;

if( koşul ) {

komut(lar)

}

Eğer if’in altında birden çok komut varsa, ayraç işareti (veya küme parantezi) koymamız gerekir. Şayet if’ten sonra, tek komut bulunuyorsa, ayıraç kullanma zorunluluğu yoktur.

#include <stdio.h>
int main()
{
    int sayi;

    printf("Bu program girilen sayinizin pozitif veya negatif oldugunu bulur\n\n");
    printf("Lutfen bir tam sayi giriniz > ");
    scanf("%d",&sayi);

    if(sayi==0)
        printf("\n\n Sonuc sifirdir\n\n");

    return 0;
}

Akış şemamızı takip ederek programımızı anlamaya çalışalım. int, printf ve scanf fonksiyonlarıyla değişkenimizi tanıttık ve giriş yaptık. İlk koşulumuzdan (sayi==0 ?) itibaren devam edelim.

if(sayi==0) Kullanıcının girdiği sayı sıfıra eşit mi? diye sorgulayan programımız, eğer cevap evet ise bir alttaki satırı izleyerek programı sonlandıracaktır. Dikkat ederseniz sayi=0 ifadesini değil, sayi==0 kullandık. = ifadesi sayı değişkenine atama yaparken, == ifadesi değişkenimizi sağdaki sonuç olan sıfıra eşitledi.

printf(“\n\n Sonuc sifirdir\n\n”);

if else yapısı:

Bir koşulun doğruluğunda yapacağı işlemleri belirtmek yeterli olmadığı durumunda, koşulun doğru olmadığı zaman yapılacak işlemlerin belirlenmesini isteriz. İşte bu gibi pozisyonlarda if else yapısı devreye girer. If else operatörünün kullanım şekli ise şöyledir.

if( koşul ) {
komut(lar)
}
else {
komut(lar)
}

Şimdi programımızı biraz daha geliştirelim.

#include <stdio.h>
int main( )
{ //main bloğunun başlangıcı
    int sayi;
    printf("Bu program girilen sayinizin pozitif veya negatif oldugunu bulur\n\n");
    printf("Lutfen bir tam sayi giriniz > ");
    scanf("%d",&sayi);
    if(sayi==0)
    { //if bloğunun başlangıcı
        printf("\n\n Sonuc sifirdir\n\n");
    } //if bloğunun sonu
    else
    { //else bloğunun başlangıcı
        if(sayi>0)
        { //else bloğu içerisindeki if bloğunun başlangıcı
            printf("\n\nGirdiginiz sayi %d olup bu sayi pozitif bir tam sayidir\n\n",sayi);
        } //else bloğu içerisindeki if bloğunun sonu
    } //else bloğunun sonu
    return 0;
} //main bloğunun sonu

İncelememize devam edelim. Akış şemamızda eğer cevabımız hayır ise, if bloğunu terk ederek, hayır cevabının okunu  takip eden program yeni bir blokla karşılaşır. ELSE bloğu… Else bloğunun içinde tekrar bir koşulla karşılaşan programımız bu sefer sayının sıfırdan büyük olup olmadığını sorgular. Eğer sayımız sıfırdan büyük ise alttaki satırı takip ederek programı sonlandırır.

Programımızın son hali:

#include <stdio.h>
int main()
{
    int sayi;

    printf("Bu program girilen sayinizin pozitif veya negatif oldugunu bulur\n\n");
    printf("Lutfen bir tam sayi giriniz > ");
    scanf("%d",&sayi);

    if(sayi==0)
    {
        printf("\n\n Sonuc sifirdir\n\n");
    }

    else
    {
        if(sayi>0)
        {
            printf("\n\nGirdiginiz sayi %d olup bu sayi pozitif bir tam sayidir\n\n",sayi);
        }
        else
        {
            printf("\n\nGirdiginiz sayi %d olup bu sayi negatif bir tam sayidir\n\n",sayi);
        }
    }

    return 0;
}

Else bloğu içerisinde sayı sıfırdan büyük mü sorusuna verilen cevap hayır ise, program if bloğunu terk ederek else bloğu içerisinde yeni bir else bloğu arar. Bu blok zaten bir sayının pozitif mi yoksa negatif mi olduğunun son mantığıdır. Ve bu blok içerisinde bulunan komutla işlemi sonlandırır. Burada dikkat edilmesi gereken husus küme parantezlerinin yerleridir. Hangi durumlar hangi bloğun içerisinde gerçekleşiyorsa küme parantezleri de o bloğu belirtmelidir.

İLİŞKİSEL OPERATÖRLER
< KÜÇÜKTÜR
> BÜYÜKTÜR
== EŞİTTİR
<= KÜÇÜK EŞİTTİR
>= BÜYÜK EŞİTTİR
!= EŞİT DEĞİLDİR
BİRLEŞİK OPERATÖRLER
&& AND VE
|| OR VEYA
! NOT DEĞİL
BİRLEŞİK OPERATÖRLERİN MANTIKSAL TABLOSU
p q p&&q p||q !p !q
0 0 0 0 1 1
0 1 0 1 1 0
1 0 0 1 0 1
1 1 1 1 0 0

 ÖRNEK:

#include<stdio.h>
/* "Kendisine verilen iki tam sayıyı, bölecek ve sonucu virgüllü sayı olarak gösterecek bir bölme işlemini programı.
*(Şayet bölen 0 olarak verilirse, bölme işlemi yapılmamalıdır.) "
*/
int main()
{
    int sayi1, sayi2;
    float sonuc;

    printf("Lutfen bolmek istediginiz bir tam sayi giriniz\t> ");
    scanf("%d",&sayi1);

    printf("\n\nGirdiginiz sayiyi kaca bolmek istersiniz?\t> ");
    scanf("%d",&sayi2);

    if(sayi2!=0){
        sonuc= (float) sayi1/sayi2;
        printf("\n\nSonuc\t\t: %0.2f",sonuc);
    }

    else{
        printf("\n\n\"HATA: Sayi \'0\'a bolunemez\"\n\n");
    }

    return 0;
}




ÖRNEK:

#include <stdio.h>
int main()
{
    int sayi;
    printf("Bu program Kullanici tarafindan girilen bir sayinin tek mi veya cift mi oldugunu bulur\n\n"
           "Lutfen bir sayi giriniz > ");
    scanf("%d",&sayi);

    if(sayi%2==0)    //sayi%2==0 sayının mod2 ye göre kalanı sıfır ise…
    {
        printf("\nGirmis oldugunuz sayi %d olup bu sayi cifttir\n",sayi);
    }
    else
    {
        printf("\nGirmis oldugunuz sayi %d olup bu sayi tektir\n",sayi);
    }

    return 0;
}




ÖRNEK:

int main()
{
    int girilen_sayi;

    printf("Lutfen bir sayi giriniz >");
    scanf("%d",&girilen_sayi);

    if(girilen_sayi>=10 && girilen_sayi<=50){
        printf("Girilen sayi \"%d\", 10 ile 50 arasindadir!\n\n",girilen_sayi);
    }

    else{
        if(girilen_sayi<10)
            printf("Girilen sayi \"%d\", 10'dan kucuktur!\n\n",girilen_sayi);
        else
            printf("Girilen sayi \"%d\", 50'den buyuktur!\n\n",girilen_sayi);
    }

    return 0;
}




ÖRNEK:

#include <stdio.h>//printf fonksiyonu için lazım
int main()
{
    int sayi;
    printf("Bu program Kullanici tarafindan girilen bir sayinin 100 den buyuk - kucuk, tek mi veya cift mi oldugunu bulur\n\n"
           "Lutfen bir sayi giriniz > ");
    scanf("%d",&sayi);
    if (sayi==0)
        printf("\nSifir cift ve 100 den kucuk sayidir.\n");
    else
    {
        if(sayi>0)
        {
            if(sayi==100)
                printf("\nGirilen sayi cift, pozitif ve 100 e esittir.\n");
            else
            {
                if(sayi>100)
                {
                    if(sayi%2==0)
                    {
                        printf("\nGirilen sayi cift, pozitif ve 100 den buyuktur.\n");
                    }
                    else
                        printf("\nGirilen sayi tek, pozitif ve 100 den buyuktur.\n");
                }
                else
                {
                    if(sayi%2==0)
                    {
                        printf("\nGirilen sayi cift, pozitif ve 100 den kucuktur.\n");
                    }
                    else
                        printf("\nGirilen sayi tek, pozitif ve 100 den kucuktur.\n");
                }
            }
        }
        else
        {
            if(sayi%2==0)
            {
                printf("\nGirilen sayi cift, negatif ve 100 den kuvuktur.\n");
            }
            else
                printf("\nGirilen sayi tek, negatif ve 100 den kuvuktur.\n");
        }
    }
    return 0;
}




ÖRNEK:

#include <stdio.h>
int main()
{
    int a, b, c;
    puts("Bu program kullanicinin girdigi uc sayiyi siralar");
//
//printf ile aynı işlevi görür satır başını otomatik yapar.
//
    printf("\n Lutfen 3 sayiyi aralarda birer bosluk birakacak sekilde giriniz >");
    scanf("%d %d %d", &a, &b, &c );
    if(a>b)
    {
        if(c>a)
        {
            printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", c, a, b);
        }
        else
        {
            if(c>b)
            {
                printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", a, c, b);
            }
            else
            {
                printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", a, b, c);
            }
        }
    }
    else
    {
        if(b>c)
        {
            if(a>c)
            {
                printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", b, a, c);
            }
            else
            {
                printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", b, c, a);
            }
        }
        else
        {
            printf("\n\n Sayilarin buyukten kucuge dogru siralamasi: %d %d %d\n", c, b, a);
        }
    }
    return 0;
}
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

%d blogcu bunu beğendi: