Учебники

Компьютерное программирование — Функции

Функция — это блок организованного, многократно используемого кода, который используется для выполнения одного связанного действия. Функции обеспечивают лучшую модульность для вашего приложения и высокую степень повторного использования кода. Вы уже видели различные функции, такие как 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 —

Live Demo

#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 вы даете определение того, что должна делать функция. Чтобы использовать функцию, вам нужно будет вызвать эту функцию для выполнения определенной задачи.

Теперь напишем приведенный выше пример с помощью функции —

Live Demo

#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. Вы можете попробовать выполнить его, чтобы увидеть результат —

Live Demo

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, приведенный выше пример можно записать следующим образом:

Live Demo

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

Когда приведенный выше код выполняется, он дает следующий результат —