Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 98 additions & 2 deletions if-else.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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;
Expand All @@ -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.

Expand All @@ -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 |