Commodore sayı 19, sayfa 55

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 55

M:İNTEGER; PROCEDURE HESAP; VAR SONUC 1: INTEGER; BEGIN

END; BEGİN

END;

Örneğimizde iki blok bulunuyor. İlk blok HESAPYAZ modülünün bildirimi ile başlıyor ve HESAP modülünü de kapsıyor. İkinci blok HESAP modülü ile başlıyor ve HESAPYAZ modülünün içinde kalıyor. HESAPYAZ modülünde bir tek M değişkeni tanımlandı. Bu değişken hem HESAP hem de HESAPYAZ modülünde kullanılabilir. SONUÇ ve I değişkenleri HESAP modülünde tanımlandılar ve sadece bu blok içinde kullanılabilirler. Başka bir deyişle, I veya SONUÇ değişkenlerini HESAPYAZ bloğunda kullanmanın bir anlamı yok.

Her iki değişken de bu bloğun her yerinde kullanılabilirler. Bu bloğun dışında, ana program da dahil hiçbir yerde kullanılamazlar. PROCEDURE ve FUNCTION'ların yapıları blok halinde olduklarından bunlar kendi içlerinde PROCEDURE veya blokları içerebilirler. İÇİÇE, DIŞ, İÇ, MİNİMODÜL bloklarından oluşan örneğimizi inceleyelim. Bu örnekte içiçe modülleri görmüştük.

Ana programı oluşturan İÇİÇE bloğunda tanımlanmış olan X ve Y değişkenleri tüm bloklarda kullanılabilirler. M ve N değişkenleri, DIŞ bloğunda tanımlanmasına rağmen hem DIŞ bloğunda hem de İÇ bloğunda kullanılabilirler, çünkü DIŞ bloğunu da içermektedir. N ve O değişkenleri sadece İÇ bloğunda kullanılabilirler. BOŞLUK sabiti ise sadece MİNİMODÜL bloğunda kullanılabilir. Bir PROCEDURE veya FUNCTION ismi, içinde bulunduğu blokta tanımlanmış olarak kabul edilir. Fakat bu modüller içinde bulunan yöresel değişkenler ve PARAMETRE değişkenleri yeni yapılmış olan modülde tanımlanmış olurlar. Bunu bir örnekle görelim:

FUNCTİON E(K,I,İ:İNTEGER): İNTEGER; P, M, N BEĞİN END;

F, bu fonksiyonu kapsayan blokta tanımlanmıştır. Ancak I, J, K, M, N ve P değişkenleri F bloğunda tanımlanmışlardır.

DEĞİŞKENLERİN ÇOKLU TANIMLANMALARI

Aynı isme sahip bir değişken farklı bloklarda tanımlanabilir. Mesela X bir değişken sadece bildirildiği blokta geçerlidir. Bu değişkeni sadece bildirildiği blokta kullanabilirsiniz.

X değişkeni İÇİÇE programında genel olarak tanımlanırken DIŞ ve İÇ modüllerinde de PARAMETRE değişkeni olarak tanımlandı. Programda X değişkeni kullanıldığında hangi tanımlamanın öncelik taşıyacağını merak edebilirsiniz. PASCAL'da bu durumlar için bir kural oluşturulmuş: Programın belirli bir yerinde aynı isme sahip değişkenler tanımlı ise, o zaman en ufak alana sahip değişken geçerli olur. Bizim örneğimizde İÇ modülünde X değişkeni kullanılırsa bu X değişkeni İÇ modülünde tanımlanmış olan değişkendir. PROCEDURE veya isimleri de birer belirteç olduklarından, bunlar için de Değişkenlerin Etki Alanı Kuralı'nı uygulayabiliriz. DIŞ modülü ana programda tanımlandığı için her yerde çağrılabilir. İÇ modülü DIŞ modülünün içinde tanımlandığından sadece kendisi veya DIŞ modül tarafından çağrılabilir. Mesela MİNİMODÜL bloğunda İÇ modülünü kullanmayı denersek SYNTAX ERROR ile karşılaşırız. Bunun sebebi bir belirteç kullanılmadan evvel tanımlanmasıdır. Görmüş olduğumuz gibi farklı bloklarda kullanıldığı sürece PASCAL, aynı isimde değişken, sabit veya belirteç kullanmamıza izin verir. Fakat PASCAL izin veriyor diye tüm bloklarda değişkenlere aynı isimleri vermek hiç de doğru değildir. Farklı isimler torbaya girmediğinden tüm değişkenlere aynı ismi vermek yerine her birine farklı farklı isimler vermek yerinde olacaktır.

PASCAL için modüler bir programlama dili demiştik. Modüler bir programlama dili olduğu için de, aynı anda farklı farklı programcılar bir programın farklı modüllerini hazırlayabilirler. Bu arada birbirlerinden habersiz olarak farklı değişkenlere aynı ismi verebilirler. Bu gibi durumlar için PASCAL hangi değişkenin kullanılacağını belirler. Bu sayede aynı anda farklı programcılar bir karışıklık çıkmadan programın farklı modüllerini hazırlayabilirler.

GENEL DEĞİŞKENLER

Bir FUNCTION veya PROCEDURE'da tanımlanan değişkenlerin o PROCEDURE veya FUNCTION'a ait bölgesel değişkenler olduğunu söylemiştik.

Bir FUNCTION veya PROCEDURE içinde tanımlanmamış, ancak bunlar tarafından kullanılabilen değişkenlere de GENEL değişkenler demiştik. Genellikle bu tür değişkenler ana programda tanımlanırlar.

Bir FUNCTION veya PROCEDURE'da bulunan komutlar genel bir değişkeni eğer aynı isimde başka bir bölgesel değişken yoksa kullanabilirler. Bu komutlar genel değişkenlerin değerlerini kullanabildikleri gibi, bunlara yeni değerler de verebilirler.

Modüllerle ana program arasında veri alış-verişi için ikinci bir yol olarak genel değişkenleri kullanıyoruz. Bir modülü çağırmadan evvel modüle gönderilecek verileri genel değişkene yükleriz. Aynı genel değişkenlere modüle elde edilen veriler yüklenir. Bu şekilde, modülden çıkıldığında gerekli değerler ana programa iletilmiş olur. Bu uygulamanın sakıncalarına gelecek yazımızda değineceğiz.

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