dım düşün lık karakterler (CHAR), karakter zincirleri (STRING) ve mantıksal değişkenler (BOOLEAN). Bunların dışında baş- ka her şeyi kendi gereksinmelerinize göre ve kendi kendinize oluşturmanız mümkündür. Ama ben BASIC-sever bir kişi ola- rak Pascal'ın yolaçtığı güçlükleri dü- şünmeden edemiyorum. Bu dil pek çok alanda fazla muğlak geliyor ba- na. Kendi BASIC programlarımı zen- gin ve anlaşılır açıklamalar sayesin- de her zaman okuyabiliyorum. Nasıl bir disiplin uygulanması gerektiğini de, bana dikte ettirilmesindense, ken- sayılar (REAL), ilgisayarla yapılmasını istediğimiz işin niteliği kadar, çalışma tarzımız da dil seçiminde etkili oluyor. dim belirlemeyi tercih ediyorum. Ay- rıca, Pascal'daki tipler zorunluluğu- nun sıkılığı kimi zaman gerçekten ezi- yetli oluyor. Sonuç olarak bir sayının İNTEGĞER mi (tam sayı) yoksa RE- AL mi (ondalık sayı) olduğunu bazen bizzat bilgisayar belirlemelidir. Hem zaten o bunu benden daha iyi yapa- bilir. Tiplerin örneğimizdeki gibi gü- zelce bildirilmiş olmasına gelince, eğer bu bana bir avantaj sağlamıyor- İşte buldum! Rekursif bir sarmal çizeceğim. sa ne yararı vardır bu bildirimin? Çünkü belirlenen sınırlar dışında bil- gisayara veri aktarılması gene de mümkündür ve Pascal hiçbir hatayı bildirmemektedir. Yalnızca Pascal- derleyicisi (Compiler) bu konuda bir avantaj sağlayabiliyor; çünkü bu sa- yede kendi depo alanı düzene soku- labilmektedir. LOGO'NUN BÜYÜK GÜCÜ: RECURSİON Bir keresinde bizim yazı kurulu- muzda -başlangıçta çocuklar için ge- liştirilmiş- LOGO programlama diliy- le ilgili olarak şiddetli bir tartışma çıkmıştı. Taraflardan biri LOGO"- nun bütünüyle BASIC'le ya da Pas- cal'la kıyaslanabileceğini, dolayısıy- la da LOGO ile yararlı programlar yapılabileceğini öne sürüyordu. Öbür grup ise LOGO'nun hâlâ “çocuksu”” olduğunu ve bu yolla -güzel grafik çi- zimler dışında- aklı başında hiçbir şey yapılamayacağını iddia ediyordu. Bu tartışmada herhangi bir çözüme ula- şılamadı. Biz de örnek programımı- zı LOGO dilinde yazmaktan kaçın- dık. Giriş/Çıkış rutinlerini ve veri yö- netimlerini programlamak çok zah- metli bir işti. Çünkü bu dilin gücü, ona kızkardeşi LIİSP'ten (“yapay zekâ” için öngörülen programlama dili) miras kalan bir özellik olan **re- cursion''dan kaynaklanmaktaydı. (Recursion Pascal'da da vardır.) Bir ağaç resmi çizmek istediğinizi düşünün. Önce 10 cm. uzunluğunda bir cetvel alın ve bir çizgi çekin. Da- ha sonra cetveli, diyelim yarı yarıya, Commodore kısa tutun, biraz döndürün ve işleme baştan başlayın. Bu işlem, bizim her- hangi bir yerde bir sona ulaşıncaya değin gitgide küçülen değerlerle sü- rekli olarak tekrarlanmalıdır. (Çizi- min nerede son bulacağını tabii sizin yerleştirmeniz gerekiyor programa.) Gerçi şimdiden recursion'un özü- ne değin (aynı olayın sürekli tekrar- lanması) bir fikir sahibi olduğunuz söylenebilir, ama tek başına bu ka- dar bilgi elbette yeterli değildir. BA- SIC'deki her FOR-NEXT de bunu pekâlâ yapabilir. Recursion'un önemli bir özelliği şudur ki, bilgisa- yara iletilen bir komut hemen uygu- lanamamakta, aynı şemaya göre bir dizi alt-komutun çözülmüş olması ge- rekmektedir. Bunu somutlaştırmak için şöyle bir durumu gözünüzün önüne getirin: Bir dostunuz size geliyor ve bir bilgi- sayar edinmek istediğini bildiriyor. Ama amatör telsizci olan dostunuz bu hobisinden dolayı mutlaka özel bir program arzu ettiğini de sözleri- ne ekliyor ve size bu konuda kendi- sine bir tavsiyede bulunup bulunama- yacağınızı soruyor. Siz herhangi bir tavsiyede bulunamıyorsunuz. Bunun- la birlikte, sizin de bilgisayar ticareti yapan bir tanıdığınız vardır ve bu ki- şiye amatör telsizciler için özel prog- ramı olan bir bilgisayar bilip bilme- diğini soruyorsunuz. Ama o da yar- dımcı olamıyor bu konuda. Ancak, onun da danışacağı yetkili birisi var- dır... vb. En sonunda bu konuda bil- gi sahibi olan birini bulmak mümkün oluyor. Bu kişi doğrudan kendisine 9