- Puan
- 28
- Yaş
- 118
KARAR YAPILARI (if, else, else if, switch-case)
Önceki bölümlerde değişkenleri ve operatörleri öğrendik.
Ancak şimdiye kadar yazdığımız programların büyük bir eksikliği vardı.
Program her zaman aynı şeyi yapıyordu.
Örneğin:
printf("Merhaba");
Bu kod çalıştığında sonuç her zaman aynıdır.
Ama gerçek programlar böyle çalışmaz.
Bir banka uygulaması, oyun, web sunucusu veya işletim sistemi sürekli karar verir.
Örneğin:
if
else
else if
switch-case
yapılarıdır.
KARAR YAPISI NEDİR?
Programın belirli bir koşula göre farklı davranmasını sağlar.
Örneğin:
Eğer yağmur yağıyorsa şemsiye al.
Yağmıyorsa alma.
Programlama mantığında:
Eğer koşul doğruysa A
Değilse B
şeklindedir.
IF YAPISI
En temel karar mekanizmasıdır.
Yapısı:
if(kosul)
{
çalışacak kodlar
}
Örnek:
int yas = 20;
if(yas >= 18)
{
printf("Yetiskinsiniz");
}
Sonuç:
Yetiskinsiniz
Çünkü 20, 18'den büyüktür.
KOŞUL YANLIŞSA NE OLUR?
if(3 > 10)
{
printf("Calis");
}
Bilgisayar 3 > 10 kontrolünü yapar.
Sonuç FALSE olur.
Bu yüzden ekrana hiçbir şey yazılmaz.
ELSE YAPISI
Koşul yanlışsa çalışır.
Örnek:
int yas = 15;
if(yas >= 18)
{
printf("Yetiskin");
}
else
{
printf("Cocuk");
}
Çıktı:
Cocuk
ELSE IF YAPISI
Birden fazla ihtimal varsa kullanılır.
Örnek:
int not = 75;
if(not >= 90)
{
printf("AA");
}
else if(not >= 80)
{
printf("BA");
}
else if(not >= 70)
{
printf("BB");
}
else
{
printf("FF");
}
Sonuç:
BB
Çünkü ilk iki koşul yanlış, üçüncü koşul doğrudur.
MANTIKSAL OPERATÖRLERLE KULLANIM
AND (&&)
if(yas >= 18 && yas <= 30)
{
printf("Basvuru Kabul");
}
Burada iki koşulun da doğru olması gerekir.
OR (||)
if(admin == 1 || moderator == 1)
{
printf("Yetkili");
}
Koşullardan birinin doğru olması yeterlidir.
NOT (!)
if(!giris)
{
printf("Giris Yap");
}
Anlamı:
Giriş yapılmamışsa.
İÇ İÇE IF
int yas = 25;
int ehliyet = 1;
if(yas >= 18)
{
if(ehliyet == 1)
{
printf("Arac Kullanabilir");
}
}
Burada önce yaş kontrol edilir.
Yaş uygunsa ehliyet kontrol edilir.
SWITCH CASE
Bir değişkenin birçok farklı değeri varsa kullanılır.
Örnek:
int gun = 2;
switch(gun)
{
case 1:
printf("Pazartesi");
break;
case 2:<br> printf("Sali");<br> break;<br><br>case 3:<br> printf("Carsamba");<br> break;<br>
}
Sonuç:
Sali
BREAK NEDEN KULLANILIR?
switch(1)
{
case 1:
printf("A");
case 2:<br> printf("B");<br><br>case 3:<br> printf("C");<br>
}
Çıktı:
ABC
Çünkü break kullanılmadı.
Doğru kullanım:
switch(1)
{
case 1:
printf("A");
break;
case 2:<br> printf("B");<br> break;<br>
}
Bu durumda sadece A yazdırılır.
DEFAULT
switch(secim)
{
case 1:
printf("Menu 1");
break;
case 2:<br> printf("Menu 2");<br> break;<br><br>default:<br> printf("Gecersiz Secim");<br>
}
Hiçbir durum eşleşmezse default çalışır.
TERNARY OPERATÖR
Normal kullanım:
if(yas >= 18)
{
printf("Yetiskin");
}
else
{
printf("Cocuk");
}
Kısa kullanım:
yas >= 18 ? printf("Yetiskin") : printf("Cocuk");
YAYGIN HATALAR
Hata:
if(x = 5)
Bu karşılaştırma değildir.
Atamadır.
Doğrusu:
if(x == 5)
Bir diğer hata:
if(x > 10);
{
printf("Calisti");
}
Noktalı virgül if bloğunu bitirir.
Bu yüzden kod her zaman çalışır.
MİNİ PROJE - KULLANICI GİRİŞ SİSTEMİ
#include <stdio.h>
int main()
{
int sifre;
printf("Sifre Gir: ");<br>scanf("%d",&sifre);<br><br>if(sifre == 1234)<br>{<br> printf("Giris Basarili");<br>}<br>else<br>{<br> printf("Hatali Sifre");<br>}<br><br>return 0;<br>
}
BÖLÜM ÖZETİ
Bu bölümde:
Bir sonraki bölümde döngüler (for, while, do-while), break, continue ve iç içe döngüleri inceleyeceğiz.
Önceki bölümlerde değişkenleri ve operatörleri öğrendik.
Ancak şimdiye kadar yazdığımız programların büyük bir eksikliği vardı.
Program her zaman aynı şeyi yapıyordu.
Örneğin:
printf("Merhaba");
Bu kod çalıştığında sonuç her zaman aynıdır.
Ama gerçek programlar böyle çalışmaz.
Bir banka uygulaması, oyun, web sunucusu veya işletim sistemi sürekli karar verir.
Örneğin:
- Şifre doğru mu?
- Kullanıcı admin mi?
- Yaş 18'den büyük mü?
- Dosya var mı?
- İnternet bağlantısı var mı?
if
else
else if
switch-case
yapılarıdır.
KARAR YAPISI NEDİR?
Programın belirli bir koşula göre farklı davranmasını sağlar.
Örneğin:
Eğer yağmur yağıyorsa şemsiye al.
Yağmıyorsa alma.
Programlama mantığında:
Eğer koşul doğruysa A
Değilse B
şeklindedir.
IF YAPISI
En temel karar mekanizmasıdır.
Yapısı:
if(kosul)
{
çalışacak kodlar
}
Örnek:
int yas = 20;
if(yas >= 18)
{
printf("Yetiskinsiniz");
}
Sonuç:
Yetiskinsiniz
Çünkü 20, 18'den büyüktür.
KOŞUL YANLIŞSA NE OLUR?
if(3 > 10)
{
printf("Calis");
}
Bilgisayar 3 > 10 kontrolünü yapar.
Sonuç FALSE olur.
Bu yüzden ekrana hiçbir şey yazılmaz.
ELSE YAPISI
Koşul yanlışsa çalışır.
Örnek:
int yas = 15;
if(yas >= 18)
{
printf("Yetiskin");
}
else
{
printf("Cocuk");
}
Çıktı:
Cocuk
ELSE IF YAPISI
Birden fazla ihtimal varsa kullanılır.
Örnek:
int not = 75;
if(not >= 90)
{
printf("AA");
}
else if(not >= 80)
{
printf("BA");
}
else if(not >= 70)
{
printf("BB");
}
else
{
printf("FF");
}
Sonuç:
BB
Çünkü ilk iki koşul yanlış, üçüncü koşul doğrudur.
MANTIKSAL OPERATÖRLERLE KULLANIM
AND (&&)
if(yas >= 18 && yas <= 30)
{
printf("Basvuru Kabul");
}
Burada iki koşulun da doğru olması gerekir.
OR (||)
if(admin == 1 || moderator == 1)
{
printf("Yetkili");
}
Koşullardan birinin doğru olması yeterlidir.
NOT (!)
if(!giris)
{
printf("Giris Yap");
}
Anlamı:
Giriş yapılmamışsa.
İÇ İÇE IF
int yas = 25;
int ehliyet = 1;
if(yas >= 18)
{
if(ehliyet == 1)
{
printf("Arac Kullanabilir");
}
}
Burada önce yaş kontrol edilir.
Yaş uygunsa ehliyet kontrol edilir.
SWITCH CASE
Bir değişkenin birçok farklı değeri varsa kullanılır.
Örnek:
int gun = 2;
switch(gun)
{
case 1:
printf("Pazartesi");
break;
case 2:<br> printf("Sali");<br> break;<br><br>case 3:<br> printf("Carsamba");<br> break;<br>
}
Sonuç:
Sali
BREAK NEDEN KULLANILIR?
switch(1)
{
case 1:
printf("A");
case 2:<br> printf("B");<br><br>case 3:<br> printf("C");<br>
}
Çıktı:
ABC
Çünkü break kullanılmadı.
Doğru kullanım:
switch(1)
{
case 1:
printf("A");
break;
case 2:<br> printf("B");<br> break;<br>
}
Bu durumda sadece A yazdırılır.
DEFAULT
switch(secim)
{
case 1:
printf("Menu 1");
break;
case 2:<br> printf("Menu 2");<br> break;<br><br>default:<br> printf("Gecersiz Secim");<br>
}
Hiçbir durum eşleşmezse default çalışır.
TERNARY OPERATÖR
Normal kullanım:
if(yas >= 18)
{
printf("Yetiskin");
}
else
{
printf("Cocuk");
}
Kısa kullanım:
yas >= 18 ? printf("Yetiskin") : printf("Cocuk");
YAYGIN HATALAR
Hata:
if(x = 5)
Bu karşılaştırma değildir.
Atamadır.
Doğrusu:
if(x == 5)
Bir diğer hata:
if(x > 10);
{
printf("Calisti");
}
Noktalı virgül if bloğunu bitirir.
Bu yüzden kod her zaman çalışır.
MİNİ PROJE - KULLANICI GİRİŞ SİSTEMİ
#include <stdio.h>
int main()
{
int sifre;
printf("Sifre Gir: ");<br>scanf("%d",&sifre);<br><br>if(sifre == 1234)<br>{<br> printf("Giris Basarili");<br>}<br>else<br>{<br> printf("Hatali Sifre");<br>}<br><br>return 0;<br>
}
BÖLÜM ÖZETİ
Bu bölümde:
- if yapısını
- else kullanımını
- else if zincirlerini
- mantıksal operatörleri
- iç içe if yapılarını
- switch-case kullanımını
- break ve default kavramlarını
- ternary operatörünü
- yaygın hataları
Bir sonraki bölümde döngüler (for, while, do-while), break, continue ve iç içe döngüleri inceleyeceğiz.