Koşul ve if-else Yapıları
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) ........
}
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;
}
if(koşul) {
... işlem satırı; (ifade1)
... }
else {
... işlem satırı; (ifade2)
...
}
Örnek if else kullanımı :
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.
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.
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ı
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 <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 <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
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
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
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
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 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
int Sayi;
printf("Sayiyi Giriniz: ");
scanf("%d", &Sayi);
if (Sayi % 2 == 0) {
return "Sayi Cifttir";
}
else return "Sayi Tektir";
}
Örnek:
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:
Örnek:
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:
-
abdulcabbar
hocam yazdığınız kodları bide evde tekrar yazın bakam senin yüzünden tekrar yazıp doğrusunu yazıyorum boş yere 2 kere uğraştırıyosun insanı bide ders niteliğinde koymuşsun hata olarak koyup debug yaptırtma düşüncesi ile koydu isen güzel ama yinede sen bilirsin10 Ekim 2020 02:22:17, Cumartesi