Bu sayfadaki yazılar
Sayfanın metni
Sayfa 57
"AFIF SAY” "12
Şimdi akla şöyle bir soru geliyor: LOGO işlediği bütün değerleri bir sözcük olarak mı işler? Sözcüklerden başka bir değer tanımaz mı? Bu soruyu yanıtlamak için LOGO'nun diğer yapay zekâ dilleriyle de paylaştığı en önemli özelliği olan liste kavramına girmemiz gerekiyor. İşlerin karıştığı nokta da burası... Çünkü deminden beri bir sürü yorum yaptık durduk; işlemlerle nesneler, nesnelerle içerikleri arasında. Oysa bunların hepsi bir listenin unsurları olabilir. Kısacası, liste belli bir sıra içinde dizilmiş herhangi bazı LOGO terimlerinden oluşur. Belki de kavramı açıklamanın en iyi yolu bazı örnekler vermek olacak. En basitinden başlayalım:
TURHAN SEMRA)|
Görüldüğü gibi listelerin köşeli parantez içine alınarak belirtilmesi gerekiyor. Yukarıda liste üç sözcükten oluşmuş. Ancak aşağıdaki örnekte görüldüğü gibi, herhangi bir listenin maddeleri arasında başka bir liste ya da listeler de bulunabilir:
İRENKLER |SARI YESİL KIRMIZI MAVI) SEKİLLER |UCGEN KARE
Karşılıklı köşeli parantezler her bir listenin kaplamını (scope) gösteriyor. Yukardaki örnekte en dış listenin dört maddesi var. Bu maddelerden ikinci ve dördüncüleri de birer liste. Bu örneğin de gösterdiği gibi bir listenin maddelerinin türdeş olması gerekmiyor. Örneğin,
(ILETISIM 520-14-53 TELETEKNIK 145-13-30)
bir telefon rehberi işlevi görecek güzel bir liste örneği olabilir. Bu noktada daha önce de liste örnekleri ile karşılaşmış olduğunuzu düşünmeye başlayabilirsiniz. Haklısınız da... Daha ilk bölümde yazmış olduğumuz bir LOGO işlemini hatırlayalım.
REPEAT 4 (FORWARD 50 LEFT 90)
Burada köşeli parantezler arasında kalan kısım bir listedir. İki komut ve iki sayısal değerden oluşan bir liste... Ama bu söyleyiş tarzı aslında yanıltıcı. Çünkü komut ve sayısal değerlerin sırası bu örnekte ve genel olarak RE-PEAT komutlarında çok önemlidir (her zaman önemli olmayabilirler). Aşağıdaki iki işlemi karşılaştırırsak, bu sıranın önemini daha iyi anlayabiliriz:
REPEAT 4 (FORWARD 50 RIGHT 90) REPEAT 4 (RIGHT 90 FORWARD 50)
Her iki işlemin sonucunda da ortaya bir kare çıktı. Ama farklı yönlerde...
E Hİ
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 56
DR. AFİF NEZİHİ SAY
Ortalık karışmadan önce, şimdiye kadar kapsamış olduklarımızı kısaca bir hatırlayalım: LOGO dilinde kullanılan her terim ya bir işleme (procedure) ya da bir nesneye (object) işaret eder. kasıt diğer dillerde “değişken” adıyla bildiğimiz şey. Ama sizi LOGO'- yu öğrenirken diğer dillerin mantığının pek yararlı olmayacağı konusunda da uyarmıştık. LOGO'da sayısal dediğerleri, hatta değişkenlerle parametreler arasında bir fark gözetilmez; hepsinden aynı şekilde söz edilir. Şimdi de hangi tür terimin neye karşılık geldiğini tekrarlayalım: Eğer herhangi bir terimi yalın halinde, yani önüne hiçbir işaret koymaksızın kullanırsanız, LOGO bunu bir işlemin adı, yani bir komut olarak yorumlar. Diyelim ki kullandığımız terim AFIF. Eğer daha önce bu ad altında bir işlem tanımlamıştıysanız, LOGO bu terimle karşılaştığında işlemi yerine getirecektir. Yoksa,
THERE IS NO PROCEDURE NAMED AFIF diye bir hata mesajı verecektir. Eğer kullandığımız terimden önce bir “işareti kullanırsak, LOGO bu terimi bir nesnenin (değişkenin) adı olarak yorumlayacaktır. Aynı nesnenin içeriğine ulaşmak istiyorsak, yani doğrudan doğruya bir değerden söz etmek istiyorsak, bu kez terimin başına bir : işareti koymamız gerekiyor. Örneğin “AFIF yazdığımız takdirde, LOGO bir nesne adı olarak yorumladığı bu terim karşısında hiçbir şey yapmayacak, yalnızca nesnenin adını yankılayacaktır. Yani bize
AFIF diyecektir. Eğer AFIF nesnesinin içeriğine, yani AFIF'- in taşıdığı değere ulaşmak istiyorsak, bu kez :AFIF yazmamız gerekiyor. Ama bu takdirde de, LOGO bize
THERE IS NO NAME AFIF hata mesajını verecektir. Ne oldu? Hiç, sadece henüz AFIF nesnesi ile bir değeri eleştirmemiş olduğumuz için, LOGO AFIP'i tanımıyor. Bunu yapmamızı, herhangi bir nesneye değer vermemizi mümkün kılan komut (işlem) ise MAKE.
MAKE iki parametre alır; bunlardan birincisi değer verilecek nesnenin adı, ikincisi de nesnenin alacağı değerdir. Eğer bu nesnenin taşıyacağı değerin bir sözcük, yani bir karakter zinciri olmasını istiyorsak, o zaman bu sözcüğün de başına “işaretini koymamız gerekiyor. Eğer nesnenin içermesini istediğimiz değer sayısalsa, o zaman sayının kendisini yazmamız yetiyor. Yani,
MAKE “AFIF” BECERİKLİ
diye yazdığımız takdirde, artık AFIF nesnesi, BECERİK-Lİ değerini taşıyacaktır. Bu yüzden, şimdi :AFIF yazdığımız takdirde, LOGO bize diyecektir. Keza, MAKE “AFIF 20 komutundan sonra, :AFIF teriminin cevabı 20 olacaktır. SÖZCÜKLERDEN LİSTELERE
Nesnelerin içeriklerinin sayısal ya da karakter olabileceğini gördük. Ancak şimdiye kadar gördi içeriklerin ortak bir özelliği var: Hepsi de tek bir sözcük uzunluğundaki içerikler. Yani LOGO sayıları da birer sözcük olarak yorumluyor. Bu yüzden bundan sonra nesnelerin içeriğinden söz ederken genel olarak “sözcük” terimini kullanacağız. Bir sözcük, aralarında boşluk bulunmayan herhangi bir (sayısal ya da değil) karakterler dizisidir. Bazı örnekler:
28 3.1476 ÇEKOSLOVAKYALILAŞTIRAMADIKLARI-MIZDANMISINIZ? BEN 12 EYLUL
Peki, ya benim sözcüğüm boşluk da içersin diyorsak, ne yapacağız? O zaman da (tek tırnak) işareti kullanmamız gerekiyor. Aşağıdaki örnekler de birer sözcüktür: