indicii funcționale - studopediya

Pentru a înțelege cum funcționează indexul pe funcția, este necesar să se aibă în vedere următoarele. Pe măsură ce funcțiile compilarea codului sursă, înregistrate de regulile limbajului C ++ se transformă într-un obiect și a stabilit punctul de intrare la care este accesat într-un apel de funcție.

Un pointer la o funcție în program este definită după cum urmează:

Tip_funcție (* imya_ pointer) (lista);

float (* PFun) (int);

float * PFun (int);,

compilatorul va accepta ca un prototip funcție numită PFun cu doi parametri întregi, returnează valori de tip float * pointer. Cu alte cuvinte, nu este un indicator de funcție.

Noi definim modul obișnuit de făcut în prima jumătate a anului, o funcție specifică a doi parametri întreg care returnează o valoare reală. De exemplu, ca o astfel de funcție poate fi o funcție care returnează valoarea medie a două numere întregi:

float Aver (int x, int y)

Apoi a declarat mai sus PFun pointer la o funcție poate fi determinată cu următoarea alocare:

float Res; Res = (* PFun) (5, 2);

float * PFun (int) = Aver;

Ca un indicator specific de utilizare practică a unei funcții, luați în considerare exemplul următor.

EXEMPLUL 1 (+) Crearea funcției pe care Simpson formulă calculează valoarea integrala definită a unei funcții arbitrare a unei variabile. Verificarea funcțională pentru calculul integralelor două:

Funcția Integral pentru a calcula integrala definită a unei funcții arbitrare în formula Simpson are următorii parametri: integrarea limitele a și b; numărul de pixeli în care intervalul [a, b], kotoroeobyavleno tip float, pentru a exclude algoritmul de implementare tip de conversie; un pointer la o funcție la care se calculează integrala definită.

float Integral (float, float, float, float (* Fun) (float));

// Două funcții de testare pentru care se calculează integrala.

// Se calculează prima integrală.

a = -1; b = 1; n = 100; I = Integral (a, b, n, Function1); cout<

// calcula a doua integrală.

a = 0; b = 1; n = 100; I = Integral (a, b, n, Function2); cout<

Citește anula (int x)

nule Append (int x)

Exemplul 2. (+) Un tablou dinamic de pointeri la funcții. Pentru x = 0, 0,2, ..., 1 deduce un tabel de valori a trei funcții.

// Texte ale celor două funcții. A treia funcție - cos standard, (x).

MyExp dublu (double x)

double Myq (double x)

/ * Declararea și de a crea o serie de indicii pentru funcții cu o singură opțiune reală. * /

double (* (* fun)) (dublu) = nou (dublu (* [n]) (dublă));

// atribuie elemente pentru a crea o serie de nume de funcții.

// Buclă pentru a schimba x

pentru (float x = 0; x<1; x+=0.2)

/ * Buclă pentru valorile de ieșire ale tuturor funcțiilor pentru o valoare fixă ​​de x. * /

printf ( "% 20.6f", fun [j] (x));

articole similare