HACİM (10.0, 5.0, 4.0); Elde edeceğimiz sonuç HACİM:200.0 olurdu. Eğer bir modül olarak hazırlamak yerine HACİM modülünün yaptığı- nı program içinde yaptırmak istesey- dik, programımıza aşağıdaki satırla- rı eklememiz gerekirdi: UZUNLUK: -— 10.0; GENİŞLİK: — 5.0; YÜKSEKLİK: - 4.0; H: - UZUNLUK*GENİŞLİK* YÜKSEKLİK; WRIİTELN (HACIM *', H;9:1); Aslında modül yazarak bizim yap- tığımız, bilgisayara yeni bir komut kazandırmaktır. Nasıl WRITE, WRTELN, READ vs. gibi komutlar varsa artık HACİM de bilgisayar için bir komut olmuştur. Programımızın neresinde hacim hesaplamamız gere- kirse yeni komutun adını ve gerekli parametrelerini vermek yeterli olur. Program Döküm Eki'nde PROCE- DURE kullanarak çalışan basit bir program bulacaksınız. Sadece değişken bildirimi ve prog- ram komutlarından oluşan uzun bir programı yazmanın ve anlamanın zorluğunu söylemeye gerek yok. Bu yüzden bir program haline getirme- ye çalıştığımız problemimizi daha ufak parçalara bölmeye çalışırız. Ufak parçaları da daha ufak parça- lara böleriz. Bu işlem bölünemeyecek ufak parçalara ulaşıncaya kadar de- vam eder. Bölünemeyecek ufak par- çalar program modüllerimiz olan PROCEDURE 'lar halinde yazılırlar. Hemen hemen tüm problemleri ve- ri okuma, hesap yazma, sonuçları basma şeklinde üç ayrı alt probleme bölebiliriz. Programımız bittiğinde bir grup modülden oluşur. Her modül daha fazla bölünemeyecek ufak problem- lere karşılık gelir. Bir PASCAL procedure'ü,kendi is- mi ile çağrılabilen bir program mo- düldür. Geçen bölümde genel olarak program modüllerini inceledik ve ge- nel yapılarını gördük. Geçen bölümde gördüğümüz alt programlar sadece kendilerini çağıran programdan değer alabiliyor, ancak değer iletemiyorlardı. Daha doğrusu parametrelerde yeralan değişkenlerin değerini kullanıyorlar, ama bu değiş- kenlerin değerlerindeki değişiklik ça- ğiıran programı eklemiyordu. DEĞER VE DEĞİŞKEN PARAMETRELER Geçen bölümde HACİM isimli bir modül tanımlamıştık. Modülümüz uzunluk, genişlik ve yükseklik değer- lerini alıp cismin hacmini hesaplaya- rak ekrana yazıyordu. Bu modülü iki parçaya bölebiliriz. Yeni modülümüz gerekli bilgileri alsın ve parametre lis- tesine ekleyeceğimiz dördüncü değiş- ken yardımı ile bulduğu değeri ana programa göndersin. İt programlar sayesinde programımızı, ufak birçok modül yazıp bunları birleştirerek oluşturabiliyoruz. PROGRAM HESAP,; UZUNLUK, GENİŞLİK YÜKSEKLİK,SONUÇ : REAL; PROCEDURE HACIM(U,G,Y: REAL; VAR H:REAL); BEĞIN H:-U*G*Y; END; BEĞIİN WRİTEÇVERİLERİ GİRİN:); READ(UZUNLUK); WHİLE UZUNLUK > 0.0DO BEĞGIN READLN(GENISLIK, YÜKSEKLİK) HACIM(UZUNLUK, GENİSLİK, YUKSEKLİK,SONUC); WRITELNCHACIM - “, SONUC:9:3); WRITELN; WRIİTECVERİLERİ GİRİN:*); READ(UZUNLUK); END; END. Commodore HACIM modülünde yeralan para- metre listesindeki VAR sözcüğü dik- katinizi çekti mi? Geçen bölümde yer- alan örnekte parametre listesinde yer- alan değişkenleri sadece dışarıdan ve- ri almakta kullanmıştık. VAR komu- tu sayesinde parametrelerde yeralan değişkenleri hem veri almada, hem de veri vermede kullanacağız. Sadece kendisini çağıran program, fonksiyon veya procedure'dan veri taşıyan parametre değişkenlerine DE- ĞER PARAMETRESİ diyoruz. Eğer parametrede yeralan değişken veya değişkenlerin önünde VAR komutu yeralmış ise bu değişkenler hem de- ğer almada hem de değer vermede kullanırlar. Bu tür değişkenlere DE- GİŞKEN PARAMETRE adını veri- yoruz. Modülün çağrıldığı komutta DE- GĞER parametresine karşı gelen para- metre bir değişken veya bir ifade ola- bilir. HACIM(UZUNLUK;,... veya HACIM(2*UZUNLUK,... EĞer DEĞİŞKEN PARAMETRE kullanmışsak modülün çağrıldığı ko- mutta DEĞİŞKEN PARAMETRE- SİNE karşı gelen parametre sadece bir değişken olmalıdır. Değişken ye- rine bir ifade kullanmak hata mesa- jına yolaçar. Yukarıdaki örneğimizde U, G, Y değişkenleri modülümüze modülü ça- ğiıran yerden veri taşınmasında kul- lanılıyor. H değişkeni ise modül için hesaplanan bir değeri modülü çağıran yere iletiyor. DEĞİŞKEN PARAMETRE'lerin bildirimi daima VAR (reserved word) komutu ile başlamalıdır. Eğer VAR komutunu yazmayı unutursanız bu değişkenler DEĞER PARAMETRE- Sİ olarak alınırlar. Örneğimizdeki H: -U * Y *G; ko- mutu çalıştığında HACIM:-U*Y * G; komutu çalışıyormuş etkisi olur. Ne zaman DEĞER PARAMET- RESİ, ne zaman DEĞİŞKEN PA- RAMETRESİ kullanacağız? Başlıca üç kural şeklinde özetleyebiliriz: () Eğer modüle gönderilen bilgi geri alınmak zorunda değilse, o za- man DEĞER PARAMETRESİ kul- lanabiliriz. Bu tür bir parametreyi gi- riş parametresi olarak adlandırabili- TİZ. 53