Yazan : Şadi Evren ŞEKER
Bilgisayar programlama dillerinde bir veya birden çok eylemi gerçekleştirmek için yazılan ve ana programa parametre ve fonksiyon dönüş değeri ile bağlı olan alt programdır. Yapısal programlama veya Fonksiyonel Programlama yaklaşımlarında sıkça kulanılan fonksiyon kavramı aslında matematiksel fonksiyonlardan farksızdır.
Matematiksel fonksiyonların tanımı
Matematiksel olarak bir fonksiyonun en belirgin özelliği girdi (parametre) almasıdır. Yani fonksiyon matematiksel bir eylemi ifade etmektedir. Bu eylemin üzerinde uygulanacağı varlıklar ise fonksiyonun paramtreleri veya argümanları (paramters, arguments) olarak isimlendirilir.
f : A1 x A2 x … x An → B fonksiyon ise f(a1, a2, …, an) = b şeklinde gösterilir ve ai ∈ Ai, i = 1, …, n ve b ∈ B’dir.
Burada ai argüman (parametre, arguments) ve b ise değer(value) olarak adlandırılır.
Matematiksel fonksiyonların özellikleri
Bir matematiksel fonksiyon aşağıdaki iki özellikten birisini taşıyabilir:
Bir fonksiyonun bire bir (one-to-one) olması fonksiyonun her farklı a, a’ ∈ A için f(a) ≠ f(a’)
şartını sağlamasına bağlıdır. Yani bir fonksiyonu bir girdi ile bir çıktı arasındaki bir köprüye benzetirsek. Girenler kümesindeki her elemanın çıkanlar kümesinde farklı bir sonuç vermesi durumuna birebir ismi verilir.
Bir fonksiyonun örten olması (onto) fonksiyondaki çıkanlar kümesinin bütün elemanlarının giren bir elemanla karşılanması durumudur. Yani A girdisine sahip ve B çıktısı veren fonksiyon için A → B şeklinde tanımlı bir fonksiyon için şayet b ∈ B şartını sağlayan bütün b’ler için bir f(a) = b görüntüsü veren a bulunabiliyorsa fonksiyon örtendir.
Ayrıca bir fonksiyonun hem birebir hem de örten olması mümkündür. Bijection olarak da isimlendirilen bu fonksiyonlarda A ve B kümelerinin bütün elemanları arasında çakışma olmaksızın tanımlı bir fonksiyon olması beklenir.
Matematiksel fonksiyonların bilgisayar dillerine çevrimi
Aşağıdaki matematiksel fonksiyonu ele alalım:
f(x,y) : x2 + 2x + y
Yukarıdaki matematiksel fonksiyon iki parametre alır ve sonuçta tek bir değer döndürür. Örneğin f(3,4) değeri 19 olarak bulunur.
Bilgisayar programlama dilleri için de durum bundan farksızdır. Örneğin aşağıdaki C dilinde yazılmış fonksiyonu ele alalım:
int f( int x, int y){
return x*x + 2*x + y;
}
Yukarıdaki fonksiyonu satır satır inceleyecek olursak, ilk satırda fonksiyonun tanım kısmı bulunmaktadır. Buna göre fonksiyonun ismi f, dönüş tipi int, ve parametreleri sırasıyla int x ve int y’dir.
Bir fonksiyonun dönüş değerinin programda kullanılması matematiksel fonksiyonlardan farksızdır. Buna göre aşağıdaki matematiksel işlemi ele alalım:
5 + 3 + f( 3,4)
Yukarıdaki bu işlemde soldan sağa doğru toplama işlemi yapılırken, öncelikle 5 sayısı ile 3 sayısı toplanır çünkü toplama işlemi bu sayılar arasında tanımlıdır. Ardından gelen f(3,4) ile toplama işlemi ise yapılamaz çünkü bu fonksiyonun değeri bilinmemektedir. Dolayısıyla öncelikle bu değerin hesaplanması gerekir. Örneğin C programlama dili bu fonksiyonu hesaplayarak 19 değerini bulur. Bu değeri toplama işlemine daha önceden hesapladığı 8 + 19 olarak hesaplar. Dolayısıyla fonksiyonun dönüş değeri (return value) hesaplanarak işlem içerisine yerleştirilir. Programlama dillerinde yapılan bu işlemin matematiksel hesaplamadan bir farkı bulunmamaktadır.