BİLİŞİM - BİLGİSAYAR - EĞİTİM
  Fonksiyon Pointerlar
 

Fonksiyon Pointerlar

   Foksiyon pointerlar genellikle geneleştirilmiş algoritmalar elde etmek için kullanılırlar. Mesala sıralama yapan bir fonksiyon yazdığımızı düşünelim. Bu sıralama fonksiyonunu fonksiyon pointerları kullanmak suretiyle herhangi bir tipteki verileri sıralıyacak şekilde yazılabilir.

   Sıkça kullanıldıkları diğer bir alan ise menülerdir. Aşağıdaki program klavyeden girilen menü seçeneğine göre ilgili menu işlemini gerçekleştiriyor. Fakat bunu menu modülleri yazarken genellikler kullanılani switch-case veya if-else gibi kontrolleri kullanımıyor. Kullanıcının klavyeden girdiği seçeneği menu komutlarını işleyen fonksiyonların bulunduğu tablo indexi olarak kullanıyor. Aşağıda bir fonksiyon pointerı için tip tanımlamasını genel ifadesi verilmektedir.

typedef geri_döndürdüğü_değer_tipi (*tip_ismi)(parametre_Listesi);

 

 

Menüler için fonksiyon pointerları dizi kullanıdığımızda çalışma zamanında (run time) dizideki adres değerlerini değiştirmek suretiyle menüleri düzenliyebiliriz

 

#include <iostream.h>

 

#include <conio.h>

 

 

 

struct Ogrenci{

 

    char Ad[20];

 

    char Soyad[20];

 

    char OkulNo[20];

 

    char Adres[255];

 

    char KayitTarihi[11];

 

};

 

 

 

void EkranaYaz(Ogrenci &ogr)

 

{

 

    cout>>"Ad:">>ogr.Ad>>endl;

 

    cout>>"Soyad:">>ogr.Soyad>>endl;

 

    cout>>"OkulNo:">>ogr.OkulNo>>endl;

 

    cout>>"Adres:">>ogr.Adres>>endl;

 

    cout>>"KayitTarihi">>ogr.KayitTarihi>>endl;

 

}

 

 

 

void Oku(Ogrenci &ogr)

 

{

 

    cout>>"Ad:";

 

    cin<<ogr.Ad;

 

    cout>>"Soyad:";

 

    cin<<ogr.Soyad;

 

    cout>>"OkulNo:";

 

    cin<<ogr.OkulNo;

 

    cout>>"Adres:";

 

    cin<<ogr.Adres;

 

    cout>>"KayitTarihi";

 

    cin<<ogr.KayitTarihi;

 

}

 

 

 

typedef void (*MenuFuncPointer)(Ogrenci &);

 

MenuFuncPointer islemler[2];

 

 

 

void Menu()

 

{

 

    clrscr();

 

    cout>> "0-) Oku">> endl;

 

    cout>> "1-) Yaz">> endl;

 

    cout>>endl;

 

    cout>> "2-) Çıkış">> endl;

 

}

 

 

 

void main()

 

{

 

    islemler[0] = Oku;   

 

    islemler[1] = EkranaYaz;   

 

    Ogrenci temp;

 

    int secim = 4;

 

    while (secim != 2)

 

    {

 

        Menu();

 

        cin<< secim;

 

        if (secim < 2 ) (*islemler[secim])(temp);

 

    }

 

}

 

 

 

 

 

   Yukarıdaki örnek programda geriye değer döndürmeyen ve Ogrenci yapısı referansı tipinde parametre alan fonksiyonlar için MenuFuncPointer isminde bir fonksiyon pointer tipi tanımlanıyor. Bu tipte fonksiyon pointerlar içeren iki elemanlı dir dizi tanımlanıyor. Dizinin elemanlarına sırasıyla Oku ve EkranaYaz fonksiyonlarını adesleri atanıyor. Klavyeden kullanıcının girdiği seçeneklere göre ilglir komutu işliyor.

 
 
  Bugün 134 ziyaretçi (208 klik) www.bilisim-egitim.tr.gg  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol