05. Karar Verme

Karar verme, programın yürütülmesi sırasında ortaya çıkan koşulların öngörülmesi ve koşullara göre yapılan eylemlerin belirlenmesidir. Karar yapıları, sonuç olarak TRUE veya FALSE üreten çoklu ifadeleri değerlendirir. Eğer sonuç TRUE veya FALSE ise, hangi eylemin gerçekleştirileceğini ve hangi ifadelerin uygulanacağını belirlemelisiniz. 

Örnek bir karar verme akış şeması aşağıdaki gibidir.

Python programlama dili, sıfır olmayan ve null olmayan değerleri TRUE olarak kabul eder ve eğer sıfır ya da null ise FALSE değeri olarak kabul edilir.

5.1. IF kullanımı

If ifadesi, hangi verilerin karşılaştırıldığını kullanan bir mantıksal ifade içerir ve karşılaştırmanın sonucuna göre bir karar verilir. Sözdizimi:

Karşılaştırma kısmı Boolean (Yani True veya False) bir değer olması gerekir. Eğer bu değer True ise if ifadesinin içindeki ifade(ler) bloğu yürütülür. Eğer boolean ifadesi False olarak değerlendirilirse, if ifadelerinin / cümlelerinin sona ermesinden sonraki ilk kod kümesi uygulanır.

Python sayısal değerlere göre True veya False döndürebilir. Eğer “0”-sıfır değerine sahip ise değişken False, aksi takdirde True döndürür. Örneğin,

5.2. IF … ELSE kullanımı

Bu ifadede, if ifadesindeki koşullu ifade 0’a veya bir FALSE değerine dönüştüğünde yürüten kod bloğunu içerir. Diğer bir deyim isteğe bağlı bir ifadedir ve aşağıdakilerden en az bir tane daha olabilir. Sözdizimi:

Bir önceki örneğimize else bölümlerini ekleyelim.

5.3. ELIF Kullanımı

elif deyimi, TRUE için birden çok ifadeyi kontrol etmenize ve koşullardan biri TRUE olarak değerlendirildiğinde, bir kod bloğu yürütmenize olanak tanır. elif kullanımı aslında önemlidir. Şu olmuyorsa, şunu kontrol et, o da olmuyorsa şunu kontrol et şeklinde çok ifadeyi kontrol etmemizi sağlar. Sözdizimi:

n tane karşılaştırma yazabiliriz. else ifadesi ise hiçbir durum gerçekleşmediğinde çalışan bölümdür. Örneğin:

Yukarıdaki örnekte 3 karşılaştırma yapıldı. Peki daha az karşılaştırma yaparak “Bye!” yazısına ulaşabilir miyiz? Tabii ki var == 100 kontrolünü ilk if şartı içine yazarsak bu olur. Programımıza az da olsa bir performans artışı sağlar. Peki gerçek hayatta buna nasıl karar vereceğiz? Gerçek hayatta hangi karşılaştırmanın fazla yapıldığını bilmemiz gerekir. Örneğin 4 kullanıcı tiplerimiz olsun. Aşağıda gibi bunların bir günde kaç defa kontrolden geçtikleri bilgisi olsun.

Kul_1 = 100, Kul_2=5, Kul_3=800, Kul_4=150

Bu tür bilgiye göre Kul_3 günde 800 defa kontrol satırı çalışır. Sırasıyla kontrol yaparsanız (Kul_1…4) 800 kontrolü hem Kul_1 hem de Kul_2 için yapmış olursunuz. Bu durumda 1600 gereksiz kontrol işlemi olur. Bunu en kolay azaltmanın yolu Kul_3, Kul_4, Kul_1,Kul_2 şeklinde bir kontrol sıralaması yapmaktır. Ancak, sistem hakkında bilgimiz olması gerektiğini unutmayın.

5.4. İçiçe IF kullanımı

Bir koşulu altında farklı koşul veya koşullar olabilir. Böyle bir durumda, iç içe geçmiş yapısını kullanabilirsiniz. İç içe geçmiş bir yapıda, if … elif … else kullanılabilir. Sözdimi:

Örneğin:

Buradaki hiyerarşinin kurulması geliştiricinin işidir. Bu hiyerarşideki kontrol sayısının azaltılması ile de ufak bir  performans artışı sağlanabilir.

5.5. Tek satırlık ifade

C, C#, Java, Javascript gibi programlama dillerinde tek satırlık bir ifade var ise süslü parantez “{ }” kullanmaya gerek yoktu. Python’da parantez kavramı yoktur. Ancak tek satırlık kodların direkt if ifadesinin yanına yazılmasını destekler. Örneğin: