1 Aralık 1987 Tarihli Commodore Gazetesi Sayfa 53

1 Aralık 1987 tarihli Commodore Gazetesi Sayfa 53
Metin içeriği (otomatik olarak oluşturulmuştur)

LOGO Ogrenıyoru () SAMET KUMAŞ Artık adet haline geldi: İki sayıda bir, işe bir önceki sayıda yeralan hataları düzeltmekle başlıyoruz. Üstelik bu seferki de nisbeten ciddi. Geçtiğimiz sayıda verdiğimiz ve güneş şeklini tasarla- mak için geliştirilmiş işlemle, istediğimizi elde edemeyiz. Daha doğrusu, bir güneş şekli elde ederiz ama bu, renkli olmaz. Sebebi basit. İşlem üzerinden ilk geçişte bilgisa- yar REPEAT 72 komutuna rastlayacak ve bunu izleyen komutların ise parantez içinde (PC :X4 1 DORTGEN RT 5) komutları ile karşılaşacaktır. PC'nin değerini | ar- tırdıktan sonra, 72 kere, parantezin dışına çıkmadan, onu izleyen işlemleri yerine getirecektir. Yani, DORTGEN'i 5'er derece sağa kaydırarak 72 kere çizecektir. Ondan sonra da parantezin dışına çıkacak ve END komutu ile karşılaşıp sona erecektir. Dolayısıyla, REPEAT 72 ko- mutuna rağmen, çizgilerimizin rengini belirleyen PC'nin değeri ancak | kere artırılmış olacaktır. Dolayısıyla da, alacağımızı söylediğimiz, PC DOESN'T LIKE 16 AS INPUT mesajını almayacağız. Kendi Üzerine Dönen Kaplumbağa Bu hata mesajını almak ve renkli bir güneş çizmeye, hiç değilse başlamak için, bütün diğer yapay zekâ dilleri ile birlikte LOGO dilinin de en önemli özelliği olan, “ken- di üzerine dönüşlülük” (recursivity) özelliğinden yarar- lanmamız gerekiyor. Başka bir deyişle, işlemimizin çalı- şırken kendi kendine gönderme yapması, yani kendi ken- dini çağırması gerekiyor. Şöyle, YO GUNES MAKE * ERARI DORTGEN RIT 5 GUNES END Burada ilk dörtgen çizilip, kaplumbağa 5 derece sağa döndükten sonra her şey yeniden başlayacak, dolayısıy- la da PC'nin değeri bir kere daha artırılacak, dörtgen bir kere daha çizilecek, kaplumbağa bir kere daha 5 derece sağa döndürülecek ve işlem yine kendi kendisini çağıra- cak ve ilh. (Kendi üzerine dönüşlülüğün mantığını daha iyi kavramak istiyorsanız, işlemi çalıştırmadan önce, TRACE yazın. LOGO size işlemin çalışmasının her ev- resini gösterecektir. Sıkıldığınızda da NOTRACE yazın.) İşlem kendi kendisini 15 kere çağırdığında :X'in değe- ri 1, dolayısıyla da PC'nin değeri 16 olacaktır. İşte bu noktada da LOGO size PC DOSEN'T LIKE 16 AS INPUT, yani PC girdi olarak 16'yı beğenmiyor, diyecek- Bu durumu düzeltmek için gereksindiğimiz koşullu ko- mutu nereye yazacağımız açık olmalı: (Karışıklık olma- sın diye bu düzeltilmiş işlemi GÜNES2 diye adlandıra- lım): TO GUNES2 IF :X—15 THEN MAKE “X 0 ELSE PC :X DORTGEN RI 5 GUNES END 54 Artık her şey tamam. Yalnız dikkatinizi çekmek iste- diğim bir nokta var. Farkındaysanız, daha önceki kusurlu versiyonumuzdaki 72 sayısını burada kullanmadık. Bu- nun bir sonucu, işlemimizin sona eriş koşulundan yok- sun kalmasıdır. Dolayısıyla, biz kendisini CTRL-G tuş- larına basarak durdurmadığımız takdirde, sonsuza dek sürüp gidecektir. Kuşkusuz bu durum, işlemin kendi ken- disini kaç kez çağıracağını belirleyecek bir sayaç değiş- keni kullanan bir koşullu komut ekleyerek giderilebilir. Bu geliştirmeyi size bırakarak, ikinci düzeltmemi ya- payım. Geçtiğimiz sayıda “eğer herhangi bir LOGO ko- mutu, parametre olarak sayısal bir değer alıyorsa, bir he- saplama da olabilir demiştim. Bunu derken, vallahi, el kitaplarının yalancısıydım. Ama o zamandan bu yana gördüm ki, bazı LOGO değişkenlerine, örneğin çizgile- rin rengini belirleyen PC değişkenine, her zaman hesap- lama yoluyla değer atfetmek mümkün olmuyor. Örne- ğin, etkileşimli tarzdayken PC 24 3 dediğinizde çizgile- rin rengini değiştirmeyi başarıyor, yeşil bir kaplumbağa elde ediyorsunuz. Ama aynı şeyi bir değişken kullana- rak yapmayı denerseniz, olmuyor. Yani önce MAKE “X 2 gibi bir komut verip, sonra PC :X 4-3 yazarsınız, hiç- bir şey olmuyor. Artık hangi değişkenlerin, ne zaman pa- rametre olarak hesaplama kabul ettiğini deneme yanıl- ma yoluyla bulacağız. Bir de, bir yazım ya da pikaj hatası olduğunu sandı- ğım bir hata var. “FD X komutunun sonucu, ““ değişke- nin (nesnesinin) X değerini almasıdır”” denmiş. Tabii de- gildir; kaplumbağanın X kadar ilerlemesidir. ““A değiş- kenine X değerini veren komut MAKE “A X'”'tir. Logo'da Aritmetik İşlemler Toplama, çıkarma, çarpma ve bölme gerektiren hesap- lamaların doğrudan doğruya bu işlemlerin işaretleri ta-

Bu sayıdan diğer sayfalar: