## 24. Reeborg'a toplama yapmayı öğretmek

Bu derste Reeborg'a iki sayıyı toplamayı öğreteceğiz. Bunu 10 tabanına göre yapacağız, ancak aynı yöntemi farklı tabandaki sayıları toplamak için de kullanabiliriz.

### Isınma turları

1. Reeborg' a 3+2 işlemini aşağıdaki gibi yaptıran bir program yazınız.
   Bu programın 1+4 işlemini de yapmasını sağlayın.
2. Programınızı aşağıda olduğu gibi 13+22 işlemini de yapar hale getirin.
3. Hem 3+2' yi hem de aşağıdaki gibi 8+4'ü toplayan bir program yazabilir misiniz.

   Yeni programınız 2+5 ve 9+9 işlemini de doğru olarak yapmalı. Yapabildiniz mi? Yapamadıysanız cesaretinizi kaybetmeyin okumaya devam edin.

### Toplamayı gözden geçirelim

İki rakamı geleneksel yolla toplayalım:

      528
    + 634
    ------
       12  # önce birler basamağını topluyoruz (8+4)

Elde bir var ve bunu onlar basamağına eklememiz gerekiyor. Eldeki bir programınızda problem yaratan kısım olabilir. Bunu yine geleneksel şekilde yazalım ve devam edelim.

       1
      528
    + 634
    ------
     1162

Biraz özet oldu, ama anlaşıldığından eminim. Reeborg'un dünyasında aşağıdaki gibi toplamalar yapacağız.

Önce basit bir problem olan 8+4 ile başlayalım.

### 10 tabanında 8+4 işlemi

Uyarı: Aşağıdaki alıştırma biraz zor olabilir.Dersin geri kalanını okuyun ve alıştırmayı yapıp yapmamaya, ya da biraz daha Python öğrenmeye (Python bilginizi biraz daha geli ş tirmeye) siz karar verin.

Bahsettiğimiz gibi, her bir bip kümesi bir basamağı temsil ederken toplama yapıldığında (10 tabanında) problem toplamın 9'dan büyük olmasıdır. Toplanan sayılara bağımlı kalmaksızın, bir şekilde bu sihirli sayı (10) takip edilmelidir. 10 tabanında (veya 16 tabanında) kapasitede bir dünya dosyası (adding_world.wld) yarattım. Bu dosyayı yükleyin, size toplama yapmayı sağlayan bir program yazmanıza yardım edeceğim.

Dosyayı yükledikten sonra durum çubuğuna bakarsanız Reeborg'un 8 tane bip taşıdığını göreceksiniz. Reeborg'un aşağıdaki şekildeki gibi 8 tane bip'i 10. caddeye bırakmasını sağlayan bir program yazın. (programın çalışması bittikten sonra, ok tuşlarını kullanarak Reeborg'un yerini değiştirdim, böylece Reeborg'u en son bıraktığı bip'in üzerinden almış oldum ve aşağıdaki görüntü oluştu)

Şimdi, daha ileriye gitmeden, programınızı kaydedin.
Dünya dosyasını tekrar yükleyin (Böylece Reeborg başlangıç pozisyonunda [1.cadde ile 1. sokağın kesişiminde] olsun ve boş bir dünyası olsun) ve aşağıdaki şekilde olduğu gibi sağ alt köşeye bipleri yerleştirin. (Reeborg hala başlangıç pozisyonunda).

Reeborg'a aşağıdakileri yaptırın:

1. 10. caddeye daha önceden olduğu gibi bipleri yerleştirin.
2. Ekranın sağ altına gidin, ve bipleri (8 ve 4) alın.
3. Elinizdeki 12 bip'i aşağıdaki şekilde olduğu gibi dikey bir kolon şeklinde yerleştirin.

Şimdi 10. caddenin yukarısında iki tane bip var, 10. caddede ise ekstra bir bip var. Yapmanız gereken ise:

1. 10. caddenin altındaki 9 bip'i almak ve bir yerlere atmak (belkide bunlar ı 10. caddeye b ı rakarak) bunu a ş ağı daki ad ı mlar ı yerine getirerek yapabilirsiniz:
   1. bir bip al
   2. ba ş ka alacak bir bip olup olmad ığı n ı kontrol et, e ğ er yoksa
   3. birden fazla bip alacak bir k öş eye gelinceye kadar hareketini devam ettir...
   birden fazla say ı da bip al ı nabilecek bir k öş eye geldi ğ inde 10. caddeye gelmi ş olursun. Bu k öş eye t ü m biplerini b ı rakabilirsin.

2. Reeborg'un kuzeye do ğ ru gitmesini, (kalan iki bip'i almas ı n ı) ve a ş a ğı daki ş ekilde oldu ğ u gibi 13. caddeye gelmesini sa ğ lay ı n:

3. Reeborg'u geriye d ö nd ü r ü n ve 10. caddeden bir bip almasını ve dokuzuncu caddeye gelmesini sağlayın, bunu yaptırdığınızda Reeborg’un cebinde 3 tane bip'i olmalı.

4. Reeborg'un bu bipleri a ş a ğı daki duvara ula şı ncaya kadar ta şı mas ı n ı sa ğ lay ı n;

5. Reeborg'un ta şı d ığı 3 bip' buraya b ı rakmas ı n ı, daha sonra bunlardan birisini almas ı n ı(elde var bir), do ğ uya gitmesini ve ta şı d ığı bip'i buraya b ı rakmas ı n ı sa ğ lay ı n.

Geriye kalan tek ş ey i ş lemin sonucunun g ö z ü kebilmesi i ç in Reeborg'u kenara ç ekmektir.

Bu beş adımı yerine getirmek için oldukça fazla kod yazmanız gerekecek ve bunu doğru olarak yapmakta biraz zorlanabilirsiniz. Ancak sistemli olarak ilerlerseniz başaracağınızdan eminim. Deneyin!

### 3+5 Toplama İşlemi

Sonunda 8+4 işlemini hesaplayabilen bir program yazdınız. Aynı programı 3+5 işleminde deneyin. Çalıştı mı? Çalışmamışdır, çünkü bu işlemde elde yok. Buna bir çare bulabilir misiniz? Belkide yalnızca şu ana dek öğrendiğiniz komutları kullanıyorsunuzdur... Benim çözümümde henüz görmediğiniz break komutunu kullanmam gerekti.

### Son aşama

Eğer 10 tabanı dışındaki tabanlarda da toplama yapmayı biliyorsanız, programınızda gerekli değişiklikleri yaparak farklı tabanlarda da toplamı işlemi yaptırabilirsiniz.

### Sırada ne var?

Şimdiye kadar gördüğümüz Python komutları: def, elif, else, if, not, pass, while. Reeborg'a iki sayıyı toplatabilen oldukça komplike bir program yazarak bu bölümü bitirdik. Şimdi Reeborg'u bırakacağız ve gerçek Python'da iki sayının nasıl toplanabileceğini göreceğiz. Üzülmeyin, arada sırada Reeborg'un dünyasına geri döneceğiz ve artan Python bilgimizin Reeborg'a nasıl yardım ettiğini göreceğiz.

Fırtına sonrası - - Python toplama yapmayı zaten biliyordu.