Programlamanın Temel Kavramları · Kitap s. 108–115

Karar Yapıları
if · else · elif

Program her zaman düz bir çizgide ilerlemez. Bir koşula bakar, cevaba göre yolunu seçer.

3.4 Karar Yapıları 3.4.1 If-Else Yapısı 3.4.2 Else-If Yapısı Uygulama 3–4 · Etkinlik 1
3.4 Karar Yapıları s. 108

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.

Dene: hava durumunu seç
☀️

Yağmur yağıyor mu? Hayır
→ Güneş gözlüğünü al.

karar.py
if yagmur_yagiyor:
    print("Şemsiyeni al.")
else:
    print("Güneş gözlüğünü al.")
3.4 Karar Yapıları s. 108

Karar yapısı ve dallanma

Sorgu ve karar verme sürecini programlama dilinde kullanmak için oluşturulan yapılara karar yapıları denir.

Programın dallanması

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.

Sorgular neyle kurulur?

Karşılaştırma ve mantıksal operatörlerle. Sonuç her zaman True ya da False olur.

Normal akış ağacın gövdesi, karar yapısı onun dallarıdır
SIRALI AKIŞ 1. adım 2. adım 3. adım DALLANAN AKIŞ koşul? EvetHayır A işlemi B işlemi

Dallanan akışta her çalıştırmada yollardan yalnızca biri izlenir.

Hatırlatma · Sorguların yapı taşı

Karşılaştırma operatörleri

OperatörAnlamıÖrnekSonuç
==Eşit mi?5 == 5True
!=Eşit değil mi?5 != 3True
>Büyük mü?2 > 7False
<Küçük mü?2 < 7True
>=Büyük ya da eşit mi?60 >= 60True
<=Küçük ya da eşit mi?61 <= 60False
Dene: kendi koşulunu yaz
→True
Sık yapılan hata

= atama yapar, == karşılaştırır. if puan = 50: yazmak hata verir.

Hatırlatma · Birden fazla koşul

Mantıksal operatörler: and · or · not

and (ve)

İki koşul da doğruysa True.

ABA and B
TTTrue
TFFalse
FTFalse
FFFalse

or (veya)

En az biri doğruysa True.

ABA or B
TTTrue
TFTrue
FTTrue
FFFalse

not (değil)

Sonucu tersine çevirir.

Anot A
TrueFalse
FalseTrue
Örnek

yas >= 18 and ehliyet == "E"
İkisi de sağlanmalı.

3.4 Karar Yapıları s. 108 · Görsel 3.7

Seçimli yapıların çeşitleri

tek yol

if

Koşul doğruysa bir işlem yapılır, değilse atlanır.

if hiz > 50:
    print("Yavaşla")
iki yol

if – else

Doğruysa bir yol, yanlışsa diğer yol.

if puan >= 50:
    print("Geçti")
else:
    print("Kaldı")
çok yol

if – elif – else

Sırayla birçok koşul sorulur.

if s > 0:
    print("+")
elif s < 0:
    print("-")
else:
    print("0")
iç içe

iç içe if

Bir kararın içinde yeni bir karar.

if basvuru_uygun:
    if yetenek >= 70:
        print("Kayıt")
3.4.1 If-Else Yapısı s. 109 · Görsel 3.8

if – else nasıl çalışır?

  • if ile 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.
Unutma

if ve else bloklarından yalnızca biri çalışır. İkisi birden asla çalışmaz.

3.4.1 If-Else Yapısı s. 109 · Tablo 3.6

Farklı dillerde if-else yazımı

Yay ayraçlı (C, Java, C#…)
if (sorgu)
{
    1. İşlem
}
else
{
    2. İşlem
}
3. İşlem
Ayraçsız genel yazım
if (sorgu)
    1. İşlem
else
    2. İşlem
3. İşlem
Python
if sorgu:
    1. İşlem
else:
    2. İşlem
3. İşlem
Python girintilemeye duyarlıdır

Python'da blokları ayraç değil girinti (genelde 4 boşluk) belirler. Girinti yanlışsa kod hata verir ya da yanlış çalışır.

Söz dizimi

Bir if satırının parçaları

yas.py
yas = int(input("Yaşınız: "))
if yas >= 18:
    print("Ehliyet alabilirsiniz.")
else:
    print("Biraz daha beklemelisiniz.")
print("Program bitti.")
if

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.

else

Koşulsuzdur. else yas < 18: yazılmaz, sadece else: yazılır.

6

Girintisiz son satır bloğun dışındadır, her durumda çalışır.

Canlı örnek · Tek yönlü karar

Sadece if: koşul yanlışsa atla

Canlı örnek · if – else

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.

Kitaptan · 14. Örnek s. 110

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.

Kitaptan · 15. Örnek s. 110

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.

Kitaptan · 3. Uygulama s. 111

Stajyer ön görüşmesi

Problem

Ş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.

İpucu

İki şartın ikisi de sağlanmalı. Hangi mantıksal operatör gerekir?

3.4.2 Else-If Yapısı s. 111 · Görsel 3.9

Birden çok seçenek: else-if

  • if ile 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 adı

Python'da else-if yoktur. Yerine kısaltması elif kullanılır.

3.4.2 Else-If Yapısı s. 112 · Tablo 3.7

Farklı dillerde else-if yazımı

Yay ayraçlı
if (sorgu1)
{
    1. İşlem
}
else if (sorgu2)
{
    2. İşlem
}
else
{
    3. İşlem
}
4. İşlem
Ayraçsız genel yazım
if (sorgu1)
    1. İşlem
else if (sorgu2)
    2. İşlem
else
    3. İşlem
4. İşlem
Python
if sorgu1:
    1. İşlem
elif sorgu2:
    2. İşlem
else:
    3. İşlem
4. İşlem
Kural

Bir yapıda bir tane if, istediğin kadar elif ve en fazla bir tane else olur. else her zaman en sonda yer alır.

Kitaptan · 16. Örnek s. 112

Pozitif mi, negatif mi, sıfır mı?

Sayıyı 0 yap: iki sorgu da False olur, program else bloğuna iner.

elif'in altın kuralı

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.

Hata avı · Koşulların sırası

Aynı koşullar, farklı sıra, farklı sonuç

✗ Yanlış sıra: küçükten büyüğe
✓ Doğru sıra: büyükten küçüğe

Yanlış sırada 92 puan alan öğrenci de "Geçer" alır, çünkü puan >= 50 ilk sorulan ve doğru olan koşuldur.

Karşılaştırma

Ayrı if'ler her biri kontrol edilir, elif zinciri tek seçer

Üç ayrı if
if – elif – else

35 °C için ayrı if'ler üç mesaj birden yazar. Zincirde yalnızca ilk doğru koşulun mesajı yazılır.

Kitaptan · 4. Uygulama s. 113

Çalışma süresine göre zam

Problem

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
İpucu

Python'da aralık şöyle yazılabilir: 1 <= yil <= 5. Bu, yil >= 1 and yil <= 5 ile aynıdır.

Bizim alanımızdan · if – elif – else

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.

Kitaptan · 1. Etkinlik s. 114–115

Üniversite başvurusu

Başvuru şartları
  • Lise diploma puanı en az 60
  • TYT puanı 150 veya daha fazla
  • Yabancı dil sınavından en az 60
Kayıt ölçütü
  • Yetenek sınavından en az 70
Neden iç içe?

Yetenek puanı yalnızca başvurusu kabul edilen öğrenciye sorulur. Bu yüzden ikinci if, birincinin içinde yer alır.

Hata avcısı

Bu kodlarda ne yanlış?

1
if puan = 50:
    print("Tam sınırda")

Çözüm: Karşılaştırma için == kullanılır: if puan == 50:

2
if sayi > 0
    print("Pozitif")

Çözüm: Satır sonunda : eksik.

3
if yas >= 18:
print("Reşit")

Çözüm: Blok girintili olmalı. IndentationError verir.

4
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ı.

Mini sınav

Ekrana ne yazılır?

Soru 1
x = 7
if x % 2 == 0:
    print("A")
else:
    print("B")
Çıktı
B
Soru 2
t = 25
if t > 30:
    print("Sıcak")
elif t > 20:
    print("Ilık")
else:
    print("Soğuk")
Çıktı
Ilık
Soru 3
a = 5
b = 9
if a > 3 and b < 5:
    print("X")
print("Y")
Çıktı
Y
Sıra sizde

Kendi programını yaz

1 · if – else

Kullanıcıdan alınan sayının 5'e tam bölünüp bölünmediğini yazan program.

2 · and

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.

3 · elif

Girilen saate göre (0–23) "Günaydın", "İyi günler", "İyi akşamlar" ya da "İyi geceler" yazan program.

Örnek çözümler
1.py
sayi = int(input("Sayı: "))
if sayi % 5 == 0:
    print("5'e tam bölünür.")
else:
    print("5'e tam bölünmez.")
2.py
boy = int(input("Boy (cm): "))
yas = int(input("Yaş: "))
if boy >= 140 and yas >= 10:
    print("Binebilirsin")
else:
    print("Binemezsin")
3.py
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")
Kontrol noktası · s. 115
  • 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 True ise if bloğu, False ise 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.
Değerlendirme

1. Karar yapılarını kullanırken nelere dikkat ettiniz?   2. Karar yapılarını kullanmanın avantajları nelerdir?

→ Boşluk sonraki adım / slayt
← önceki slayt
Home End ilk / son
O genel bakış   F tam ekran

Slaytlar