Karar Yapıları
if · else · elif
Program her zaman düz bir çizgide ilerlemez. Bir koşula bakar, cevaba göre yolunu seçer.
Gün boyu karar veririz
- Bir ürünü almadan önce fiyatlara bakar, en uygun yerden alırız.
- Kahvaltıda evde ne varsa ona göre menü seçeriz.
- Hava yağmurluysa yağmurluk giyeriz ya da şemsiye alırız.
Her kararın bir şartı (koşulu) vardır. Şart gerçekleşirse bir şey, gerçekleşmezse başka bir şey yaparız.
Yağmur yağıyor mu? Hayır
→ Güneş gözlüğünü al.
if yagmur_yagiyor:
print("Şemsiyeni al.")
else:
print("Güneş gözlüğünü al.")Karar yapısı ve dallanma
Sorgu ve karar verme sürecini programlama dilinde kullanmak için oluşturulan yapılara karar yapıları denir.
Sorgunun cevabına (True / False) göre program farklı yollara ayrılır. Programın akış yönü değişir. Buna programın dallanması denir.
Karşılaştırma ve mantıksal operatörlerle. Sonuç her zaman True ya da False olur.
Dallanan akışta her çalıştırmada yollardan yalnızca biri izlenir.
Karşılaştırma operatörleri
| Operatör | Anlamı | Örnek | Sonuç |
|---|---|---|---|
| == | Eşit mi? | 5 == 5 | True |
| != | Eşit değil mi? | 5 != 3 | True |
| > | Büyük mü? | 2 > 7 | False |
| < | Küçük mü? | 2 < 7 | True |
| >= | Büyük ya da eşit mi? | 60 >= 60 | True |
| <= | Küçük ya da eşit mi? | 61 <= 60 | False |
= atama yapar, == karşılaştırır. if puan = 50: yazmak hata verir.
Mantıksal operatörler: and · or · not
and (ve)
İki koşul da doğruysa True.
| A | B | A and B |
|---|---|---|
| T | T | True |
| T | F | False |
| F | T | False |
| F | F | False |
or (veya)
En az biri doğruysa True.
| A | B | A or B |
|---|---|---|
| T | T | True |
| T | F | True |
| F | T | True |
| F | F | False |
not (değil)
Sonucu tersine çevirir.
| A | not A |
|---|---|
| True | False |
| False | True |
yas >= 18 and ehliyet == "E"
İkisi de sağlanmalı.
Seçimli yapıların çeşitleri
if
Koşul doğruysa bir işlem yapılır, değilse atlanır.
if hiz > 50:
print("Yavaşla")if – else
Doğruysa bir yol, yanlışsa diğer yol.
if puan >= 50:
print("Geçti")
else:
print("Kaldı")if – elif – else
Sırayla birçok koşul sorulur.
if s > 0:
print("+")
elif s < 0:
print("-")
else:
print("0")iç içe if
Bir kararın içinde yeni bir karar.
if basvuru_uygun:
if yetenek >= 70:
print("Kayıt")if – else nasıl çalışır?
ifile bir sorgu yapılır.- Cevap True (evet) ise if bloğundaki işlemler yapılır.
- Cevap False (hayır) ise else bloğundaki işlemler yapılır.
- Hangi yol seçilirse seçilsin, sonra program 3. işlemden devam eder.
if ve else bloklarından yalnızca biri çalışır. İkisi birden asla çalışmaz.
Farklı dillerde if-else yazımı
if (sorgu)
{
1. İşlem
}
else
{
2. İşlem
}
3. İşlemif (sorgu)
1. İşlem
else
2. İşlem
3. İşlemif sorgu:
1. İşlem
else:
2. İşlem
3. İşlemPython'da blokları ayraç değil girinti (genelde 4 boşluk) belirler. Girinti yanlışsa kod hata verir ya da yanlış çalışır.
Bir if satırının parçaları
yas = int(input("Yaşınız: "))
if yas >= 18:
print("Ehliyet alabilirsiniz.")
else:
print("Biraz daha beklemelisiniz.")
print("Program bitti.")Anahtar kelime. Küçük harfle yazılır: If ya da IF çalışmaz.
Koşul. Sonucu True ya da False olan bir ifade.
İki nokta. if ve else satırları iki nokta ile biter. Unutulursa SyntaxError verir.
Girinti. Bloğa ait satırlar 4 boşluk içeriden başlar.
Koşulsuzdur. else yas < 18: yazılmaz, sadece else: yazılır.
Girintisiz son satır bloğun dışındadır, her durumda çalışır.
Sadece if: koşul yanlışsa atla
Sayı tek mi, çift mi?
sayi % 2 sayının 2'ye bölümünden kalanı verir. Kalan 0 ise sayı çifttir. Kaydırıcıyı oynat, programın hangi yoldan gittiğini izle.
Basketbolcunun performansı
İki zaman dilimindeki basket sayılarının ortalaması 60 ya da üstüyse "Performansınız çok iyi.", değilse "Performansınız için çalışmalısınız!" yazılır.
Sayı tahmin oyunu
Program 11 sayısını aklında tutuyor. Kullanıcının tahmini doğruysa tebrik eder, değilse tuttuğu sayıyı söyler.
Stajyer ön görüşmesi
Şirket, en az bir programlama dili bilen ve İngilizce bilen öğrencileri ön görüşmeye çağıracak.
İki soruya E / H ile cevap alınır. Şartları sağlayana "Ön görüşme ölçütlerine uygunsunuz.", sağlamayana "Ön görüşme ölçütlerine uygun değilsiniz." yazılır.
İki şartın ikisi de sağlanmalı. Hangi mantıksal operatör gerekir?
Birden çok seçenek: else-if
ifile ilk sorgu yapılır. Cevap True ise 1. işlem yapılır.- Cevap False ise yeni bir sorgu (else-if) sorulur.
- Hiçbir sorgu doğru değilse else bloğu çalışır.
- Bu yapıya çoklu seçim yapısı denir.
Python'da else-if yoktur. Yerine kısaltması elif kullanılır.
Farklı dillerde else-if yazımı
if (sorgu1)
{
1. İşlem
}
else if (sorgu2)
{
2. İşlem
}
else
{
3. İşlem
}
4. İşlemif (sorgu1)
1. İşlem
else if (sorgu2)
2. İşlem
else
3. İşlem
4. İşlemif sorgu1:
1. İşlem
elif sorgu2:
2. İşlem
else:
3. İşlem
4. İşlemBir yapıda bir tane if, istediğin kadar elif ve en fazla bir tane else olur. else her zaman en sonda yer alır.
Pozitif mi, negatif mi, sıfır mı?
Sayıyı 0 yap: iki sorgu da False olur, program else bloğuna iner.
Sorgular yukarıdan aşağı sorulur, ilk doğru olan çalışır
Puan 92 iken puan >= 70 da doğrudur. Ama Python ona hiç bakmaz: ilk doğru koşulu bulunca yapının geri kalanını atlar.
Aynı koşullar, farklı sıra, farklı sonuç
Yanlış sırada 92 puan alan öğrenci de "Geçer" alır, çünkü puan >= 50 ilk sorulan ve doğru olan koşuldur.
Ayrı if'ler her biri kontrol edilir, elif zinciri tek seçer
35 °C için ayrı if'ler üç mesaj birden yazar. Zincirde yalnızca ilk doğru koşulun mesajı yazılır.
Çalışma süresine göre zam
Personel çalışma süresini ve maaşını girer. Program zammı ve zamlı maaşı yazar.
- 1–5 yıl (1 ve 5 dâhil): %5 zam
- 6–10 yıl (6 ve 10 dâhil): %10 zam
- 11 yıl ve üzeri: %15 zam
Python'da aralık şöyle yazılabilir: 1 <= yil <= 5. Bu, yil >= 1 and yil <= 5 ile aynıdır.
Pist kulesi: rüzgâra göre kalkış kararı
Rüzgâr hızı knot (deniz mili/saat) ile ölçülür. Sınır değerler bu örnek için seçilmiştir.
Üniversite başvurusu
- Lise diploma puanı en az 60
- TYT puanı 150 veya daha fazla
- Yabancı dil sınavından en az 60
- Yetenek sınavından en az 70
Yetenek puanı yalnızca başvurusu kabul edilen öğrenciye sorulur. Bu yüzden ikinci if, birincinin içinde yer alır.
Bu kodlarda ne yanlış?
if puan = 50:
print("Tam sınırda")Çözüm: Karşılaştırma için == kullanılır: if puan == 50:
if sayi > 0
print("Pozitif")Çözüm: Satır sonunda : eksik.
if yas >= 18:
print("Reşit")Çözüm: Blok girintili olmalı. IndentationError verir.
sayi = input("Sayı: ")
if sayi > 10:
print("Büyük")Çözüm: input() metin döndürür. Sayıyla karşılaştırmak için int(input(...)) yazılmalı.
Ekrana ne yazılır?
x = 7
if x % 2 == 0:
print("A")
else:
print("B")B
t = 25
if t > 30:
print("Sıcak")
elif t > 20:
print("Ilık")
else:
print("Soğuk")Ilık
a = 5
b = 9
if a > 3 and b < 5:
print("X")
print("Y")Y
Kendi programını yaz
Kullanıcıdan alınan sayının 5'e tam bölünüp bölünmediğini yazan program.
Boyu en az 140 cm ve yaşı en az 10 olan çocuk lunaparktaki trene binebilir. Girilen bilgilere göre "Binebilirsin" ya da "Binemezsin" yazan program.
Girilen saate göre (0–23) "Günaydın", "İyi günler", "İyi akşamlar" ya da "İyi geceler" yazan program.
sayi = int(input("Sayı: "))
if sayi % 5 == 0:
print("5'e tam bölünür.")
else:
print("5'e tam bölünmez.")boy = int(input("Boy (cm): "))
yas = int(input("Yaş: "))
if boy >= 140 and yas >= 10:
print("Binebilirsin")
else:
print("Binemezsin")saat = int(input("Saat (0-23): "))
if 5 <= saat < 12:
print("Günaydın")
elif 12 <= saat < 18:
print("İyi günler")
elif 18 <= saat < 22:
print("İyi akşamlar")
else:
print("İyi geceler")- Karar yapıları, farklı problem durumlarında programın akışına yön vermek için kullanılır.
- Mantıksal operatörlerle sorgular oluşturulur, alınan cevaba göre işlemler dallanır.
- if-else: sorgu
Trueise if bloğu,Falseise else bloğu çalışır. - else-if (elif): çoklu seçim yapısıdır. Sorgular sırayla sorulur, ilk doğru olanın işlemi yapılır.
- Python'da bloklar girintiyle belirlenir, if / elif / else satırları
:ile biter.
1. Karar yapılarını kullanırken nelere dikkat ettiniz? 2. Karar yapılarını kullanmanın avantajları nelerdir?