Commodore sayı 20, sayfa 58

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 58

BURAK KİPER

Geçen yazımızda modüllerle ana program arasında veri alış-verişi için ikinci yol olarak genel değişkenleri kullanabileceğimizi söyledik. Bu uygulamanın bir sakıncası bulunuyor. Eğer modülle ana program arasında veri alış-verişini PARAMETRE değişkenleri sağlarsa bir bakışta hangi değişkenlerin veri taşıdığını, hangi değişkenlerin etkilendiğini görebiliriz. Ancak veri alış-verişinde genel değişkenler kullanırsak, programımızı yaptıktan bir süre sonra programımıza baktığımızda hangi değişkenlerin modüllerle veri irtibatı sağladığını anlamakta güçlük çekebiliriz. Eğer PARAMETRE değişkenlerini veri alış-verişinde ön kapı olarak düşünürsek genel değişkenlere de veri alış-verişinin arka kapısı diyebiliriz. Genel değişkenleri modülle ana program arasında veri alış-verişinde kullanmak düzensiz bir program hazırlamamıza neden olur. Bu yüzden veri alış-verişlerinde PARAMETRE değişkenlerini kullanmamız iyi bir program hazırlamamız açısından doğru olur. Buna rağmen karşılaşabileceğimiz iki durumda GENEL değişkenleri veri alış-verişinde kullanmak daha faydalı olur: (1) Eğer bir modülü çağırdıktan sonra modüldeki bazı değerleri korumak istiyorsak bölgesel değişkenlerle amacımıza ulaşamayız. Modüller her çağrıldıklarında bölgesel değişkenler için özel bir hafıza alanı ayrılır. Modülden çıkıldığında modüle ait bölgesel değişkenlere yüklenmiş değerler de kaybedilir. Modül tekrar çağrıldığında yeni bir hafıza alanı ayrılır. Kalıcı olmasını istediğimiz bir değer varsa GENEL değişken kullanmamız gerekir. (2) Bazan birçok modül aynı veri yapısı üstünde çalışır, mesela büyük bir tablo üstünde. Böyle bir durumda birçok modül tarafından kullanılan değişkeni GENEL değişken olarak tanımlamak daha uygun olacaktır. Bu yazımızda anlattıklarımızı pratik olarak uygulayabilmek için geçen sayıda yayınlanan Program Döküm Eki'ndeki iki programı inceleyebilirsiniz. Genel değişkenleri kullanmamız için iki durumun mevcut olduğunu söylemiştik. İlk programımız böyle bir duruma örnek olabilir. Bu programımızda rastgele sayılar üreten bir fonksiyon tanımlanıyor. Tanımladığımız fonksiyon kullanılarak bilgisayar 0 ile 100 arasında değişen sayılar tutarak bu sayıyı bulmanızı istiyor. Rastgele sayı üreten fonksiyonumuz pek profesyonel bir fonksiyon değil ama birçok oyun tipi uygulamada işinizi görür. Fonksiyonumuza çekirdek bir rakam gerekiyor. Fonksiyonumuz aldığı çekirdek sayıyı kullanarak yeni bir çekirdek sayı üretiyor. Yeni üretilen çekirdek sayı bir sonraki hesaplamada kullanılıyor. Çekirdek sayıyı taşıyan değer GENEL değişken olarak tanımlandığından fonksiyon her çağrıldığında çekirdek sayının bir evvelki değeri kaybolmuyor. 0 ile 100 arasında bir sayı elde etmek istediğimiz için çekirdek sayımızı 100 ile çarpıp elde edilen sonucun tam sayı kısmına 1 eklemek yeterli oluyor. İkinci programımız ise bir hesap makinesini taklit ediyor. Hesaplatmak istediğiniz işlemi belirli bir yapıya göre girmeniz gerekiyor. Aksi takdirde hata mesajı ile karşılaşabilirsiniz. RECURSION (kendi kendini çağırma)

Bir alt program veya fonksiyon başka bir alt program veya fonksiyonu çağırabilir. Eğer bir alt program veya fonksiyon kendisini çağırırsa buna RECURSIVE (kendisini çağıran) alt program veya fonksiyon adını veririz. Recursive şekilde programlamayı, döngü tipi programlama yerine kullanabiliriz. Gerçi döngü tipi programlama ile karşılaştırıldığında daha fazla zaman ve hafıza harcanmasına neden olan bu uygulama bazen döngü tipi ile çok zor yapılacak programların çok kolay bir şekilde gerçekleştirilmesini sağlar.

Klavyeyle gezinmek için ← ve → tuşları.