Функция — это блок организованного, многократно используемого кода, который используется для выполнения одного связанного действия. Функции обеспечивают лучшую модульность для вашего приложения и высокую степень повторного использования кода. Вы уже видели различные функции, такие как printf () и main () . Это так называемые встроенные функции, предоставляемые самим языком, но мы можем также написать и свои собственные функции, и это руководство научит вас, как писать и использовать эти функции на языке программирования Си.
Хорошая вещь о функциях в том, что они известны под несколькими именами. Разные языки программирования называют их по-разному, например, функции, методы, подпрограммы, процедуры и т. Д. Если вы сталкиваетесь с любой такой терминологией, то просто представьте себе ту же концепцию, которую мы собираемся обсудить в этом руководстве.
Начнем с программы, в которой мы определим два массива чисел, а затем из каждого массива найдем наибольшее число. Ниже приведены шаги, чтобы узнать максимальное число из данного набора чисел —
1. Get a list of numbers L 1 , L 2 , L 3 ....L N 2. Assume L 1 is the largest, Set max = L 1 3. Take next number L i from the list and do the following 4. If max is less than L i 5. Set max = L i 6. If L i 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 является ключевым словом void .
-
Имя функции — это фактическое имя функции. Имя функции и список параметров вместе составляют сигнатуру функции.
-
Список параметров — параметр похож на заполнитель. Когда вызывается функция, вы передаете значение в качестве параметра. Это значение называется фактическим параметром или аргументом. Список параметров относится к типу, порядку и количеству параметров функции. Параметры являются необязательными; то есть функция может не содержать параметров.
-
Тело функции — Тело функции содержит набор операторов, которые определяют, что делает функция.
Тип возврата — функция может возвращать значение. Return_type — это тип данных значения, которое возвращает функция. Некоторые функции выполняют нужные операции без возврата значения. В этом случае return_type является ключевым словом void .
Имя функции — это фактическое имя функции. Имя функции и список параметров вместе составляют сигнатуру функции.
Список параметров — параметр похож на заполнитель. Когда вызывается функция, вы передаете значение в качестве параметра. Это значение называется фактическим параметром или аргументом. Список параметров относится к типу, порядку и количеству параметров функции. Параметры являются необязательными; то есть функция может не содержать параметров.
Тело функции — Тело функции содержит набор операторов, которые определяют, что делает функция.
Вызов функции
При создании функции 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-программирование называет их как методы , но остальные концепции остаются более или менее одинаковыми.
Ниже приводится эквивалентная программа, написанная на 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
Когда приведенный выше код выполняется, он дает следующий результат —