## 12. If Eğer Reeborg kendi kendine karar verebilseydi...

if, if ...

Bir dakika! Reeborg bazı kararlar alabilir. Bunu size söylememiş miydim?

### İlk kararlar

Doğruyu söylemek gerekirse Reeborg'un karar vermek için biraz yardıma ihtiyacı var: neye karar vereceğini belirlemek için ona seçenekler sunmalısınız. Örneğin, Reeborg bir bip'in yanında olduğunda bip'i almasını aşağıdaki kodla sağlayabilirsiniz:

    if next_to_a_beeper():
        pick_beeper()

Yukarıdaki kodun ne anlama geldiğini açıklayalım:

- Python komutu if Reeborg'a bir koşul olduğunu söyler; koşul `True`(doğru) ya da `False`(yanlış) değerini alır.
- `next_to_a_beeper()` bir koşuldur (veya testtir de diyebiliriz) ve eğer Reeborg bir bip ile aynı pozisyonda ise `True` (doğru) farklı pozisyonda ise `False`(yanlış) değerini alacaktır.
- İki nokta üst üste (:) den sonra içe girik olarak yazılan kodlar eğer koşul `True` (doğru) ise yerine getirilecektir.

Bu açıklamayı okuduğunuzda biraz karışık gibi gözükebilir, ancak if yapısını kullanmak oldukça kolaydır. Basit bir örnekle açıklamaya çalışalım. Reeborg'a 9 adım attırmak istediğimizi ve adımlarını atarken yolunun üstündeki bipleride toplamasını istediğimizi düşünelim. (Bir pozisyonda en çok bir bip olduğunu varsayıyoruz) Mesela başlangıç pozisyonu aşağıdaki gibi olsun:

ve tamamladığında pozisyonunun aşağıdaki gibi olmasını istediğimizi varsayalım.

Yani Reeborgtan şunu yapmasını istiyoruz:

- Bir adım ileriye at;
- Bir bip olup olmadığını kontrol et;
- Eğer bip varsa onu al; yoksa yoluna devam et;

bunu 9 kere tekrarla. Eğer Reeborg'a bip bulunmayan bir yerdeyken bip'i almasını isterseniz bir hata ile karşılaştığınızı unutmayın! Bunu şu şekilde yaptırabiliriz:

    def move_and_pick():
        move()
        if next_to_a_beeper():
            pick_beeper()

    repeat(move_and_pick, 9)
    turn_off()

Bunu deneyin!

### Hasat zamanı Tekrar!

Yine hasat zamanı. Ama bu defa bazı havuçlar eksik. Reeborg'un bahçesindeki tüm havuçları toplamasını sağlayın. Dünya dosyası harvest3.wld. Bundan iki önce yaptığınız hasat zamanı alıştırmasına bakın. Değiştirmeniz gereken tek şey `harvest_one_row()` tanımlamasını yukarıdaki `move_and_pick()` tanımlamasına benzetmek olacaktır. Ancak, başka değişikliğede ihtiyacınız olabilir. [Örneğin benim hasat zamanı problemi çözümümde, `pick_and_move()`tanımlaması yaptım ve bir kaç küçük değişiklik gerekli oldu.]

Yeni yazdığınız program harvest1.wld dosyası ile de çalışmalıdır, deneyin.

Tekrardan kaçının, tekrar! - - Beni dinle yoksa ... or else ....