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.
    3+2lead to 5
    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.
    13+22lead to 35
  3. Hem 3+2' yi hem de aşağıdaki gibi 8+4'ü toplayan bir program yazabilir misiniz.

    8+4lead to 12


    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.

adding startlead to adding end

Ö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)

line of beepers accross 10th street

Ş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).

8+4

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.

8+4 spread vertically

Ş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:

    8+4

  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.



8+4

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.

previousFırtına sonrası - home - Python toplama yapmayı zaten biliyordu.next