Fonksiyon (Function)
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.
« C Dilinde Operatörler (işlemler, operators) | Otokutulama (Autoboxing) »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Fonksiyon (Function)' isimli yazı 12 Oct 2008 tarihinde, saat: 21:39 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 396 defa okunmuştur.
Benzer yazıları Bilgisayar Matematiği kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Özyineli Diller (Recursive Languages)
- Özyineli Geçiş Ağları (Reursive Transition Networks)
- Gellish (Kontrollü Doğal Dil)
- Karar Problemi (Decision Problem)
- Masfuf (Matris , Matrix)
- Turing Makinesi (Turing Machine)
- Özyineli Sayılabilir Diller (Recursively Enumerable Languages)
- Chomsky Hiyerarşisi ( Chomsky Hierarchy )
- Anlamsal Ağlar (Semantic Network)
- Mana Ağları (Sematic Webs, Anlamsal Ağ)
Yapılan Son Yorumlar
- vildan: teşekkürler..
- Şadi Evren ŞEKER: Elbette; farklı iki örnek daha...
- rasim: daha baska ornekler verebılırmısınız
- Zeynep Kaya: İyi günler.Benim size bi sorum daha...
- Zeynep Kaya: Cok tesekkür ederim yardımınız icin..
Yakın Yazılar
Filitreleme Tipi Fonksiyonlar (Filter Type Functions)
Veri yapıları üzerinde fonksiyonlar
Özyineli sayılabilir küme (Recursively Enumerable Sets)
Bindirme Tipi Fonksiyonlar (Mapping Style Functions)
Hesaplanabilir Fonksiyon (Computable Function)
Doğrusal Fonksiyon (Linear Function)
Özyineli Sayılabilir Diller (Recursively Enumerable Languages)
Biriktirme Tipi Fonksiyonlar ( Accumulator Type Functions)
referans ile çağırma (call by reference)
Atıf ile Çağırma (Call by Reference)
Kapak Fonksiyonu (Trapdoor Function)
fonksiyon göstericileri (function pointer)
Linear Programming (Doğrusal Programlama)
alt program (subprogram, subroutine)
OpenGL ile kullanıcılı iletişimi (user interaction)
Bağlantılar