Programowanie komputerowe - funkcje
Funkcja to blok zorganizowanego kodu wielokrotnego użytku, który służy do wykonywania jednej, powiązanej czynności. Funkcje zapewniają lepszą modułowość aplikacji i wysoki stopień ponownego wykorzystania kodu. Widziałeś już różne funkcje, takie jakprintf() i main(). Są to tak zwane funkcje wbudowane dostarczane przez sam język, ale możemy również pisać własne funkcje, a ten samouczek nauczy Cię, jak pisać i używać tych funkcji w języku programowania C.
Zaletą funkcji jest to, że są znane pod kilkoma nazwami. Różne języki programowania nazywają je inaczej, na przykład funkcje, metody, podprogramy, procedury itp. Jeśli natkniesz się na taką terminologię, wyobraź sobie tę samą koncepcję, którą omówimy w tym samouczku.
Zacznijmy od programu, w którym zdefiniujemy dwie tablice liczb, a następnie z każdej tablicy znajdziemy największą liczbę. Poniżej podano kroki, aby znaleźć maksymalną liczbę z podanego zestawu liczb -
1. Get a list of numbers L1, L2, L3....LN
2. Assume L1 is the largest, Set max = L1
3. Take next number Li from the list and do the following
4. If max is less than Li
5. Set max = Li
6. If Li is last number from the list then
7. Print value stored in max and come out
8. Else prepeat same process starting from step 3
Przetłumaczmy powyższy program na język programowania C -
#include <stdio.h>
int main() {
int set1[5] = {10, 20, 30, 40, 50};
int set2[5] = {101, 201, 301, 401, 501};
int i, max;
/* Process first set of numbers available in set1[] */
max = set1[0];
i = 1;
while( i < 5 ) {
if( max < set1[i] ) {
max = set1[i];
}
i = i + 1;
}
printf("Max in first set = %d\n", max );
/* Now process second set of numbers available in set2[] */
max = set2[0];
i = 1;
while( i < 5 ) {
if( max < set2[i] ) {
max = set2[i];
}
i = i + 1;
}
printf("Max in second set = %d\n", max );
}
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
Max in first set = 50
Max in second set = 501
Jeśli masz jasność co do powyższego przykładu, łatwo będzie zrozumieć, dlaczego potrzebujemy funkcji. W powyższym przykładzie istnieją tylko dwa zbiory liczb, zbiór1 i zestaw2, ale rozważ sytuację, w której mamy 10 lub więcej podobnych zestawów liczb, aby znaleźć maksymalne liczby z każdego zestawu. W takiej sytuacji będziemy musieli powtórzyć, przetwarzając 10 lub więcej razy i ostatecznie program stanie się zbyt duży z powtórzonym kodem. Aby poradzić sobie z taką sytuacją, piszemy nasze funkcje, w których staramy się zachować kod źródłowy, który będzie wielokrotnie używany w naszym programowaniu.
Zobaczmy teraz, jak zdefiniować funkcję w języku programowania C, a następnie w kolejnych sekcjach wyjaśnimy, jak ich używać.
Definiowanie funkcji
Ogólna postać definicji funkcji w języku programowania C jest następująca -
return_type function_name( parameter list ) {
body of the function
return [expression];
}
Definicja funkcji w programowaniu w C składa się z nagłówka funkcji i treści funkcji . Oto wszystkie części funkcji -
Return Type- Funkcja może zwrócić wartość. Plikreturn_typejest typem danych wartości zwracanej przez funkcję. Niektóre funkcje wykonują żądane operacje bez zwracania wartości. W tym przypadku return_type jest słowem kluczowymvoid.
Function Name- To jest rzeczywista nazwa funkcji. Nazwa funkcji i lista parametrów razem tworzą podpis funkcji.
Parameter List- Parametr działa jak symbol zastępczy. Gdy funkcja jest wywoływana, przekazujesz wartość jako parametr. Ta wartość jest określana jako rzeczywisty parametr lub argument. Lista parametrów odnosi się do typu, kolejności i liczby parametrów funkcji. Parametry są opcjonalne; to znaczy, funkcja może nie zawierać żadnych parametrów.
Function Body - Treść funkcji zawiera zbiór instrukcji, które definiują, co robi funkcja.
Wywołanie funkcji
Tworząc funkcję C, podajesz definicję tego, co funkcja ma robić. Aby użyć funkcji, będziesz musiał wywołać tę funkcję, aby wykonać określone zadanie.
Teraz napiszmy powyższy przykład za pomocą funkcji -
#include <stdio.h>
int getMax( int set[] ) {
int i, max;
max = set[0];
i = 1;
while( i < 5 ) {
if( max < set[i] ) {
max = set[i];
}
i = i + 1;
}
return max;
}
main() {
int set1[5] = {10, 20, 30, 40, 50};
int set2[5] = {101, 201, 301, 401, 501};
int max;
/* Process first set of numbers available in set1[] */
max = getMax(set1);
printf("Max in first set = %d\n", max );
/* Now process second set of numbers available in set2[] */
max = getMax(set2);
printf("Max in second set = %d\n", max );
}
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
Max in first set = 50
Max in second set = 501
Funkcje w Javie
Jeśli masz jasność co do funkcji w języku C, łatwo jest je zrozumieć również w Javie. Programowanie Java nazywa je jakomethods, ale reszta pojęć pozostaje mniej więcej taka sama.
Poniżej znajduje się równoważny program napisany w Javie. Możesz spróbować go wykonać, aby zobaczyć dane wyjściowe -
public class DemoJava {
public static void main(String []args) {
int[] set1 = {10, 20, 30, 40, 50};
int[] set2 = {101, 201, 301, 401, 501};
int max;
/* Process first set of numbers available in set1[] */
max = getMax(set1);
System.out.format("Max in first set = %d\n", max );
/* Now process second set of numbers available in set2[] */
max = getMax(set2);
System.out.format("Max in second set = %d\n", max );
}
public static int getMax( int set[] ) {
int i, max;
max = set[0];
i = 1;
while( i < 5 ) {
if( max < set[i] ) {
max = set[i];
}
i = i + 1;
}
return max;
}
}
Kiedy powyższy program jest wykonywany, daje następujący wynik -
Max in first set = 50
Max in second set = 501
Funkcje w Pythonie
Po raz kolejny, jeśli znasz koncepcję funkcji w programowaniu w C i Javie, to Python niewiele się różni. Poniżej podano podstawową składnię definiowania funkcji w Pythonie -
def function_name( parameter list ):
body of the function
return [expression]
Korzystając z tej składni funkcji w Pythonie, powyższy przykład można zapisać w następujący sposób -
def getMax( set ):
max = set[0]
i = 1
while( i < 5 ):
if( max < set[i] ):
max = set[i]
i = i + 1
return max
set1 = [10, 20, 30, 40, 50]
set2 = [101, 201, 301, 401, 501]
# Process first set of numbers available in set1[]
max = getMax(set1)
print "Max in first set = ", max
# Now process second set of numbers available in set2[]
max = getMax(set2)
print "Max in second set = ", max
Wykonanie powyższego kodu daje następujący wynik -
Max in first set = 50
Max in second set = 501