C# Programlama Fonksiyon Göstericileri

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
▃ ▅ ησ ♥ яєѕρєcт ▅ ▃
Süper Üye
Katılım
24 Eyl 2016
Mesajlar
600
Tepki puanı
10
Ödüller
9
9 HİZMET YILI
Fonksiyon Göstericileri
Fonksiyon göstericileri, gösterici (pointer) kavramının gücünü gösterin diğer bir uygulama alanıdır. Dizilerde olduğu gibi, fonksiyon adları da sabit göstericidir.
Fonksiyon betiğinin (kodlarının) bellekte bir adreste tutulduğu şeklinde düşünebiliriz. Fonksiyon göstericisi basit olarak fonksiyon adının saklandığı bellek adresini tutan bir göstericidir. Fonksiyon göstericileri sayesinde fonksiyonlar başka fonksiyonlara parametre olarak aktarılabilmektedir.
Fonksiyon adının bellete yer işgal ettiği şöyle öğrenilebilir:

int f(int); /* fonksiyon bildirimi */
int (*pf)(int); /* fonksiyon göstericisi bildirimi */
pf = &f; /* f'nin adresini pf'ye ata! */


Bağlantıları görmek için lütfen Giriş Yap
Bir fonksiyonun 'adresini' iki yoldan öğrenme

01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:


/* 10prg08.c: Bir fonksiyonun 'adresini' öğrenme */

#include <stdio.h>

int f(int n){
int f=1, i;
for(i=1; i<n; i++)
f*=i;
return f;
}


int main()
{
int (*pf)(int);
pf = &f;


printf("Fonksiyonun adresi = %p\n", &f);
printf("Fonksiyonun adresi = %p\n", pf);


return 0;
}


ÇIKTI

Fonksiyonun adresi = 0x4005b0
Fonksiyonun adresi = 0x4005b0



Aşağıdaki ikinci örnekte, bir fonksiyon diğer fonksiyona parametre olarak geçirilmiş ve sayısal türevi hesaplanmıştır. Türev hesaplanırken merkezi fark yaklaşımı (central difference approximation) yöntemi kullanılmıştır.

NOT
mfy yönteminde f(x) fonksiyonunun (h küçük bir değer olmak üzere) Taylor açılımları söyledir:

f(x+h) = f(x) + h*f'(x) + h2*f''(x)/2! + h3*f'''(x)/3! + ...
f(x-h) = f(x) - h*f'(x) + h2*f''(x)/2! - h2*f'''(x)/3! + ...
-
-----------------------------------------------------------------------
f(x+h) - f(x-h) = 2*h*f'(x) + O(h3)


Burada O(h3)'lü terimler ihmal edilirse birinci türev yaklaşık olarak:

f'(x) = [f(x+h) - f(x-h)]/2h

formülü ile hesaplanır.


Bağlantıları görmek için lütfen Giriş Yap
Türev alan fonksiyon

01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:


/* 10prg09.c: Fonksiyon Göstericisi ile türev hesabı */

#include <stdio.h>

double f(double);
double turev( double (*)(double), double);


int main()
{


double x = 1.1;

printf("Fonksiyon x = %lf deki degeri = %lf\n", x, f(x));
printf("Fonksiyon x = %lf deki turevi = %lf\n", x, turev(f, x) );


return 0;
}



// türevi hesaplanacak fonksiyon
double f(double x){
return x*x*x - 2*x + 5.;
}
// sayısal türev alan fonksiyon
double turev( double (*fonk)(double x), double x){
double h = 1.0e-3;
return (fonk(x+h)-fonk(x-h)) / (2*h);
}


ÇIKTI

Fonksiyon x = 1.100000 deki degeri = 4.131000
Fonksiyon x = 1.100000 deki turevi = 1.630001
 
Moderatörün son düzenlenenleri:
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst