Компьютерное программирование - Функции
Функция - это блок организованного многократно используемого кода, который используется для выполнения одного связанного действия. Функции обеспечивают лучшую модульность вашего приложения и высокую степень повторного использования кода. Вы уже видели различные функции, такие какprintf() и main(). Они называются встроенными функциями, предоставляемыми самим языком, но мы также можем написать свои собственные функции, и в этом руководстве вы научитесь писать и использовать эти функции на языке программирования C.
В функциях хорошо то, что они известны под несколькими именами. В разных языках программирования они называются по-разному, например, функции, методы, подпрограммы, процедуры и т. Д. Если вы встретите такую терминологию, просто представьте себе ту же концепцию, которую мы собираемся обсудить в этом руководстве.
Начнем с программы, в которой мы определим два массива чисел, а затем из каждого массива найдем наибольшее число. Ниже приведены шаги, чтобы узнать максимальное число из заданного набора чисел -
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
Давайте переведем вышеуказанную программу на язык программирования 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 );
}
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
Max in first set = 50
Max in second set = 501
Если вам понятен приведенный выше пример, тогда станет легко понять, зачем нам нужна функция. В приведенном выше примере есть только два набора чисел, set1 и set2, но рассмотрим ситуацию, когда у нас есть 10 или более похожих наборов чисел, чтобы узнать максимальные числа из каждого набора. В такой ситуации нам придется повторять, обрабатывая 10 или более раз, и в конечном итоге программа станет слишком большой из-за повторяющегося кода. Чтобы справиться с такой ситуацией, мы пишем наши функции, в которых мы пытаемся сохранить исходный код, который будет использоваться снова и снова в нашем программировании.
Теперь давайте посмотрим, как определить функцию на языке программирования C, а затем в следующих разделах мы объясним, как их использовать.
Определение функции
Общая форма определения функции на языке программирования C следующая:
return_type function_name( parameter list ) {
body of the function
return [expression];
}
Определение функции в программировании C состоит из заголовка функции и тела функции . Вот все части функции -
Return Type- Функция может возвращать значение. Вreturn_type- тип данных значения, возвращаемого функцией. Некоторые функции выполняют нужные операции без возврата значения. В этом случае return_type - это ключевое словоvoid.
Function Name- Это настоящее имя функции. Имя функции и список параметров вместе составляют сигнатуру функции.
Parameter List- Параметр похож на заполнитель. Когда функция вызывается, вы передаете значение в качестве параметра. Это значение называется фактическим параметром или аргументом. Список параметров относится к типу, порядку и количеству параметров функции. Параметры не обязательны; то есть функция может не содержать параметров.
Function Body - Тело функции содержит набор операторов, определяющих, что делает функция.
Вызов функции
Создавая функцию C, вы даете определение того, что функция должна делать. Чтобы использовать функцию, вам нужно будет вызвать эту функцию для выполнения определенной задачи.
Теперь давайте напишем приведенный выше пример с помощью функции -
#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 );
}
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
Max in first set = 50
Max in second set = 501
Функции в Java
Если вы хорошо разбираетесь в функциях программирования на C, то их легко понять и в Java. Программирование на Java называет ихmethods, но остальные концепции остаются более или менее такими же.
Ниже приводится эквивалентная программа, написанная на Java. Вы можете попробовать выполнить его, чтобы увидеть результат -
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;
}
}
Когда вышеуказанная программа выполняется, она дает следующий результат -
Max in first set = 50
Max in second set = 501
Функции в Python
Еще раз, если вы знакомы с концепцией функций в программировании на C и Java, то Python не сильно отличается. Ниже приведен основной синтаксис определения функции в Python -
def function_name( parameter list ):
body of the function
return [expression]
Используя этот синтаксис функции в Python, приведенный выше пример можно записать следующим образом:
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
Когда приведенный выше код выполняется, он дает следующий результат:
Max in first set = 50
Max in second set = 501