Commodore sayı 18, sayfa 57

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 57

IFN -0 THEN USALMA: - SONUÇ

ELSE USALMA: - 1.0/SONUÇ END;

Kendi yazdığımız fonksiyonda daha önceden tanımlı olan ABS() fonksiyonunu kullandık. ABS() fonksiyonu sayesinde N değişkeninin değeri negatif de olsa gerekli sayıda çarpma işleminin yapılması sağlanmış oldu. Fonksiyonumuzun ilk satırını oluşturan:

USALMA(X: REAL;N:İNTERGER):REAL;

fonksiyonun ismini ve parametrelerini belirliyor. Fonksiyonumuzun nasıl çalıştığını anlatmadan evvel kullanıcı tarafından tanımlanan fonksiyonların yapısını görelim: FUNCTION fonksiyon-ismi (Parametreler): Sonucunun veri tipi; Bölgesel-bildirim-bölümü

BEGIN

Fonksiyonu oluşturan komut satırları

END;

FUNCTION'dan sonra fonksiyonun ismini yazıyoruz, daha sonra parantez içinde fonksiyonun parametreleri bildiriliyor, son olarak bu satırda parantez kapatıldıktan sonra iki nokta üst üste koyularak (':') fonksiyonun sonucunda elde edilecek neticenin veri tipi bildiriliyor. Bölgesel-bildirim-bölümü'nde bildirilen tüm değişkenler sadece bu fonksiyon çağrıldığında tanımlı hale geliyorlar. BEGIN...END arasında fonksiyonu oluşturan komut satırları yer alıyor. Komut satırlarının en az birinde komutun sol tarafında olmak üzere fonksiyonun adının bulunması gerekiyor. Üstteki örneğimizde USALMA := SONUÇ; şeklinde bir ifade kullanmıştık. Bu şekilde kullanılan bir ifade sonucunda fonksiyon çalışmasını bitirdiği zaman bulduğu değeri ismine yükler. Üstteki örnekte dikkatinizi ilk olarak fonksiyonun sonu olan END satırından sonra noktalı virgül “;” geldiği çekmiştir. Gerçek fonksiyon yapısı bakımından program yapısına benziyor, ama END komutundan sonra nokta “.” yerine noktalı virgül “;” geliyor. Fonksiyon tanımlarken dikkat etmemiz gereken iki nokta bulunuyor.

(1) Sonucun veri tipi standart veri tiplerinden (BOOLEAN, INTEGER, REAL, CHAR) biri olmak zorundadır.

Eğer fonksiyonumuzda parametre bulunmayacaksa parametreler bölümünü ve parantezleri kullanmayız.

Örneğimizde tanımladığımız fonksiyonu nasıl kullanacağız? Programımızın herhangi bir satırında fonksiyonun adını ve gerekli parametreleri vererek istediğimiz sonucu elde edebiliriz. ÇARPIM değişkeninin programımızda REAL veri tipi ile tanımlandığını kabul edelim. Programımızda şöyle bir satır kullanabiliriz:

ÇARPIM: - USALMA (5.0,4);

Fonksiyonumuzda beş sayısının dördüncü üssünü bulmasını istiyoruz, bu komut işlendiğinde ÇARPIM değişkeninin içeriği 625 olur. Şimdi satır satır fonksiyonumuzun nasıl çalıştığını görelim:

Ayrılmış kelimelerden (RESERVED WORDS) olan FUNCTION ile bir fonksiyonun yazılımına başlıyoruz, daha sonra fonksiyonun ismi hemen sonrasında da parantez içinde parametreler geliyor. Fonksiyon program içinden çağrıldığında programın içinde adını ve parantez içinde parametrelerini vermemiz gerekiyor. Parametreleri de fonksiyon yazılırken kullanılan sıraya göre vermemiz gerekir:

Programda ÇARPIM: — USALMA (5.0,4);

demiştik. Parametrelerin birbirlerinden virgül (',') ile ayrıldıklarına dikkat edin. 5.0 değeri X parametresine, 4 değeri N parametresine karşı gelmektedir. Eğer parametreleri karşılıklı gelecek şekilde vermezseniz hiç ummadığınız neticeler elde edebileceğiniz gibi hata mesajları ile de karşılaşabilirsiniz. Eğer fonksiyonumuzun hiç bir parametresi yoksa parantezleri kaldırmamız gerekir. Fonksiyonumuzu tanımlarken parantez içine yazmış olduğumuz ne anlama geliyor? Fonksiyonumuzun iki parametresi var. İlk parametre olan X değişken REAL veri tipinde, ikinci parametre olan N değişkeni ise INTEGER veri tipinde olmalı anlamına gelir. USALMA(5.0,4) ile fonksiyonumuzu çağırdığımızda X değişkeni 5.0 değerini alırken N değişkeni 4 değerini alıyor. Parantezden sonra gelen :REAL ise fonksiyonumuzun neticede REAL veri tipinde bir sonuç göndereceğini anlatıyor. Fonksiyonumuzu yazarken en az bir ifadenin solunda fonksiyonun isminin bulunması gerektiğini söylemiştik. Bu sırada fonksiyonun ismi normal bir değişkenmiş gibi davranır ve fonksiyonun başlığında yer alan parantezlerden sonra belirttiğimiz veri tipine sahip olur. Bir fonksiyon hiç bir parametre almayacağı gibi örneğimizde gördüğümüz gibi birden çok parametre de alabilir. Program çalışması sırasında fonksiyonun adı ile karşılaştığında özel bir hafıza bölgesi hazırlar. Bu bölgede fonksiyonda tanımlanan değişkenler yer alır. Örneğimizde USALMA, SONUÇ, I, X, N değişkenleri için yer ayrılır. Fonksiyon yazarken yapabileceğiniz hatalardan birisi de, fonksiyonu yazarken fonksiyonun ismini bir ifadenin sağında kullanmanız olabilir. Çünkü fonksiyonun ismi sadece bir ifadenin solunda kullanıldığında değişken vazifesi görür. Program Döküm Eki'nde bir fonksiyonun nasıl programda kullanıldığına dair bir örnek program bulabilirsiniz.

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