Döngüler ve Kontrol Yapıları

Hayat döngülerden oluşuyor demiş bir filozof. Sanırsam Mevlana’nın lafıydı. Bizde hayatımızdaki gereksiz ya da çok zaman alan döngüleri bilgisayarlara delege ettik. O yüzden ben, o ufacık tefecik mikroçipleri insanlığın bir yansıması olarak görüyorum. Her ne kadar aptal olsalar bile…(Aslında insanlarda çok aptal ama artık konuya giriş yapmak istiyorum)

Her döngü bir koşul ile başlar. Birden ona kadar saymak için bile bir döngüye ihtiyacımız var. Ve genelde sadece döngüler tek başına bir işe yaramazlar. O yüzden bir kaç kontrol yapısına ihtiyacımız var. Mesela if, else gibi.

şu andaki sayı = 1
döngü:
    eğer şu andaki sayı 10 dan büyükse:
        döngüden çık
    değilse:
        şu andaki sayıyı söyle
        şu andaki sayıyı bir arttır

Hadi bir tane çay yapma algoritması yazalım. Alfred diye bir robotumuz var ve söylediğimiz her şeyi harfi harfine yapacak diye varsayalım.

İlk tepkimiz, Alfred canım bana bir çay koysana olur.

Alfred’in cevabı ise kalkta kendin yap olmaz. Çünkü çayın ne demek olduğunu bile bilmiyor. O yüzden Bilal’e anlatır gibi anlatmak gerekli.

Önce Alfred’i mutfağa yollamamız gerekli. O yüzden önce mutfağa git fonksiyonunu tanımlamamız lazım.

int mutfaga_git() {
  if mutfağın yolunu biliyorsak
    mutfağa git.
    return 1; // Gidebiliyoruz
  else
    if mutfağın yolu bulunabiliyor
      mutfağa git
      return 1;
    else 
      hata ver
      return 0; // Gidemedik
}

Yazılımcıların en çok sevdiği kelimelerden biri “reusability” dir. Mesela mutfaga_git() fonksiyonunu çay yapmaktan daha fazla şeyler için kullanabiliriz. Kek, poğaça, börek vs.

Bir sonraki fonksiyonumuz da cay_demle() olsun.

Bu fonksiyonun içinde de sormamız gereken sorular;

  • Çay var mı?
  • Kap kacak var mı?
  • Kap kacak temiz mı?
  • Tüp var mı?
  • Ocak çalışıyor mu
  • vs.

Tüm bu kontrolleri yaptıktan sonra ve ocağın altını açtıktan sonra sormamız gereken soru;

  • Su kaynadı mı?
  • Su kaynadı mı?
  • Su kaynadı mı?
  • Su kaynadı mı?
  • Su kaynadı mı?
  • Su kaynadı mı?
  • Su kaynadı mı?
  • Su kaynadı mı?
  • Su kaynadı mı?
  • Su kaynadı mı?
  • Su kaynadı mı?
  • Su kaynadı mı?
  • Su kaynadı mı?

Tabi bozuk plak gibi bunları peşpeşe sormak yerine bir döngü yazıyoruz.

su_kaynadi = false
while !su kaynadı: # ! işareti su kaynadı ifadesini tersine çeviriyor. Yani su kaynamadıysa
   sleep(1)        # 1 saniye uyu
   su_kaynadi = suyu_kontrol_et()

print("Su kaynadı")

Su kaynadıktan sonra çayı demlememiz gerekli. Tabi çaydanlığın altına biraz daha su eklemeyi unutmamalıyız. Ve sonra;

  • Çay demlendi mi?
  • Çay demlendi mi?
  • Çay demlendi mi?
  • Çay demlendi mi?
  • Çay demlendi mi?
  • Çay demlendi mi?
  • Çay demlendi mi?
  • Çay demlendi mi?
  • Çay demlendi mi?

Yerine bir döngüye daha girip beklemeliyiz.

Demleme bayrağımız(flag) doğruya(true) dönünce çayı servis ederken soracağımız sorular;

  • Temiz bardak var mı?

Tüm bu adımları ve daha fazlasını tamamladıktan sonra mutfaktan_gel() fonksiyonu ile mutfağı terkedip sonunda çayımızı keyifle içebiliriz. Afiyet olsun.

Leave a Reply