C# If, Else If ve Else Kullanımı
C# programlama dilinde koşullu ifadeler, programın belirli şartlara göre farklı işlemler gerçekleştirmesini sağlar. Bir programın yalnızca sırayla komutları çalıştırması yerine, karşılaştığı durumlara göre karar vermesi için if, else if ve else yapıları kullanılır.
Örneğin bir öğrencinin sınav notuna göre başarılı olup olmadığını belirlemek, girilen sayının pozitif veya negatif olduğunu kontrol etmek ya da kullanıcı adı ve şifre doğrulaması yapmak için koşullu ifadelerden yararlanılır.
1. C# KOŞULLU İFADELER NEDİR?
Koşullu ifadeler, bir şartın doğru veya yanlış olmasına göre programın çalışma akışını değiştiren karar yapılarıdır.
C# dilinde koşullu ifadeler genellikle karşılaştırma ve mantıksal operatörlerle birlikte kullanılır. Koşulun sonucu true veya false olmalıdır.
En sık kullanılan karar yapıları şunlardır:
- if: Belirtilen koşul doğruysa işlem gerçekleştirir.
- else: if koşulu yanlışsa alternatif işlemi gerçekleştirir.
- else if: Birden fazla koşulun sırayla kontrol edilmesini sağlar.
- İç içe if: Bir koşulun içerisinde başka koşulların kontrol edilmesini sağlar.
2. C# IF KULLANIMI
if ifadesi, bir koşulun doğru olup olmadığını kontrol eder. Koşul doğruysa süslü parantezler içerisindeki komutlar çalıştırılır. Koşul yanlışsa bu komutlar atlanır.
IF YAPISININ SÖZ DİZİMİ
if (kosul)
{
// Koşul doğruysa çalışacak komutlar
}
Örnek: Bir kişinin 18 yaşından büyük veya 18 yaşında olup olmadığını kontrol edelim.
int yas = 20;
if (yas >= 18)
{
Console.WriteLine("Reşitsiniz.");
}
Bu örnekte yas >= 18 koşulu kontrol edilir. Yaş değişkeninin değeri 20 olduğu için koşul doğrudur ve ekrana "Reşitsiniz." mesajı yazdırılır.
Yaş değişkeninin değeri 15 olsaydı koşul yanlış olacağından ekrana herhangi bir mesaj yazdırılmayacaktı.
3. C# IF - ELSE KULLANIMI
Bazı durumlarda koşul doğru olduğunda bir işlem, yanlış olduğunda ise farklı bir işlem yapılması gerekir. Bu durumda if-else yapısı kullanılır.
IF - ELSE YAPISININ SÖZ DİZİMİ
if (kosul)
{
// Koşul doğruysa çalışır
}
else
{
// Koşul yanlışsa çalışır
}
Örnek: Öğrencinin notuna göre başarılı olup olmadığını belirleyelim.
int not = 75;
if (not >= 50)
{
Console.WriteLine("Başarılı");
}
else
{
Console.WriteLine("Başarısız");
}
Not değişkeninin değeri 75 olduğundan koşul doğrudur ve ekrana "Başarılı" yazdırılır.
Not 50'nin altında olsaydı if bloğu atlanacak ve else bloğundaki "Başarısız" mesajı görüntülenecekti.
Önemli: if-else yapısında iki bloktan yalnızca biri çalışır.
4. C# ELSE IF KULLANIMI
Birden fazla koşulun kontrol edilmesi gereken durumlarda else if kullanılır. Koşullar yukarıdan aşağıya doğru değerlendirilir. İlk doğru koşulun bulunduğu blok çalıştırılır ve diğer koşullar kontrol edilmez.
ELSE IF YAPISININ SÖZ DİZİMİ
if (kosul1)
{
// Birinci koşul doğruysa
}
else if (kosul2)
{
// İkinci koşul doğruysa
}
else if (kosul3)
{
// Üçüncü koşul doğruysa
}
else
{
// Hiçbir koşul doğru değilse
}
Örnek: Öğrencinin notuna göre başarı durumunu belirleyelim.
int not = 85;
if (not >= 85)
{
Console.WriteLine("Pekiyi");
}
else if (not >= 70)
{
Console.WriteLine("İyi");
}
else if (not >= 50)
{
Console.WriteLine("Orta");
}
else
{
Console.WriteLine("Başarısız");
}
Not değişkeninin değeri 85 olduğundan ilk koşul sağlanır ve ekrana "Pekiyi" yazdırılır.
Örneğin not 75 olsaydı ilk koşul yanlış, ikinci koşul doğru olacağından ekrana "İyi" yazdırılacaktı.
Dikkat: else if yapısında koşulların sıralanması önemlidir. Daha yüksek not aralıkları önce kontrol edilmelidir. Ayrıca bu örnekte notun 0 ile 100 arasında olduğu varsayılmıştır.
5. KARŞILAŞTIRMA VE MANTIKSAL OPERATÖRLERİN KULLANIMI
Koşullu ifadelerde daha önce öğrendiğimiz karşılaştırma ve mantıksal operatörlerden yararlanılır.
| Operatör |
Açıklama |
Örnek |
| == |
Eşittir |
sayi == 10 |
| != |
Eşit değildir |
sayi != 10 |
| > |
Büyüktür |
sayi > 10 |
| < |
Küçüktür |
sayi < 10 |
| >= |
Büyük veya eşittir |
sayi >= 10 |
| <= |
Küçük veya eşittir |
sayi <= 10 |
| && |
VE |
yas >= 18 && yas <= 65 |
| || |
VEYA |
sayi == 5 || sayi == 10 |
| ! |
DEĞİL |
!aktif |
MANTIKSAL VE OPERATÖRÜ İLE KOŞUL KONTROLÜ
Birden fazla koşulun aynı anda doğru olması gerektiğinde && operatörü kullanılır.
int yas = 25;
bool ehliyet = true;
if (yas >= 18 && ehliyet == true)
{
Console.WriteLine("Araç kullanma şartları sağlandı.");
}
else
{
Console.WriteLine("Şartlar sağlanmadı.");
}
Bu örnekte yaş ve ehliyet bilgisi birlikte kontrol edilir. Her iki koşul doğru olduğundan ilk mesaj görüntülenir. Gerçek araç kullanma uygunluğu için başka şartların da bulunduğu unutulmamalıdır.
MANTIKSAL VEYA OPERATÖRÜ İLE KOŞUL KONTROLÜ
Koşullardan en az birinin doğru olması yeterliyse || operatörü kullanılır.
int gun = 7;
if (gun == 6 || gun == 7)
{
Console.WriteLine("Hafta sonu");
}
else
{
Console.WriteLine("Hafta içi");
}
Gün değişkeninin değeri 6 veya 7 olduğunda koşul doğru kabul edilir.
6. C# İÇ İÇE IF KULLANIMI
Bir koşulun doğru olması durumunda başka bir koşulun da kontrol edilmesi gerekiyorsa iç içe if yapısı kullanılabilir.
int yas = 20;
bool uyeMi = true;
if (yas >= 18)
{
if (uyeMi == true)
{
Console.WriteLine("İşlem yapabilirsiniz.");
}
else
{
Console.WriteLine("Önce üye olmalısınız.");
}
}
else
{
Console.WriteLine("Yaşınız uygun değil.");
}
Bu örnekte önce yaş kontrol edilir. Yaş koşulu sağlanırsa üyelik durumu değerlendirilir. Böylece bir kararın sonucuna bağlı olarak başka bir karar verilebilir.
7. UYGULAMA 1: SAYININ POZİTİF, NEGATİF VEYA SIFIR OLDUĞUNU BULMA
Kullanıcıdan bir tam sayı alarak sayının pozitif, negatif veya sıfır olduğunu belirleyen Console uygulaması hazırlayalım.
Console.Write("Bir tam sayı giriniz: ");
int sayi = Convert.ToInt32(Console.ReadLine());
if (sayi > 0)
{
Console.WriteLine("Sayı pozitiftir.");
}
else if (sayi < 0)
{
Console.WriteLine("Sayı negatiftir.");
}
else
{
Console.WriteLine("Sayı sıfırdır.");
}
Açıklama: Program önce sayının sıfırdan büyük olup olmadığını kontrol eder. Koşul yanlışsa sayının sıfırdan küçük olup olmadığına bakılır. Her iki koşul da yanlışsa sayı sıfırdır.
Örnek sonuç: Kullanıcı -8 girerse ekrana "Sayı negatiftir." yazdırılır.
8. UYGULAMA 2: ÜÇ SAYIDAN EN BÜYÜĞÜNÜ BULMA
Kullanıcıdan üç sayı alarak en büyük olanı belirleyen bir uygulama geliştirelim.
Console.Write("Birinci sayı: ");
int sayi1 = Convert.ToInt32(Console.ReadLine());
Console.Write("İkinci sayı: ");
int sayi2 = Convert.ToInt32(Console.ReadLine());
Console.Write("Üçüncü sayı: ");
int sayi3 = Convert.ToInt32(Console.ReadLine());
if (sayi1 >= sayi2 && sayi1 >= sayi3)
{
Console.WriteLine("En büyük sayı: " + sayi1);
}
else if (sayi2 >= sayi1 && sayi2 >= sayi3)
{
Console.WriteLine("En büyük sayı: " + sayi2);
}
else
{
Console.WriteLine("En büyük sayı: " + sayi3);
}
Açıklama: Her sayı diğer iki sayıyla karşılaştırılır. Mantıksal VE operatörü sayesinde bir sayının en büyük olması için diğer iki sayıdan da büyük veya onlara eşit olması gerektiği kontrol edilir.
Örnek: 15, 42 ve 28 sayıları girildiğinde sonuç 42 olacaktır.
9. UYGULAMA 3: ÖĞRENCİNİN NOTUNA GÖRE HARF NOTU HESAPLAMA
Öğrencinin sınav notunu alarak örnek bir harf notu sistemi üzerinden değerlendirme yapalım.
| Not Aralığı |
Harf Notu |
| 90 - 100 |
AA |
| 80 - 89 |
BA |
| 70 - 79 |
BB |
| 60 - 69 |
CB |
| 50 - 59 |
CC |
| 0 - 49 |
FF |
Console.Write("Sınav notunuzu giriniz: ");
int not = Convert.ToInt32(Console.ReadLine());
if (not < 0 || not > 100)
{
Console.WriteLine("Geçersiz not girdiniz.");
}
else if (not >= 90)
{
Console.WriteLine("Harf notunuz: AA");
}
else if (not >= 80)
{
Console.WriteLine("Harf notunuz: BA");
}
else if (not >= 70)
{
Console.WriteLine("Harf notunuz: BB");
}
else if (not >= 60)
{
Console.WriteLine("Harf notunuz: CB");
}
else if (not >= 50)
{
Console.WriteLine("Harf notunuz: CC");
}
else
{
Console.WriteLine("Harf notunuz: FF");
}
Açıklama: Program öncelikle girilen notun geçerli aralıkta olup olmadığını kontrol eder. Daha sonra notu yukarıdan aşağıya doğru değerlendirerek uygun harf notunu ekrana yazdırır.
Bu uygulamada kullanılan harf notu aralıkları eğitim amacıyla belirlenmiştir.
10. UYGULAMA 4: KULLANICI ADI VE ŞİFRE KONTROLÜ
Kullanıcıdan kullanıcı adı ve şifre alarak bilgilerin doğru olup olmadığını kontrol eden basit bir giriş uygulaması hazırlayalım.
string kullaniciAdi = "admin";
string sifre = "12345";
Console.Write("Kullanıcı adınız: ");
string girilenKullanici = Console.ReadLine();
Console.Write("Şifreniz: ");
string girilenSifre = Console.ReadLine();
if (girilenKullanici == kullaniciAdi &&
girilenSifre == sifre)
{
Console.WriteLine("Giriş başarılı.");
}
else
{
Console.WriteLine("Kullanıcı adı veya şifre hatalı.");
}
Açıklama: Kullanıcı adı ve şifre bilgilerinin ikisi de doğru olduğunda giriş başarılı kabul edilir. Bilgilerden biri yanlışsa hata mesajı görüntülenir.
Önemli: Bu uygulama yalnızca koşullu ifadeleri öğretmek amacıyla hazırlanmıştır. Gerçek uygulamalarda şifreler kaynak kod içerisinde açık şekilde tutulmamalı ve güvenli kimlik doğrulama yöntemleri kullanılmalıdır.
11. UYGULAMA 5: BASİT HESAP MAKİNESİ
Kullanıcıdan iki sayı ve yapılacak işlem türünü alarak hesaplama gerçekleştiren bir Console uygulaması geliştirelim.
Bu örnekte kullanıcı işlem seçimini 1, 2, 3 veya 4 olarak yapacaktır.
Console.Write("Birinci sayı: ");
double sayi1 = Convert.ToDouble(Console.ReadLine());
Console.Write("İkinci sayı: ");
double sayi2 = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("1 - Toplama");
Console.WriteLine("2 - Çıkarma");
Console.WriteLine("3 - Çarpma");
Console.WriteLine("4 - Bölme");
Console.Write("İşlem seçiniz: ");
int secim = Convert.ToInt32(Console.ReadLine());
if (secim == 1)
{
Console.WriteLine("Sonuç: " + (sayi1 + sayi2));
}
else if (secim == 2)
{
Console.WriteLine("Sonuç: " + (sayi1 - sayi2));
}
else if (secim == 3)
{
Console.WriteLine("Sonuç: " + (sayi1 * sayi2));
}
else if (secim == 4)
{
if (sayi2 != 0)
{
Console.WriteLine("Sonuç: " + (sayi1 / sayi2));
}
else
{
Console.WriteLine("Sıfıra bölme yapılamaz.");
}
}
else
{
Console.WriteLine("Geçersiz işlem seçimi.");
}
Açıklama: Program kullanıcının seçtiği işlem numarasına göre ilgili hesaplamayı gerçekleştirir. Bölme işleminde ikinci sayının sıfır olup olmadığı ayrıca kontrol edilir.
Bu uygulama, else if ve iç içe if yapılarının birlikte kullanılmasına örnektir.
12. IF - ELSE KULLANIRKEN DİKKAT EDİLMESİ GEREKENLER
Koşullu ifadeler kullanılırken yapılan bazı hatalar programın beklenenden farklı çalışmasına neden olabilir.
- Karşılaştırma yapmak için ==, değer atamak için = operatörü kullanılmalıdır.
- Koşul ifadesinin sonucu bool türünde olmalıdır.
- else if koşulları doğru sırayla yazılmalıdır.
- Birden fazla koşulda mantıksal operatörler dikkatli kullanılmalıdır.
- Kodların okunabilir olması için süslü parantez kullanımı tercih edilmelidir.
- Kullanıcıdan alınan sayısal veriler kontrol edilmelidir.
YANLIŞ VE DOĞRU KARŞILAŞTIRMA ÖRNEĞİ
Yanlış kullanım:
int sayi = 10;
if (sayi = 10)
{
Console.WriteLine("Sayı 10");
}
Bu kod derleme hatasına neden olur. Çünkü = operatörü değer atamak için kullanılır ve burada if ifadesinin beklediği bool türünde bir sonuç üretmez.
Doğru kullanım:
int sayi = 10;
if (sayi == 10)
{
Console.WriteLine("Sayı 10");
}
Burada == operatörü iki değerin eşit olup olmadığını kontrol eder.
13. IF - ELSE VE SWITCH CASE ARASINDAKİ FARK
C# programlama dilinde birden fazla koşulu kontrol etmek için if-else yapısının yanında switch-case yapısı da kullanılabilir.
if-else yapısı özellikle büyüklük, küçüklük, aralık ve birden fazla mantıksal koşulun kontrol edilmesinde kullanışlıdır.
switch-case ise bir değişkenin belirli değerlere göre farklı işlemler gerçekleştirmesi gereken durumlarda daha okunabilir bir alternatif olabilir.
Örneğin bir menüde 1, 2, 3 ve 4 seçeneklerinden birini kontrol etmek için switch-case kullanılabilir.
14. SONUÇ
C# programlama dilinde if, else if ve else yapıları, programların belirli koşullara göre karar vermesini sağlar. Bu yapılar sayesinde kullanıcıdan alınan veriler değerlendirilebilir, farklı işlemler gerçekleştirilebilir ve programın çalışma akışı kontrol edilebilir.
Bu derste if, if-else, else if ve iç içe if yapılarının kullanımını öğrendik. Ayrıca sayı kontrolü, not hesaplama, kullanıcı girişi ve hesap makinesi gibi Console uygulamaları geliştirerek konuyu pekiştirdik.
Bir sonraki dersimizde C# Switch Case Kullanımı konusunu inceleyerek çoklu seçim işlemlerinin nasıl gerçekleştirildiğini öğreneceğiz.