23 Nisan 2013 Salı

Koşul İfadeleri


Koşul ifadeleri, program yazarken en çok başvurulan ifadelerden biridir. Bazen program içerisinde iki veya daha fazla ifadenin karşılaştırılması gerekebilir. Bu durumdan dolayı bütün programlama dillerinde karşılaştırma deyimleri mevcuttur. Bunun için Python'da if-else-elif deyimleri kullanılır. Ancak bazı programlama dillerinde bulunan switch-case yapısı Python'da bulunmamaktadır.
Koşul ifadelerine başlamadan önce Python dilindeki önemli bazı noktalara değinmek gerekir. C/C++ gibi dillerde yazılmış kodlarda bloklar { } içinde bulunur; ancak Python'da bloklar için belli bir işaret yoktur. Bunun yerine satırlarda girintileme uygulanır. Girintileme yapısı Python için büyük önem taşımaktadır.
Örneğin;
# !/usr/bin/env python
# -*- coding: utf-8 -*-

a = 7
if a == 7:
    print ("Sayı 7'dir.")
şeklindeki kodu
# !/usr/bin/env python
# -*- coding: utf-8 -*-

a = 7
if a == 7:
print ("Sayı 7'dir.")
şeklinde yazamayız. Çalıştırılmak istendiğinde de hata verecektir. Girdi miktarının pek bir önemi yoktur; ancak program yazılırken bazı yerlerde "tab" tuşuna basarak, bazı yerlerde de "space" tuşuna basarak girinti vermek hatalara yol açabilir. Python IDE(Integreted Development Environment)'lerinin girinti için bıraktıkları sekme genişliği genellikle 4'tür. Kullanılan metin editörlerine sekme genişliği 4 olarak ayarlanabilir. Eğer yazılan kodlar birden fazla kişi tarafından düzenleniyorsa, ortak proje geliştiren kişilerin sekme ayarında belli bir kuralı benimsemeleri gerekir.


if Deyimi

"if" Türkçe'de "eğer" anlamına gelmektedir. Anlamından da anlaşıldığı gibi bu deyimle bir koşul belirtilir. 
if yapısının akış diyagramı aşağıdaki şekildeki gibidir.

Python programlama dilinde bir if deyiminin yazılışı;
if koşul:
    ifadeler
şeklindedir. 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.
Bir örnek verelim:
# !/usr/bin/env python
# -*- coding: utf-8 -*-

sayi = 7    # sayi diye bir değişken tanımlandı ve değeri 7
if sayi < 10:     # sayi, 10'dan küçük mü diye sorgulanmakta
    print ("Sayı 10'dan küçüktür.") # eğer sayi 10'dan küçükse ekrana "Sayı 10'dan küçüktür." yaz

elif Deyimi

Karşılaştırmalarda koşulların artması durumunda kullanacağımız terimlerden biri de elif deyimidir. elif deyimi, else if'in bir kısaltmasıdır.
Şöyle bir örnek üzerinden açıklamak gerekirse:
# !/usr/bin/env python
# -*- coding: utf-8 -*-

sayi = input ("Bir sayı giriniz:")

if sayi < 0:
    print ("Sayı 0'dan küçüktür.")
elif sayi == 10:
    print ("Sayı 10'dur.")
elif sayi > 5:
    print ("Sayı 5'ten büyüktür.")
elif sayi > 10:
    print ("Sayı 10'dan büyüktür.")
Bu kod çalıştırıldığında program koşulu sağlayan ilk ifadeyi bulduktan sonra blok kısmındaki işlemleri gerçekleştirecektir ve geriye kalan koşulları dikkate almayacaktır. Örneğin kullanıcı 10 girmişse çıktı şu şekilde olacaktır:
Sayı 10'dur.
Aynı kodu şu şekilde sadece if kullanarak yazsaydık:
# !/usr/bin/env python
# -*- coding: utf-8 -*-

sayi = input ("Bir sayı giriniz:")

if sayi < 0:
    print ("Sayı 0'dan küçüktür.")
if sayi == 10:
    print ("Sayı 10'dur.")
if sayi > 5:
    print ("Sayı 5'ten büyüktür.")
if sayi > 10:
    print ("Sayı 10'dan büyüktür.")
Bu durumda program bütün koşulları tek tek sorgulayacaktır. Kullanıcının yine 10 girdiğini varsayarak bu durumda da ekran çıktısı şu şekilde olurdu:
Sayı 10'dur.
Sayı 5'ten büyüktür.
Bu yüzden if-elif kullanımı önemlidir.

else Deyimi

else deyimi, if ve elif deyimleri ile kombine çalışır. else, if ve elif deyimlerindeki koşulların sağlanmadığı bütün durumları kapsar. else deyiminin akış diyagramı aşağıdaki şekildeki gibidir.

else deyimi isteğe bağlı bir ifadedir ve if-elif bloklarıyla birlikte sadece bir kez kullanılır.
Python dilinde else deyiminin yazılışı;
if koşul:
    ifadeler
else:
    ifadeler
şeklindedir. Koşul ifadeleri iç içe de kullanılabilir.
Bütün bu bahsettiklerimizi bir örnek üzerinde göstermek gerekirse:
# !/usr/bin/env python
# -*- coding: utf-8 -*-

sayi = input("Bir sayı giriniz:") # Kullanıcıdan bir sayı girmesi isteniyor

if sayi > 0:    # Girilen sayı 0'dan büyük ise
    print ("Sayı pozitiftir.")
    if sayi % 2 == 0:   # Sayı 0'dan büyük ve çift olması durumu
        print ("Sayı çifttir.")
    else:    # Sayı 0'dan büyük ve tek olması durumu
        print ("Sayı tektir.")
elif sayi < 0:    # Girilen sayı 0'dan küçük ise
    print ("Sayı negatiftir.")
else:     # Sayının 0 olma durumu (if ve elif durumlarının dışında kalan bütün durumlar)
    print ("Sayı sıfırdır.")

bool Deyimi

Şimdi de biraz bool kavramından bahsedelim. Nedir bu bool denilen şey?
Bilgisayar bilimi temelde 0 ve 1 değerleri üzerine kurulmuştur. Yani 0 değeri False(Yanlış), 1 değeri True(Doğru) demektir. Bu değerlere boolean değerler denir. Bu isim İngiliz matematikçi George Boole'dan dolayı verilmiştir.

Bool değerlerin büyük harfle başlamaları Python açısından önemlidir. Bu değerler karşılaştırma ifadeleri sonucunda oluşurlar. Bool değerler sadece doğruluk-yanlışlık sorgulaması yapmazlar. Bilgisayarda her şeyin bir bool değeri vardır.
Buraya kadar bahsettiklerimizi örneklerle gösterelim:
>>> bool(5)
True
>>> bool("Uygar")
True
>>> bool("    ")
True
>>> bool("")
False
>>> bool("0")
True
>>> bool(0)
False
Kodlarda da görüldüğü gibi 0 sayısı ve boş karakter dizisi False'tur. Geriye kalan her şey True olur.
NOT: Burada ("0") bir string, (0) ise bir integer değerdir.

ALIŞTIRMALAR için tıklayınız...


17 yorum :

  1. 5'Lik sayi sistemi belirtirken ufak bir hata yapmişsiniz:
    70-89->4; değil 70-84->4; dür..

    YanıtlaSil
  2. Düzeltildi. Çok teşekkürler.

    YanıtlaSil
  3. soruların cevabıda olsa cok ıy olurdu tesekkurler

    YanıtlaSil
  4. soruların cevabına nasıl ulaşabiliriz

    YanıtlaSil
  5. İstekleriniz üzerine soruların cevapları eklenecektir.

    YanıtlaSil
  6. Soruları cevapladım cemaat :)

    YanıtlaSil
  7. bazı sorularım olacaktı yardımcı olabılir misiniz ?

    YanıtlaSil
  8. 1. cp1354.... filan bu kod neye göre belirleniyo hep aynı mı ne işe yarıyo ?
    2. mesela ben ad = raw_input("naber?: ") yazıp enter a basınca hemen alt satırda naber?: yazıyo sizinki gibi yazmaya devam edemiyorum, bu ne demek oluyor?
    hemen cevaplayabilirseniz çok sevinirim. teşekkürler.

    YanıtlaSil
    Yanıtlar
    1. Sen direk pyhton.exe yi çalıştırıyorsun.O bir komut yazıp hemen cevabını almak için.Bir programcık yazmak istiyorsan IDLE yi açmak gerekiyor.Ha nasıl açarım dersen biraz amatörce olarak ama ben şöyle açmayı başardım :

      1)Yeni Metin Belgesi oluştur.
      2)Metin Belgesini aç içine a yaz Farklı Kaydet yap.
      3)Dosya türünü Tüm dosyalar yap.
      4)Dosya ismini a.py yap ve kaydet.
      5)Oluşan dosyaya sağ tıkla ve Edit with IDLE yazısına tıkla.
      6)Tebrikler.Nihayet IDLE'ye erişebildin.CTRL+N yaparak temiz bir sayfaya geçebilirsin.

      Sil
    2. shell i ac ordan new files de ne sitersen yaz

      Sil
  9. Anlayamıyorum, input terimi tehlikelidir diyorsunuz ama örneklerin hepsi input ile. saçma değilmi, site çok hoş ama şöyle tuhaf detayla kafa karıştırıyor. hala raw_input la yazmaya calısıyorum verdiginiz ornekleri...

    YanıtlaSil
    Yanıtlar
    1. Bu tür uyarıları yapmak bize, hangi komutla girdileri alacağınız ise size bağlı bir olaydır. Örnek bazında hangi komutla alındığı çok da bir önem arz etmemektedir. Her yiğidin bir yoğurt yiyişe vardır unutmayalım ;)

      Sil
    2. Gösterdiğiniz gibi input ile yazınca program çalışıyor fakat raw_input yazdığımda program hata veriyor bunu nasıl aşabilirim ?

      Sil
    3. değer int ise değişkenin başına yazdırmadan önce int ekle

      Sil
  10. # !/usr/bin/env python
    # -*- coding: cp1254 -*-
    sifre = input("şifre giriniz: ")
    if sifre == 1983:
    print("şifre doğru")
    else sifre != 1983
    print ("şifre hatalı")

    bu kod neden hata verdi acaba

    YanıtlaSil
    Yanıtlar
    1. else komut yazılmaz

      Sil
    2. Else dedikten sonra ayni seyi yazmana gerek yok else yaz : koy yeter ve else ve printten sonraki satirda boslul birak
      Normal kodu atiyorum
      if sifre ==1983:
      print("sifre dogru")
      else:
      print("sifre hatali")

      Sil