Kontrol Akışı ve Döngüler
Bölüm 2: Kontrol Akışı ve Döngüler
2.1 Kontrol Akışı (Control Flow)
Programlamada, kod satırları genellikle yukarıdan aşağıya doğru sırayla çalıştırılır. Ancak, bazen programın akışını kontrol etmek ve farklı durumlarda farklı kod bloklarını çalıştırmak isteyebiliriz. İşte tam bu noktada kontrol akışı kavramı devreye girer.
Kontrol akışı, programın hangi kod satırlarının hangi sırayla çalıştırılacağını belirler. Karar yapıları ve döngüler, kontrol akışını yönetmek için kullanılan temel araçlardır.
2.1.1 Karar Yapıları (if-elif-else)
Karar yapıları, belirli bir koşula bağlı olarak farklı kod bloklarını çalıştırmamızı sağlar. Python’da en sık kullanılan karar yapısı if-elif-else yapısıdır.
if İfadesi
if ifadesi, belirli bir koşul doğruysa (True) bir kod bloğunu çalıştırır. Eğer koşul yanlışsa (False), kod bloğu çalıştırılmaz.
Sözdizimi:
if koşul:
# Koşul doğruysa çalıştırılacak kod bloğuÖrnek:
yas = 20
if yas >= 18:
print("Oy kullanabilirsiniz.")Bu örnekte, yas değişkeninin değeri 18’den büyük veya eşit olduğu için if bloğundaki kod çalıştırılır ve ekrana “Oy kullanabilirsiniz.” yazdırılır.
else İfadesi
else ifadesi, if ifadesindeki koşul yanlışsa çalıştırılacak kod bloğunu belirtir.
Sözdizimi:
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.")Bu örnekte, yas değişkeninin değeri 18’den küçük olduğu için else bloğundaki kod çalıştırılır ve ekrana “Oy kullanamazsınız.” yazdırılır.
elif İfadesi
elif ifadesi, birden fazla koşulu kontrol etmek için kullanılır. Eğer ilk if ifadesindeki koşul yanlışsa, elif ifadesindeki koşul kontrol edilir. Bu işlem, tüm elif ifadeleri kontrol edilene kadar devam eder. Eğer hiçbir koşul doğru değilse, else bloğundaki kod çalıştırılır.
Sözdizimi:
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
elif koşul3:
# Koşul3 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")Bu örnekte, puan değişkeninin değeri 75 olduğu için puan >= 70 koşulu doğru olur ve “Harf notunuz: BB” yazdırılır.
İç İçe if Yapıları
Bir if ifadesinin içine başka bir if ifadesi yerleştirebiliriz. Bu, iç içe if yapıları olarak adlandırılır. İç içe if yapıları, birden fazla koşulu kontrol etmemizi sağlar.
Ö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.")Bu örnekte, öncelikle yas değişkeninin değeri kontrol edilir. Eğer yas 18’den büyük veya eşitse, ehliyet değişkeninin değeri kontrol edilir. Eğer ehliyet True ise, “Araba kullanabilirsiniz.” yazdırılır. Eğer ehliyet False ise, “Ehliyetiniz olmadığı için araba kullanamazsınız.” yazdırılır. Eğer yas 18’den küçükse, “Yaşınız 18’den küçük olduğu için araba kullanamazsınız.” yazdırılır.
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.")Bu örnekte, hem yas >= 18 hem de ehliyet koşullarının doğru olması durumunda “Araba kullanabilirsiniz.” mesajı yazdırılır.
2.1.2 Döngüler (Loops)
Döngüler, belirli bir kod bloğunu tekrar tekrar çalıştırmamızı sağlar. Python’da iki temel döngü türü vardır: for döngüsü ve while döngüsü.
for Döngüsü
for döngüsü, bir dizi (sequence) üzerinde yineleme yapmak için kullanılır. Dizi, listeler, demetler, stringler veya range nesneleri gibi birden fazla eleman içeren veri tipleri olabilir. for döngüsü, dizinin her elemanı için bir kez çalıştırılır.
Sözdizimi:
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)Bu örnekte, meyveler listesindeki her bir meyve için print(meyve) kodu çalıştırılır. Çıktı şu şekilde olur:
elma
armut
muz
range() Fonksiyonu ile for Döngüsü
range() fonksiyonu, sayı dizileri oluşturmak için kullanılır. for döngüsü ile birlikte sıklıkla kullanılır.
Sözdizimi:
range(başlangıç, bitiş, adım)- başlangıç: Dizinin başlangıç değeri (varsayılan 0).
- bitiş: Dizinin bitiş değeri (bitiş değeri diziye dahil değildir).
- adım: Dizinin her elemanı arasındaki fark (varsayılan 1).
Örnekler:
# 0'dan 4'e kadar (5 dahil değil) sayıları yazdırır
for i in range(5):
print(i, end=" ")
# 1'den 10'a kadar (10 dahil değil) 2'şer atlayarak sayıları yazdırır
for i in range(1, 10, 2):
print(i)
# 5'ten 1'e kadar (1 dahil değil) geriye doğru sayıları yazdırır
for i in range(5, 0, -1):
print(i, end=" ")print() Fonksiyonunda end Parametresi
print() fonksiyonu, varsayılan olarak her çıktıdan sonra yeni bir satıra geçer. end parametresi ile bu davranışı değiştirebilir ve satır sonu karakterini özelleştirebiliriz.
Örnek:
for i in range(5):
print(i, end=" ") # Her sayıdan sonra boşluk karakteri ekler
# Çıktı: 0 1 2 3 4Stringler Üzerinde for Döngüsü
for döngüsünü stringler üzerinde de kullanabiliriz. Bu durumda, döngü string içindeki her bir karakter için bir kez çalıştırılır.
Örnek:
mesaj = "Merhaba Dünya!"
for harf in mesaj:
print(harf)Bu örnekte, mesaj stringindeki her bir karakter için print(harf) kodu çalıştırılır. Çıktı şu şekilde olur:
M
e
r
h
a
b
a
D
ü
n
y
a
!
while Döngüsü
while döngüsü, belirli bir koşul doğru olduğu sürece bir kod bloğunu tekrar tekrar çalıştırır. Koşul yanlış olduğunda döngü sona erer.
Sözdizimi:
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 += 1Bu örnekte, sayac değişkeni 5’ten küçük olduğu sürece while döngüsü çalışır. Her döngüde, sayac değişkeninin değeri ekrana yazdırılır ve ardından 1 artırılır. Çıktı şu şekilde olur:
0
1
2
3
4
Döngülerde Kullanıcı Girişi
Döngüler içinde kullanıcıdan veri almak için input() fonksiyonunu kullanabiliriz.
Örnek:
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)Bu örnekte, kullanıcı “q” tuşuna basana kadar döngü devam eder ve girilen sayıları toplar.
Sonsuz Döngüler ve break İfadesi
while True yapısı, sonsuz bir döngü oluşturur. Döngüyü sonlandırmak için break ifadesini kullanabiliriz.
Örnek:
sayac = 0
while True:
print(sayac)
sayac += 1Bu örnekte döngüyü durduracak bir ifade olmadığı için sürekli çalışır.
2.2 Döngü Kontrol İfadeleri
Döngüler içinde, döngünün akışını kontrol etmek için break ve continue ifadelerini kullanabiliriz.
2.2.1 break İfadesi
break ifadesi, döngüyü hemen sonlandırır. Döngü içindeki kodun geri kalanı çalıştırılmaz.
Örnek:
sayac = 0
while True:
print(sayac)
sayac += 1
if sayac == 10:
breakBu örnekte sayac 10değerine ulaştığında döngü sonlanır.
2.2.2 continue İfadesi
continue ifadesi, döngünün mevcut iterasyonunu (tekrarını) atlar ve bir sonraki iterasyondan devam eder.
Örnek:
sayilar = [1, 2, 3, 4, 5]
for sayi in sayilar:
if sayi == 3:
continue
print(sayi)Bu örnekte, for döngüsü sayilar listesindeki her bir sayı için çalışır. Ancak, sayi değişkeni 3 olduğunda continue ifadesi çalışır ve bu iterasyon atlanır. Çıktı şu şekilde olur:
1
2
4
5
2.2.3 pass İfadesi
pass ifadesi, Python’da hiçbir şey yapmayan bir ifadedir. Genellikle kod bloklarının henüz tamamlanmadığı veya geçici olarak boş bırakılması gereken durumlarda kullanılır.
Örnek:
sayi = 5
if sayi > 10:
# Burada henüz bir kod yok, ancak Python hata vermesin diye pass ifadesi kullanıyoruz
pass
else:
print("Sayı 10'dan küçük veya eşit")Bu örnekte, if bloğu henüz tamamlanmamış. Eğer pass ifadesini kullanmazsak, Python bir IndentationError hatası verecektir. pass ifadesi sayesinde, kod bloğunu boş bırakabilir ve hata almadan programımızı çalıştırabiliriz.
pass ifadesi, fonksiyon veya sınıf tanımlarında da kullanılabilir. Örneğin:
def benim_fonksiyonum():
# Fonksiyonun gövdesi henüz yazılmadı
pass
class BenimSinifim:
# Sınıfın gövdesi henüz yazılmadı
passBu şekilde, fonksiyon veya sınıfı daha sonra tanımlamak üzere boş bırakabilir ve programımızı hata almadan çalıştırabiliriz.
pass İfadesinin Kullanım Alanları
- Henüz tamamlanmamış kod blokları: Kod yazarken, bazı bölümleri daha sonra tamamlamak isteyebilirsiniz. Bu durumlarda, Python’un hata vermemesi için
passifadesini kullanabilirsiniz. - Boş fonksiyon veya sınıf tanımları: Fonksiyon veya sınıfı daha sonra tanımlamak üzere boş bırakmak istediğinizde
passifadesini kullanabilirsiniz. - Koşullu ifadelerde: Belirli bir koşul sağlandığında hiçbir şey yapılmasını istemediğiniz durumlarda
passifadesini kullanabilirsiniz.
2.3 İç İçe Döngüler (Nested Loops)
Bir döngü bloğu içinde başka bir döngü kullanabiliriz. Bu, iç içe döngüler (nested loops) olarak adlandırılır. İç içe döngüler, karmaşık problemleri çözmek için kullanılır.
Örnek:
for i in range(3):
for j in range(2):
print(i, j)Bu örnekte, dıştaki for döngüsü 3 kez çalışır ve her döngüde içteki for döngüsü 2 kez çalışır. Çıktı şu şekilde olur:
0 0
0 1
1 0
1 1
2 0
2 1
2.4 Match-Case Yapısı (Python 3.10 ve Sonrası)
match-case yapısı, 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.
Sözdizimi:
match değişken:
case desen1:
# Desen1 ile eşleşirse çalıştırılacak kod bloğu
case desen2:
# Desen2 ile eşleşirse çalıştırılacak kod bloğu
case _:
# Hiçbir desenle eşleşmezse çalıştırılacak kod bloğuÖrnek:
gun = "Pazartesi"
match gun:
case "Pazartesi":
print("Haftanın ilk günü")
case "Cumartesi" | "Pazar":
print("Haftasonu")
case _:
print("Hafta içi")Bu örnekte, gun değişkeninin değeri “Pazartesi” olduğu için ilk case ile eşleşir ve “Haftanın ilk günü” yazdırılır.
2.5 Bölüm Sonu Quiz
Aşağıdaki
fordöngüsü kaç kez çalışır?for i in range(1, 10, 2): print(i)whiledöngüsünü sonlandırmak için hangi ifade kullanılır?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")Aşağıdaki kod bloğunda boşluklara hangi ifadeler gelmelidir?
sayi = 7 _______ sayi > 10: print("Sayı 10'dan büyük") _______: print("Sayı 10'dan küçük veya eşit")Aşağıdaki kod bloğunun çıktısı nedir?
toplam = 0 for i in range(1, 6, 2): toplam += i print(toplam)Aşağıdaki kod bloğunun çıktısı nedir?
sayac = 1 while sayac <= 5: if sayac == 3: sayac += 1 continue print(sayac) sayac += 1Aş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)