Python İle Programlamanın Temelleri-4
Koşullu Durumlar
1. Boolean İfadesi
Bilgisayar bilimi temelde 0 ve 1 değerleri üzerine kurulmuştur; 0 değeri False(Yanlış), 1 değeri True(Doğru) demektir. Bu ifadelere Boolean (bool) İfadeleri denir. Doğru ve Yanlış değerleri korumak için kullanılan tipe bool adı verilmektedir. Sadece iki Boolean ifade değeri vardır:
True (Doğru) (1)
False (Yanlış) (0)
Python açısından büyük harf le başlamaları önemlidir. Boolean deyimi, İngiliz Matematikçi George Boole’in soyadından gelmektedir. Soyut matematiğin bir dalı olan Boole Cebiri (mantık cebiri), George Boole’nin mantıksal ifadelerle ilgili çalışmalarına ithaf edilmiştir.
2. Python’da İlişkisel Operatörler
Python’da ilişkisel operatörlere örnekler
3. “if ” İfadesi
Türkçede EĞER anlamına gelen if ifadesi, adından da anlaşılacağı üzere, bir koşula bağlı durumları kontrol etmek amacıyla kullanılır.
Burada koşul “true” değer alıyorsa yani koşul sağlanıyorsa blok kısmındaki ifadeler gerçekleşecektir. Eğer koşul “false” değer alıyorsa yani koşul sağlanmıyorsa blok kısmındaki ifadeler gerçekleşmeden program devam edecektir.
print(“Lütfen bölme için iki sayı giriniz.”)
bolum=int(input(“Lütfen bölme için ilk sayınızı giriniz:”)
bolen=int(input(“Lütfen bölme için ikinci sayınızı giriniz:”)
if bolen!=0:
print(bolum,”/”,bolen,”=”, bolum/bolen)
Ekran çıktısı aşağıdaki gibi olur:
Lütfen bölme için iki sayı giriniz.
Lütfen bölme için ilk sayınızı giriniz:32
Lütfen bölme için ikinci sayınızı giriniz:8
32/8=4.0
Başka değerler için test edecek olursak:
Lütfen bölme için iki sayı giriniz.
Lütfen bölme için ilk sayınızı giriniz:32
Lütfen bölme için ikinci sayınızı giriniz:0
4. “if/else” İfadesi
“if/else” ifadesi, “if ” ifadesi ile birlikte çalışır ve if koşullarının sağlanmadığı tüm durumları kapsar.
else, isteğe bağlı bir ifadedir ve if bloku ile birlikte sadece bir kez kullanılır.
print(“Lütfen bölme için iki sayı giriniz.”)
bolum=int(input(“Lütfen bölme için ilk sayınızı giriniz:”)
bolen=int(input(“Lütfen bölme için ikinci sayınızı giriniz:”)
if bolen!=0:
print(bolum,”/”,bolen,”=”, bolum/bolen)
else
print(“Sıfıra bölme işlemi yapılamaz.”)
Ekran Çıktısı
Lütfen bölme için iki sayı giriniz.
Lütfen bölme için ilk sayınızı giriniz:32
Lütfen bölme için ikinci sayınızı giriniz:0
Sıfıra bölme işlemi yapılamaz.
Örnek
# Ağacın boyunu sorgulayan program.
boy = input(“Ağacın boyu kaç cm? “)
if int(boy) > 150:
print (“Ağacın boyu uzun demek ki!”)
else:
print (“Ağacın boyu kısa”)
5. Birleşik Boolean İfadesi
Boolean ifadesi ile bir ilişkisel operatörle birleştirilerek daha karmaşık Boolean ifadeleri oluşturabilir. Bu tür durumlarda 3 farklı mantıksal operatörden yararlanılabilir: and, or ve not. Mantıksal operatörler aracılığı ile iki veya daha fazla Boolean ifadesinin kullanıldığı deyimlere Birleşik Boolean İfadeleri denir.
Mantıksal operatörlerden and ve or sola birleşmeli, not sağa birleşmelidir. Örneğin,
x <= y and x <= z ifadesi
(x <= y) and (x <= z) olarak işlem görür.
x = 10, y = 20 olarak veriliyor. Buna göre aşağıda verilen kod örneklerini inceleyiniz.
b = (x == 10) # b’ye True değerini atar.
b = (x != 10) # b’ye False değerini atar.
b = (x == 10 and y == 20) # b’ye True değerini atar.
b = (x != 10 and y == 20) # b’ye False değerini atar.
b = (x == 10 and y != 20) # b’ye False değerini atar.
b = (x != 10 and y != 20) # b’ye False değerini atar.
b = (x == 10 or y == 20) # b’ye True değerini atar.
b = (x != 10 or y == 20) # b’ye True değerini atar.
b = (x == 10 or y != 20) # b’ye True değerini atar.
b = (x != 10 or y != 20) # b’ye False değerini atar.
6. Pass İfadesi
Pass ifadesi Python’da herhangi bir işlem yapmadan geçeceğimiz durumlarda kullanılır. Kısaca “Hiçbir şey yapmadan yola devam et!” anlamı katar.
if x == 2:
print(x)
else:
pass # x 2’ye eşit değilse hiçbir şey yapma
if x == 2:
print(x) # yalnızca x 2’ye eşitse yazdır
7. Kayan Noktalı Eşitlik
Eşitlik operatörü (==) gerçek eşitlik olup olmadığını kontrol eder. Ancak kayan noktalı sayılarla işlem yaparken bu durum sorun oluşturabilir. Örneğin,
d1 = 1.11 – 1.10
d2 = 2.11 – 2.10
print(“d1 =”, d1, ” d2 =”, d2)
if d1 == d2:
print(“Aynı”)
else:
print(“Farklı”)
Normalde, matematiksel işlem yapıldığında aşağıdaki gibi bir eşitliğin olduğu görülür.
1.11 1.10 = 0.01 = 2.11 2.10
Ancak; bilgisayar sistemlerinde tüm işlemler bitler ( 0 ve 1 ) ile yapıldığından sayıların hafızadaki değerleri de bu şekilde tutulur. Kayan noktalı sayılar bilgisayar sisteminde ikilik tabanda karşılığı ve bunun köküst şeklinde temsil edilir. Bu sebepledir ki;
d1 = 0.010000000000000009
d2 = 0.009999999999999787
olduğu için, yazılan kod çalıştırıldığı zaman d1 ve d2’nin farklı olduğunu yazacaktır.
8. İç İçe Koşul İfadeleri
Karşılaştırma yapıları kullanırken bazı durumlarda istenilen koşulların birden fazla şarta aynı anda uyması istenebilir. Bu durumda koşul yapılarının birbirinin içinde kullanılması gerekir. Bu şekilde bir yapı kullanıldığında istenilen komut veya komut kümelerinin yapılması için iki koşul ifadesinin de True olması gerekir. Örneğin;
deger = int(input(“Lütfen 0….10 aralığında bir tam sayı giriniz: “)
if deger >= 0 and deger <= 10: # İkili koşul kontrolü
print(“aralıkta”)
print(“tamamlandı”)
yerine, her koşul ayrı olacak şekilde daha basit bir iç içe koşul yazılabilir.
deger = int(input(“Lütfen 0….10 aralığında bir tam sayı giriniz: “)
if deger >= 0: # İlk kontrol
if deger <= 10: # İkinci kontrol
print(“aralıkta”)
print(“tamamlandı”)
9. Çok Yönlü Karar İfadeleri
Basit if/else ifadesinde iki farklı koşul varken çok yönlü karar ifadelerinde daha fazla koşulun gerçekleşme durumuna göre işlem yapılır. Bunun için kod yazılırken iç içe if/else ifadeleri gerekir. Örneğin;
d eger = int(input(“Lütfen 0 yada 5 tam sayı değerlerinden birini girin: “))
if deger < 0:
print(“çok küçük”)
else:
if deger == 0:
print(“sıfır”)
else:
if deger == 1:
print(“bir”)
else:
if deger == 5:
print(“beş”)
else:
print(“çok büyük”)
print(“Tamamlandı”)
Python’da çok yönlü koşullu durumlar iç içe if ifadeleri yanında if/elif/else ifadesi ile birlikte de kullanılabilir. Elif ifadesi, else if ifadesinin kısaltmasıdır. Örneğin,
# Klavyeden girilen 0-5 arasındaki sayıların yazı karşılığını veren program
deger = int(input(“Lütfen 0 – 5 arasında bir değer girin: “))
if deger < 0:
print(“çok küçük”)
elif deger == 0:
print(“sıfır”)
elif deger == 1:
print(“bir”)
elif deger == 2:
print(“iki”)
elif deger == 3:
print(“üç”)
elif deger == 4:
print(“dört”)
elif deger == 5:
print(“beş”)
else:
print(“çok büyük”)
print(“Tamamlandı”)
Örnek
if 9 > 5:
print(“Evet, 9 5’ten büyük”)
if 9 != 5:
print(“Evet, 9 5’e eşit değildir”)
# Başka bir örnek
if not (10 == 4) and 9 > 5:
print(“Tabii ki, çok basit bir karşılaştırma bu”)
else:
print(“:(“)
10. Çok Yönlü ve Zincirleme Durum İfadeleri
İkiden fazla olasılığın olduğu durumlarda ikiden fazla dallanmaya (yol) gereksinim duyarız. Bu tür durumlarda zincirleme koşul ifadeleri kullanılır. Her koşul sırasıyla sınanır. İlki yanlış ise sonraki kontrol edilir ve yazılan kodun tamamı bu şekilde çalıştırılır. Koşullardan biri doğru ise ilgili dal yürütülür ve cümlenin işlevi biter. Eğer birden fazla koşul doğru ise sadece ilk karşılaşılan doğru dal çalışır.
Yukarıdaki problemde kullanıcının klavyeden “1” girmesi durumunda işletilecek şartlar belirtilmiştir. Çok Yönlü Koşullu Durum yapısında Kontrol 1 kısmına girilecek fakat şart sağlanmadığı için sonuç kısmına girilmeyecek ve Kontrol 2 kısmına girilecektir. Geçilen bu aşamada şart sağlandığı için print() komutu işletilecek ve diğer tüm kontrol satırları atlanacaktır. Böylece fazla koşul kontrollerinden kaçınılmış olacaktır. Ancak Zincirleme Durum ifadesinde tüm şartlar sırasıyla kontrol edilecek, şartı sağlayanlar için print() satırları yapılacaktır.
11. Koşullu İfadeler
Koşullu ifadelerin genel yapısı aşağıdaki gibidir.
Koşul doğru ise koşullu ifadenin sonucu birinci durumdur. Koşul, “if ” ifadesinde de görülebilen Boolean ifadesidir. Eğer koşul yanlış ise koşullu ifadenin sonucu ikinci durumdur.
n = int(input(“Bir sayı giriniz: “))
print(“|”, n, “| = “, (-n if n < 0 else n), sep=””)
Ekran Çıktısı
Bir sayı giriniz: -34
|-34| = 34
Bir sayı giriniz: 100
|100| = 100
Örnekte n değişkenine klavyeden giriş alınmış ve kullanıcı -34 değerini girmiştir. print() komutu ile ifade yazdırılırken koşullu ifade kullanılmış şart olarak n değişkeninin 0 ‘dan küçük durumu (if n < 0) kontrol edilmiştir. Şart doğru ise –n işlemi, yanlış ise n değeri yazdırılacaktır.
sep Parametresi : print() komutunda birden fazla değer yazdırılırken, yazdırılan ifadeler arasında istenilen bir karalter eklemek için sep parametresi kullanılır.
>>> print(“T”,”C”,sep=”.”)
T.C
11.1. Koşullu İfadelerde Hatalar
deger = int(input(“Lütfen 0 – 5 arasında bir değer girin: “))
cevap=”aralıkta değil” #Varsayılan Cevap
if deger == 0:
cevap=”Sıfır”
elif deger == 1:
cevap=”Bir”
elif deger == 2:
140
cevap=”iki”
elif deger == 3:
cevap=”üç”
elif deger == 4:
cevap=”dört”
elif deger == 5:
cevap=”beş”
print(“Girdiğiniz sayı”,cevap)
Ekran Çıktısı
Lütfen 0 – 5 arasında bir değer girin: 2
Girdiğiniz sayı iki
>>>
Lütfen 0 – 5 arasında bir değer girin: 8
Girdiğiniz sayı aralıkta değil
12. Mantık Karmaşası
Python, çok karmaşık durum/koşul ifadelerini oluşturmak için gerekli araçları sağlar. Ancak önemli olan, mantık karmaşasına yol açmadan kullanabilmektir. Boolean ifadeleri and ve not ile birlikte kullanılmak istendiğinde, karmaşık mantığa dayalı koşullar oluşturmamıza olanak sağlar. Örneğin aşağıda verilen 4 farklı Bollean ifade kodu çalıştırıldığı zaman aynı sonucu verecektir.
not (a == b and c != d)
not (a == b and not (c == d))
not (a == b) or not (c != d)
a != b or c == d
Ancak unutulmamalıdır ki;
Çalıştırılırken en verimli yöntem basit düzeydeki mantıksal ifadelerdir.
Basit düzeydeki mantıksal ifadeleri yazmak ve çalıştırmak daha kolaydır.
Basit düzeydeki mantıksal ifadeler, çalıştırılırken de en verimli yöntemdir.
Basit düzeydeki mantıksal ifadelerin değiştirilmesi, düzenlenmesi ve genişletilmesi de daha kolaydır.
Koşullu Durumlar konusu ile ilgili sunum dosyasına ve konu testine (yakında) aşağıdan ulaşabilirsiniz.