diff --git a/if-else.md b/if-else.md index 42d707a..6e20e7e 100644 --- a/if-else.md +++ b/if-else.md @@ -4,6 +4,33 @@ Java'da mantıksal ve koşullu ifadeler için if blokları kullanılır. Java 'd Koşula göre program içinde farklı işlemleri yerine getirmek gerekebilir. If-else muhtemelen yazılım programlarında en yaygın kullanılan karar mekanizmasıdır. Bu tarz durumları Java'da kodlayabilmek için if-else karar mekanizmasının yanında switch-case gibi yapılarda kullanılmaktadır. İf-else karar mekanizması istenilen koşul gerçekleştiği takdirde çalışır. Kısacası belirlenen koşul doğruysa yazılan kod çalışır. +## Tek satır IF Else ({} yok) +```java +int x = 10; + +if (x > 5) + System.out.println("x 5'ten büyük"); +``` + +- Bu tamamen geçerli ve çalışır. + +## Birden fazla satır ({} zorunlu) +```java +int x = 10; + +if (x > 5) { + System.out.println("x 5'ten büyük"); + x += 2; // ikinci satır + System.out.println("x'in yeni değeri: " + x); +} +``` + +- Küçük ipucu: + +* Kod okunabilirliği için genellikle {} kullanmak önerilir, özellikle yeni başlayanlar için karışıklığı önler. + +* Ama tek satırlık basit işlemlerde {} yazmayabilirsin. + ## Java'da Karar Mekanizmaları Java'da koşullu ifade ve şart oluşturmak için if ve else kullanılırız. Ayrıca else if, switch gibi koşullu ifadelere sahiptir. - Programımızda belirtilen bir koşul doğruysa yürütülecek bir kod bloğu belirtmek için if kullanılır. @@ -59,7 +86,7 @@ else{ ``` - Sizce yukarıda yazdığımız kodun Console çıktısı nedir ? -i nin degeri 10'dan farklıdır ve 10'dan kücük degildir. +* i nin degeri 10'dan farklıdır ve 10'dan kücük degildir. Örneğin tuz oranı %80 ve üzerinde ise "yüksek derecede tuzlu", %80 ile %50 arasında ise "orta derecede tuzlu", bunların dışında bir durumda ise "düşük derecede tuzlu" şeklinde ekrana bilgiler yazan bir program yazmak istediğimizde if-else if-else yapısını kullanabiliriz. ```java float saltRatio = 0.9f; @@ -73,7 +100,15 @@ else { System.out.println("düşük derecede tuzlu"); } ``` -- "if-else" yapılarını iç içe de kullanma şansına sahibiz. +### 🧩 1️⃣ İç içe if (Nested if) — “Şartlar sırayla test edilecekse” +#### 🧠 Ne zaman kullanılır: +- Bir koşul doğru olduktan sonra ancak o durumda başka bir koşulu kontrol etmek istiyorsan. +- Yani: “Eğer şu oluyorsa, o zaman bu da olmalı.” + +##### 📘 Kullanım senaryoları: +- Bir işlem adım adım ilerliyorsa +- Önce temel bir şart, sonra alt detaylar kontrol ediliyorsa +- Her koşulun içinde farklı bir hata veya açıklama mesajı göstermek istiyorsan ```java Örneğin: 18 yaşından küçük olanlar kan bağışı yapamazlar, fakat, 18 yaşına eşit ve büyük olan bir kişi eğer kilosu 48'den büyükse kan verebilir, kilosu 48'den küçükse kan veremez gibi basit bir kuralı Java'da kodlayalım. @@ -98,3 +133,64 @@ else{ ``` Kan verebilirsiniz. ``` +### ⚙️ 2️⃣ Mantıksal Operatörlerle If (&&, ||, !) — “Tüm şartlar aynı anda geçerli olmalıysa” +#### 🧠 Ne zaman kullanılır: + +- Birden fazla koşulu tek seferde kontrol etmek istiyorsan. +- Yani tüm şartlar aynı seviyedeyse, biri diğerine bağlı değilse. + +##### 📘 Kullanım senaryoları: + +- Giriş izni, yetki, form doğrulama gibi durumlar +- “Hepsi doğru olmalı” veya “en az biri doğru olmalı” kontrollerinde +- İç içe if yazmak istemediğinde +```java +if (yas >= 18 && ehliyetVarMi && gozTestiGectiMi) { + System.out.println("Araba kullanabilirsiniz."); +} else { + System.out.println("Şartlardan biri sağlanmıyor."); +} +``` +##### 🟢 Avantajı: + +- Daha kısa ve okunabilir +- İç içe if’e göre daha temiz +- “Hepsi doğruysa” mantığını tek satırda yazar + +##### 🔴 Dezavantajı: +- Hangi şartın neden yanlış olduğunu görmek zordur. +- “Neden başarısız?” sorusuna net yanıt vermez (tek bir else bloğu vardır). +### ⚡ 3️⃣ Ternary If (?:) — “Basit true/false kararlarında” +#### 🧠 Ne zaman kullanılır: +Bir koşula göre tek bir değer atayacaksan veya tek satırlık karar vereceksen. + +#### 📘 Kullanım senaryoları: + +- Kısa çıktı üretmek +- Değişken ataması yapmak +- Konsola veya GUI’ye kısa mesaj yazmak +```java +String mesaj = (puan >= 50) ? "Geçti" : "Kaldı"; +System.out.println(mesaj); +``` +##### 🟢 Avantajı: +- Çok kısa ve temiz +- Bir değişkene atama yaparken pratik + +##### 🔴 Dezavantajı: +- Koşul karmaşık hale gelirse okunması zorlaşır. + +```java +String sonuc = (a > b && c < d) ? (x == y ? "A" : "B") : "C"; // Okuması zor! +``` +Bu gibi durumlarda klasik if-else daha okunabilir olur. +### Hangisi Ne Zaman Kullanılır? + +| Kullanım Türü | Ne Zaman Tercih Edilir | Avantaj | Dezavantaj | +| :-------------------------------| :------------------------------------------------------------ | :--------------------------------------------------- | :-------------------------------------- | +| **İç içe if (nested if)** | Şartlar **birbirine bağlı** olduğunda | Her adımın neden başarısız olduğunu anlayabilirsin | Uzarsa karışır | +| **Ternary if (?:)** | Tek satırda **basit kararlar** için | En kısa yöntem | Karar karmaşıklaşırsa okunamaz olur | +| **Mantıksal if (&&,! ya da sembolu)** | Şartlar **bağımsız ama aynı anda kontrol edilecekse** olursa | Kısa ve temiz | Hangi şartın hatalı olduğunu bilemezsin | + + +