1 Aralık 1986 Tarihli Commodore Gazetesi Sayfa 23

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

cak olan rekursif altprogramın dizay- nıdır. Şimdi programımızı kaba hatların- dan başlayıp ince detaylara doğru adım adım gerçekleştirelim. Programımız rekursif olacak. Peki ne zaman kendi kendini çağıracak? Tabii ki yol birkaç ihtimalli olduğun- da koordinatları yığında saklayıp ih- timallerden birini seçip o yönde işle- min devam etmesi için kendi kendini çağıracak. Bundan başka altprogra- mımızın düz yolları kendi başına hal- letmesi ayrıca tercih edilen bir unsur. Peki... Yol tıkanınca ne olacak? Bu sorunun cevabı da oldukça ba- sit: Yolun tıkanması kaçınılmaz bir olay. Yol tıkanınca yeni ihtimaller de- nenmeli. Yani yolun tıkandığı bir üst seviyedeki programa bildirilmeli ve ye- ni bir ihtimali seçmesi sağlanmalı. Zaten altprogramın işlemesi birkaç derinlikten sonra ele alındığında bir altprogramın bildirebileceği olaylar iki ihtimallidir. Bunlar “yol tıkandı"' ve “çözüm bulundu"'dan başkası değil- ler. Bunları *sıfır' ve *bir'” durumları olarak sembolize edelim. Bir altprogram “bir'” durumuyla geri döndüğü zaman o seviyede veya da- ha alt seviyelerde çözüm bulunmuş de- mektir. Daha fazla uğraşmasına gerek kalmadan aynı mesajla o da geri dö- ner. Ta ki tümüyle geri çıkılana kadar. Peki altprogram tümüyle geri dön- PROBLEMİN ÇöZürmlü GEÇEN ZAMAN (SAAT,DAKİKA,SANİIYE ! BAŞLANGIÇ ŞEKLİ Kokakokok ol akakok ll 3HAt E * : tttt ttt AAA4 *& * vk #tAAFAR ** 4 * *xk * 4 444 45 L *k 4O H4 RAAA 4K * * * * * * y * * * K okakokukokakakokuk ol falalalağir Mokokok oklokl ğ oe lll SAA EÖCCE & *#CCCCCCC #4 * 4 #O HA4SAAA 44 W * ** OH4t AAA 44 * * * ** * ** H4t 4x ** * ** o* AAA AA 4 * * Kakakakkokok a ak a okok düğünde (dışarıdan rekursif altprog- ramı çağıran diğer programa geri dö- nüldüğünde) bildirilen değer sıfır du- rumuysa ne olacak? ” Basitçe görülmektedir ki, böyle bir durumda yapılacak bir şey yoktur. Programımız tüm ihtimalleri denemiş, çözüm bulamamıştır. Bu, programı- PROBLEMİN ÇöüZüMlü GEÇEN ZAMAN BAŞLANGIÇ ŞEKLİ Ko okok a oo l *E E * * #44HLA4A ** * * * ttttt * R F * & * * #4*4tk * * 404 * # * * * ** * * * 4 * * * * * * *k Kokakakakokokokokokuk l ÇSAAT , DAK İKA , SANİYE)İ BEAdEA36 Mokokakakokkkak klke e *5 CCCCCCCE * CCCt 44 HH4 tk * * HH4t 4H4tk * #ttk * * * tk *t * &£ * * ** Kokakakakak » 36 36 36 36 36 36 G6 36 mızin yetersizliğinden çok labirentin gerçekten de çözümsüz bir iabirent ol- duğunu gösterir. Kullanıcıya hatası bildirilir ve program bitirilir. Görüldüğü gibi arapsaçına döne- cek, çorba gibi karışacak gibi görünen ihtimaller bile dikkatle değerlendiril- diğinde çözümleri bulunabiliyor. Ar- tık bu noktada programımızın kesin- likle kusursuz çalışacağına eminiz. Bir adım daha atarak programımı- zın ilk satırlarını oluşturalım. i) Program X ve Y parametreleriy- le çağırılması gerekiyor. il) Geri dönerken Ü veya | durumu bildiriyor. Programımız ilk satırlarında X, Y noktasında çevresine bakıyor. Gide- bileceği nokta tek bir tane ise oraya gidiyor ve çevresine bakma işleminden yeniden başlıyor. Böylece yol tek yön- lüyse o yolun sonuna kadar gitmesi sağlanmış oluyor. Burada bazılarımı- zın dikkatini çekmiş olabilir; progra- mın bir evvelki noktaya geri dönme- mesi nasıl sağlanacak? Tek bir çözüm var: Programın geçtiği noktalara iz bı- rakması ve böylece aynı noktalara bir daha girmemesi. Bu konuyu daha de- taylı olarak birazdan bir kere daha dö- neceğiz. İlk satırlara geri dönelim. Programımızın düz yolda ilerlemesi sağlanmıştı. Diyelim ki bu yol üzerin- de hedefe ya da çözüme rastladı; ne

Bu sayıdan diğer sayfalar: