Bu sayfadaki yazılar
Sayfanın metni
Sayfa 5
IF THEN -160TO Sz8 DAL, <4) PROC MOVE MENT ANA OYAK) THEN PRİNT ANI T JUNCTTON İF 3>2 THEN CALL MATN TF THEN İF OR THEN Nz MOVE MENT 1F THEN İF OR Dz MOVE MENT İF THEN IF THEN CALL MOVE MENT
5-04 THEN END PROC HAP HAP BULDUM İSTE... OTU &58 HAFIZA YETERLİ DEĞİLİ *4*:60 TO 658 VERİLEN SİSTEMİN COZÜMÜ YÖKT ke” CENTRE ATCO,O)CS:REPEATİGET OSTUNTI
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 4
dır. Rekürsif programlar, değişen durumlara uyum sağlamak amacıyla değişik parametrelerle kendini çağırma yeteneğine sahiptirler. Recursion, özellikle Yapay Zeka (Artificial Intelligence) çalışmalarında büyük kullanım alanına sahiptir. Bu konuda daha çok bilgi edinmek isteyenler 10. sayıdaki Sayın Ayhan Kalaylıoğlu'nun yazısına başvurabilirler. Programın çalışma biçimi ise yukarıda açıklanan robot örneğinde olduğu gibidir. Bir tek farkla, yukarıda başlangıç noktası referans noktası olarak alınmaktaydı, programda ise buna gerek yok, çünkü cursor'un ekran koordinatlarını zaten bilmeyiz. Aynı şekilde gidilen yöne göre x ve y değişkenleri azaltılmakta veya çoğaltılmaktadır. Herhangi bir yol ayrımına gelindiği zaman x ve y koordinatları bir yığında (Stack) saklanmakta ve bu yığının göstergeci bir arttırılmaktadır.
Bundan sonra, bu kavşaktan yola devam etmek için, daha önce belirlenmiş bir düzene göre bir yön seçilerek o yöne ait flag ve yığından silinir. Kavşağa yaklaşırken gelinen yönün ters yönü yığına en son yerleştirilir ve bu yöne ait flag yığından hiçbir zaman silinmez. Çünkü bütün olası olasılıklar değerlendirilip dikten sonra çıkış bulunamayabilir ve o zaman yapılacak tek şey geldiğimiz yerden geri dönmektir. Bu şekilde yol alırken herhangi bir nedenle daha önce varılan bir kavşağa gelindiğinde ise bu yeni bir olasılık olarak değerlendirilmemekte (öyle olmak zorunda, çünkü aksi halde belirli bir yerde durmadan dolaşılacak) tersine yığın göstergeci daha önce gelinen o kavşağın numarasına eşitlenerek o kavşaktaki diğer olasılıklar araştırılmaktadır. Bu yöntemle ekran üzerinde dolaşan sembolik robotumuz deneme-yanılma metoduyla sonuca varmaktadır. Bu şekilde kurulan bir rekürsif düzenin, örneğin ekranda bir bölgeyi boya gibi değerlendirmek için kullanılan sistemden bazı farklılıklar vardır. Çünkü şekli boyayan program, şeklin sınırları veya daha önce aynı renge boyadığı bir alan ile karşılaştığı zaman hemen bir önceki yol ayrımına atlar ve boyamadığı yerleri boyamaya devam eder. Bu şekilde çalışan programlar hızlı olmalarına rağmen sonuca sadece teorik olarak yaklaşırlar. Bunun problemi ise, bu program yardımıyla, bir labirent içinde yolunu bulmaya çalışan duyargalarla dolu bir robotu kontrol etmeye çalıştığımızda karşımıza çıkar. Robotumuzu duvarların üzerinden atlatamayacağımıza göre ona çıkış yolunu bulamadığı bir yerden geri dönmesini öğretmeliyiz.
Şimdi de programı nasıl kullanacağınızı açıklayalım. Programı çalıştırdığınız zaman ilk önce karşınıza labirenti dizayn edeceğiniz ekran çıkacaktır. Labirentinizi 23 satır ve 38 sütun genişliğinde bir alan üzerinde dizayn edebilirsiniz. Dizayn işinde kullanacağınız tuşların anlamları ise aşağıda verilmiştir.
S: Başlangıç noktası
Space : Boşluk açmak için.
F: Açılan boşluğu tekrar doldurmak için.
Kursor Tuşları:
Kursoru istediğiniz noktaya götürmek için:
E: Bitiş noktası
P: Ekranın kopyasını yazıcıdan almak için.
Bitiş noktası E harfi ile bitirildikten sonra (tabii daha önce başlangıç noktasını belirtmelisiniz) program çözüme başlayacaktır. Çözüm sırasında robotumuzun hareketlerini ve gittiği yerlerde çözümü belirtmek için bıraktığı izleri ekranda aynı anda görebilirsiniz. Labirentin çözümü yok veya çözüm için bellek yetmiyor ise bilgisayar sizi uyaracaktır. Eğer kurduğunuz düzende çok fazla sayıda genişliği bir kareden fazla olan yollar var ise belleğin yetmemesi durumu ortaya çıkar.
Son olarak, ekranın altında geçen gösterilenleri belirterek yazımızı noktalayalım.
(Hector'un kullandığı algoritmayı hiç görmemiş ama şüphesiz bizimki onun yanında çok mütevazı kalırdı.)