Nesne Tabanlı Programlama

3 - Kontrol Akışı ve Döngüler

Emre Can Yılmaz

Ondokuz Mayıs Üniversitesi

2024

Kontrol Akışı (Control Flow)

  • Bir programın hangi satırların hangi sırayla çalışacağını belirler.
  • Varsayılan olarak kodlar yukarıdan aşağıya doğru sırayla çalıştırılır.
  • Kontrol akışı ifadeleri ile programın akışını değiştirebiliriz.

Karar Yapıları (if-elif-else)

  • Belirli bir koşula bağlı olarak farklı kod bloklarını çalıştırmamızı sağlar.

if İfadesi

if koşul:
    # Koşul doğruysa çalıştırılacak kod bloğu

Örnek:

yas = 20

if yas >= 18:
    print("Oy kullanabilirsiniz.")
Oy kullanabilirsiniz.

else İfadesi

if koşul:
    # Koşul doğruysa çalıştırılacak kod bloğu
else:
    # Koşul yanlışsa çalıştırılacak kod bloğu

Örnek:

yas = 16

if yas >= 18:
    print("Oy kullanabilirsiniz.")
else:
    print("Oy kullanamazsınız.")
Oy kullanamazsınız.

elif İfadesi

if koşul1:
    # Koşul1 doğruysa çalıştırılacak kod bloğu
elif koşul2:
    # Koşul2 doğruysa çalıştırılacak kod bloğu
else:
    # Hiçbir koşul doğru değilse çalıştırılacak kod bloğu

Örnek:

puan = 75

if puan >= 90:
    print("Harf notunuz: AA")
elif puan >= 80:
    print("Harf notunuz: BA")
elif puan >= 70:
    print("Harf notunuz: BB")
else:
    print("Harf notunuz: CB")
Harf notunuz: BB

İç İçe if Yapıları

  • Bir if ifadesi içine başka bir if ifadesi yerleştirilebilir.

Örnek:

yas = 25
ehliyet = True

if yas >= 18:
    if ehliyet:
        print("Araba kullanabilirsiniz.")
    else:
        print("Ehliyetiniz olmadığı için araba kullanamazsınız.")
else:
    print("Yaşınız 18'den küçük olduğu için araba kullanamazsınız.")
Araba kullanabilirsiniz.

Koşul İfadelerinde Karşılaştırma Operatörlerinin Birleştirilmesi

  • and, or ve not operatörlerini kullanarak birden fazla koşulu birleştirebiliriz.

Örnek:

yas = 25
ehliyet = True

if yas >= 18 and ehliyet:
    print("Araba kullanabilirsiniz.")
else:
    print("Araba kullanamazsınız.")
Araba kullanabilirsiniz.

Ternary Operator (Tek Satırda Koşullu İfade)

değer_eğer_doğru if koşul else değer_eğer_yanlış

Örnek:

sayi = 10
sonuc = "Çift" if sayi % 2 == 0 else "Tek"
print(sonuc)  # Çıktı: Çift

Döngüler (Loops)

  • Belirli bir kod bloğunu tekrar tekrar çalıştırmamızı sağlar.

for Döngüsü

  • Bir dizi (string, liste, tuple, range) üzerinde yineleme yapmak için kullanılır.
for eleman in dizi:
    # Her eleman için çalıştırılacak kod bloğu

Örnek:

meyveler = ["elma", "armut", "muz"]

for meyve in meyveler:
    print(meyve)
elma
armut
muz

range() Fonksiyonu

  • Sayı dizileri oluşturmak için kullanılır.
range(başlangıç, bitiş, adım)

Örnekler:

for i in range(5):  # 0'dan 4'e kadar
    print(i)

for i in range(1, 10, 2): # 1'den 9'a kadar, 2'şer atlayarak
    print(i)

for i in range(5, 0, -1): # 5'ten 1'e kadar, geriye doğru
    print(i)

Stringler Üzerinde for Döngüsü

mesaj = "Merhaba"

for harf in mesaj:
    print(harf)
M
e
r
h
a
b
a

while Döngüsü

  • Belirli bir koşul doğru olduğu sürece bir kod bloğunu tekrar tekrar çalıştırır.
while koşul:
    # Koşul doğru olduğu sürece çalıştırılacak kod bloğu

Örnek:

sayac = 0

while sayac < 5:
    print(sayac)
    sayac += 1

Döngülerde Kullanıcı Girişi

toplam = 0

while True:
    sayi = input("Bir sayı girin (Çıkmak için 'q' tuşuna basın): ")
    if sayi == 'q':
        break
    sayi = int(sayi)
    toplam += sayi

print("Girdiğiniz sayıların toplamı:", toplam)

Sonsuz Döngüler

  • while True: ile sonsuz döngü oluşturabiliriz.
sayac = 0

while True:
    print(sayac)
    sayac += 1

Döngü Kontrol İfadeleri

  • Döngülerin akışını kontrol etmek için kullanılır.
  • break, continue ve pass

break İfadesi

  • Döngüyü hemen sonlandırır.
sayac = 0

while True:
    print(sayac)
    sayac += 1
    if sayac == 10:
        break

continue İfadesi

  • Döngünün mevcut iterasyonunu atlar ve bir sonraki iterasyondan devam eder.
sayilar = [1, 2, 3, 4, 5]

for sayi in sayilar:
    if sayi == 3:
        continue
    print(sayi)

pass İfadesi

  • Python’da hiçbir şey yapmayan bir ifadedir.
  • Genellikle kod bloklarını henüz tamamlanmadığı veya geçici olarak boş bırakılması gereken durumlarda kullanılır.
sayi = 5

if sayi > 10:
    pass # Daha sonra buraya kod yazılacak.
else:
    print("Sayı 10'dan küçük veya eşit")
Sayı 10'dan küçük veya eşit

for-else Yapısı

  • for döngüsü ile birlikte kullanılan else bloğu, döngü tamamlandıktan sonra (yani, döngü içinde break ifadesi çalıştırılmadan) çalıştırılacak kodları içerir.
  • Eğer döngü break ile kesilirse, else bloğu çalıştırılmaz.
sayilar = [1, 2, 3, 4, 5]

for sayi in sayilar:
    if sayi == 6:
        print("Sayı bulundu!")
        break
else:
    print("Sayı bulunamadı!")
Sayı bulunamadı!

İç İçe Döngüler (Nested Loops)

  • Bir döngü bloğu içinde başka bir döngü kullanılabilir.

Örnek:

for i in range(3):
    for j in range(2):
        print(i, j)
0 0
0 1
1 0
1 1
2 0
2 1

Match-Case Yapısı (Python 3.10 ve Sonrası)

  • Bir değeri birden fazla desenle karşılaştırmak ve eşleşen desene göre farklı kod bloklarını çalıştırmak için kullanılır.
match değişken:
    case desen1:
        # Kod
    case desen2:
        # Kod
    case _:  # Varsayılan durum
        # Kod

Örnek:

gun = "Pazartesi"

match gun:
    case "Pazartesi":
        print("Hafta başlangıcı")
    case "Cumartesi" | "Pazar":
        print("Haftasonu")
    case _:
        print("Hafta içi")
Hafta başlangıcı

Örnek:

print("Merhaba", end=" ")
print("Dünya!")

Çıktı:

Merhaba Dünya!

end=" " ile print fonksiyonu her çıktının sonuna boşluk karakteri ekler ve yeni satıra geçmez.

Quiz

  1. Aşağıdaki kod bloğunun çıktısı nedir?
for i in range(1, 6):
    if i % 2 == 0:
        continue
    print(i, end=" ")
  1. Aşağıdaki kod bloğunun çıktısı nedir?
sayi = 1

while sayi <= 5:
    if sayi == 3:
        break
    print(sayi, end=" ")
    sayi += 1
  1. Aşağıdaki kod bloğunun çıktısı nedir?
x = 15
y = 4

if x % y == 0:
    print("x, y'ye tam bölünür")
else:
    print("x, y'ye tam bölünmez")
  1. Aşağıdaki kod bloğunun çıktısı nedir?
toplam = 0

for i in range(1, 6, 2):
    toplam += i

print(toplam)
  1. Aşağıdaki kod bloğunun çıktısı nedir?
sayac = 1

while sayac <= 5:
    if sayac == 3:
        sayac += 1
        continue
    print(sayac)
    sayac += 1
  1. Aşağıdaki kod bloğunun çıktısı nedir?
for i in range(2):
    for j in range(3):
        if j == 1:
            break
        print(i, j)

Alıştırmalar

  1. Kullanıcıdan bir sayı alın ve bu sayının 1 ile 10 arasında olup olmadığını kontrol edin.
  2. Kullanıcıdan 5 tane sayı alın ve bu sayıların toplamını hesaplayın.
  3. 1’den 100’e kadar olan sayılardan çift olanları ekrana yazdırın.
  4. Kullanıcıdan bir metin alın ve bu metindeki “a” harflerinin sayısını bulun.
  5. Kullanıcıdan bir sayı alın ve bu sayının faktöriyelini hesaplayan bir program yazın.
  6. Kullanıcıdan bir metin alın ve bu metnin palindrom olup olmadığını kontrol eden bir program yazın.