M:İNTEĞER; PROCEDURE HESAP; SONUC I: İNTEĞGER; BEĞIİN END; BEĞGİN END; — Örneğimizde iki blok bulunuyor. İlk blok HESAPYAZ modülünün bildirimi ile başlıyor ve HESAP mo- dülünü de kapsıyor. İkinci blok HE- SAP modülü ile başlıyor ve HESAP- YAZ modülünün içinde kalıyor. HESAPYAZ modülünde bir tek M değişkeni tanımlarıdı. Bu değişken hem HESAP hem de HESAPYAZ modülünde kullanılabilir. SONUÇ ve I değişkenleri HESAP modülünde ta- nımlandılar ve sadece bu blok içinde kullanılabilirler. Başka bir deyişle, I veya SONUÇ değişkenlerini HESAP- YAZ bloğunda kullanmanın bir an- lamı 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ın- dan bunlar kendi içlerinde PROCE- DURE veya FUNCTION blokları içerebilirler. İÇİÇE, DIŞ, İÇ, MİNİMODÜL bloklarından oluşan örneğimizi ince- leyelim. Bu örnekte içiçe modülleri görmüştük. Ana programı oluşturan İÇİÇE bloğunda tanımlarımış olan X ve Y değişkenleri tüm bloklarda kullanıla- bilirler. M ve N değişkenleri, DIŞ bloğun- da tanımlanmasına rağmen hem DIŞ bloğunda hem de İÇ bloğunda kul- lanılabilirler, çünkü DIŞ bloğunu da içermektedir. N ve O değişkenleri sadece İÇ blo- ğunda kullanılabilirler. BOŞLUK sa- biti ise sadece MİNİMODÜL bloğun- da kullanılabilir. Bir PROCEDURE veya FUNCTI- ON ismi, içinde bulunduğu blokta ta- nımlarımış 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 bır örnek- le görelim: FUNCTION F(K,J,1:İNTEĞER): INTEĞE P, M, N :İNTEĞER; BEĞİN END; F, bu fonksiyonu kapsayan blok- ta tanımlanmıştır. Ancak I, J, K, M, N ve P değişkenleri F bloğunda ta- nımlanmışlardır. DEĞİŞKENLERİN ÇOKLU TANIMLANMALARI Aynı isme sahip bir değişken farklı bloklarda tanımlanabilir. Mesela X ir değişken sadece bildirildiği blokta geçerlidir. Bu değişkeni sadece bildirildiği blokta kullanabilirsiniz. değişkeni İÇİÇE programında genel olarak tanımlanırken DIŞ ve İÇ mo- düllerinde de PARAMETRE değiş- keni olarak tanımlandı. Programda X değişkeni kullanıldığında hangi ta- nımlamanın öncelik taşıyacağını me- rak edebilirsiniz. PASCAL'da bu du- rumlar için bir kural oluşturulmuş: Programın belirli bir yerinde aynı is- me sahip değişkenler tanımlı ise, o za- man en ufak alana sahip değişken ge- çerli olur. Bizim örneğimizde İÇ mo- dülünde X değişkeni kullanılırsa bu X değişkeni İÇ modülünde tanımlan- mış olan değişkendir. PROCEDURE veya FUNCTION isimleri de birer belirteç oldukların- dan, bunlar için de Değişkenlerin Et- ki Alanı Kuralı'nı uygulayabiliriz. DIŞ modülü ana programda tanım- landığı için her yerde çağrılabilir. İÇ modülü DIŞ modülünün içinde ta- nımlandığından sadece kendisi veya DIŞ modül tarafından çağrılabilir. Mesala MİNİMODÜL bloğunda İÇ Commodore modülünü kullanmayı denersek SYNTAX ERROÖR ile karşılaşırız. Bunun sebebi bir belirteç kullanılma- dan evvel tanımlanmasıdır. Görmüş olduğumuz gibi farklı bloklarda kullanıldığı sürece PAS- CAL, aynı isimde değişken, sabit ve- ya 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 prog- ramlama dili demiştik. Modüler bir programla dili olduğu için de, aynı anda farklı farklı programcılar bir programın farklı modüllerini hazır- layabilirler. Bu arada birbirlerinden habersiz olarak farklı değişkenlere aynı ismi verebilirler. Bu gibi durum- lar için PASCAL hangi değişkenin kullanılacağını belirler. Bu sayede ay- nı anda farklı programcılar bir karı- şıklık çıkmadan programın farklı modüllerini hazırlayabilirler. GENEL DEĞİŞKENLER Bir FUNCTION veya PROCEDU- RE'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 PROCEDU- RE içinde tanımlanmamış, ancak bunlar tarafından kullanılabilen de- Bişkenlere de GENEL değişkenler de- miştik. Genellikle bu tür değişkenler ana programda tanımlanırlar. Bir FUNCTION veya PROCEDU- RE'da bulunan komutlar genel bir değişkeni eğer aynı isimde başka bir bölgesel değişken yoksa kullanabilir- ler. 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 ola- rak 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 mo- düle elde edilen veriler yüklenir. Bu şekilde, modülden çıkıldığında gerek- li değerler ana programa iletilmiş Bu uygulamanın sakıncalarına ge- lecek yazımızda değineceğiz. 55