Przegląd funkcji

Pod względem programowania a functionto blok instrukcji, który wykonuje określone zadanie. Funkcje akceptują dane, przetwarzają je i zwracają wynik. Funkcje zostały napisane przede wszystkim w celu wspierania koncepcji ponownego wykorzystania. Po napisaniu funkcji można ją łatwo wywołać, bez konieczności wielokrotnego pisania tego samego kodu.

Różne języki funkcyjne używają różnej składni do pisania funkcji.

Wymagania wstępne dotyczące pisania funkcji

Przed napisaniem funkcji programista musi znać następujące punkty -

  • Cel funkcji powinien być znany programiście.

  • Algorytm funkcji powinien być znany programiście.

  • Zmienne danych funkcji i ich cel powinny być znane programiście.

  • Dane funkcji powinny być znane programiście wywoływanemu przez użytkownika.

Sterowanie przepływem funkcji

Kiedy funkcja jest „wywoływana”, program „przekazuje” sterowanie w celu wykonania funkcji, a jej „przepływ sterowania” jest następujący:

  • Program sięga do instrukcji zawierającej „wywołanie funkcji”.

  • Wykonywana jest pierwsza linia wewnątrz funkcji.

  • Wszystkie instrukcje wewnątrz funkcji są wykonywane od góry do dołu.

  • Gdy funkcja zostanie wykonana pomyślnie, sterowanie wraca do instrukcji, od której została rozpoczęta.

  • Wszelkie dane obliczone i zwrócone przez funkcję są używane zamiast funkcji w oryginalnym wierszu kodu.

Składnia funkcji

Ogólna składnia funkcji wygląda następująco -

returnType functionName(type1 argument1, type2 argument2, . . . ) {     
   // function body 
}

Definiowanie funkcji w C ++

Weźmy przykład, aby zrozumieć, jak można zdefiniować funkcję w C ++, który jest językiem programowania obiektowego. Poniższy kod zawiera funkcję, która dodaje dwie liczby i podaje wynik jako dane wyjściowe.

#include <stdio.h> 

int addNum(int a, int b);     // function prototype  

int main() {    
   int sum; 
   sum = addNum(5,6);         // function call 
   printf("sum = %d",sum); 
   return 0; 
}  
int addNum (int a,int b) {    // function definition      
   int result; 
   result = a + b; 
   return result;             // return statement 
}

Wytworzy następujący wynik -

Sum = 11

Definiowanie funkcji w Erlang

Zobaczmy, jak można zdefiniować tę samą funkcję w Erlangu, który jest funkcjonalnym językiem programowania.

-module(helloworld).  
-export([add/2,start/0]).   

add(A,B) ->
   C = A + B,  
   io:fwrite("~w~n",[C]).  
start() ->  
   add(5,6).

Wytworzy następujący wynik -

11

Prototyp funkcji

Prototyp funkcji to deklaracja funkcji, która zawiera typ zwracany, nazwę funkcji i listę argumentów. Jest to podobne do definicji funkcji bez ciała funkcji.

For Example - Niektóre języki programowania obsługują prototypowanie funkcji, a niektóre nie.

W C ++ możemy stworzyć prototyp funkcji funkcji „sum” w ten sposób -

int sum(int a, int b)

Note - Języki programowania takie jak Python, Erlang itp. Nie obsługują prototypowania funkcji, musimy zadeklarować całą funkcję.

Jaki jest pożytek z prototypu funkcji?

Prototyp funkcji jest używany przez kompilator, gdy funkcja jest wywoływana. Kompilator używa go, aby upewnić się, że zwracany typ jest prawidłowy, przekazywana jest właściwa lista argumentów, a ich zwracany typ jest poprawny.

Podpis funkcji

Podpis funkcji jest podobny do prototypu funkcji, w którym liczba parametrów, typ danych parametrów i kolejność pojawiania się powinny być w podobnej kolejności. Na przykład -

void Sum(int a, int b, int c);         // function 1  
void Sum(float a, float b, float c);   // function 2  
void Sum(float a, float b, float c);   // function 3

Funkcja 1 i Funkcja 2 mają różne sygnatury. Funkcja 2 i Funkcja 3 mają takie same podpisy.

Note - Przeciążanie funkcji i nadpisywanie funkcji, które omówimy w kolejnych rozdziałach, oparte są na koncepcji sygnatur funkcji.

  • Przeciążanie funkcji jest możliwe, gdy klasa ma wiele funkcji o tej samej nazwie, ale różnych podpisach.

  • Zastępowanie funkcji jest możliwe, gdy funkcja klasy pochodnej ma taką samą nazwę i podpis jak jej klasa bazowa.