Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.Python.8-10.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.2 Mб
Скачать

Функции в программировании

Функция — важнейший элемент структурного программирования, позволяющий группировать и обобщать программный код, который может позднее использоваться произвольное число раз. Она является законченной подпрограммой, поэтому у нее есть свои "ввод" и "вывод" — параметры (аргументы) и возвращаемое значение:

С точки зрения внешней программы функция — это "черный ящик". Функция определяет собственную (локальную) область видимости, куда входят входные параметры, а, также, те переменные, которые объявляются непосредственно в теле самой функции.

Главное, что должно быть можно сделать с функцией — это возможность ее вызвать.

Важное дополнение

Имя функции (и список ее аргументов) должны быть настолько понятными, чтобы для ее вызова программисту не нужно было изучать документацию по ней, а тем более вникать в исходный код ее реализации.

Например, на картинке выше описана функция, тела которой вы еще не видели. Можете ли вы себе представить что она делает? Как ее вызвать? Что будет в переменной a после вызова a = max(1, 2, 3)?

И обратный пример: можно ли представить себе что делает функция с именем func(a, b, c)?

Очевидно, слишком общие названия — все равно, что их отсутствие.

 

Перед использованием функция должна быть объявлена и соответствующим образом определена.

Объявление (declaration) функции содержит список параметров вместе с указанием типа каждого параметра, а, также, тип возвращаемого функцией значения.

Определение (definition) функции содержит исполняемый код функции.

Вызов функции может встретиться в программе до определения, но обязательно после объявления.

Функции, которые не возвращают значений, иногда называют процедурами.

Как написать хорошую функцию

Если вы грамотно выделили часть кода в подпрограмму, то

  1. у вас должно получиться назвать ее понятным именем, отражающим ее сущность;

  2. она должна выглядеть законченно;

  3. она должна быть не длиннее 20 строк; (это ограничение, конечно, условно)

  4. для работы ей должны быть нужны только значения входных параметров, и никакие другие данные;

  5. результат возвращается через значение функции (а не через глобальные переменные; иногда допустимо измененять переданные параметры, например, в функции сортировки).

Функции — это средство проектирования, которое позволяет осуществить декомпозицию программы на достаточно простые и легко управляемые части. Значительно проще написать решение маленьких задач по отдельности, чем реализовать весь процесс целиком. Устранение избыточности программного кода улучшает сопровождаемость кода — если что-то необходимо будет исправить, достаточно будет внести изменения всего в одном месте, а не во многих.

Преимущества структурного программирования

Выделение логически завершенного кода в отдельную структурную единицу сильно упрощает жизнь как писателя, так и читателя кода.

Синтаксически выделенные подпрограммы имеют логичные имена, которые делают код самодокументирующимся.

Сравните две программы на языке Си, присланные для проверки студентами МФТИ:

Без использования структурного программирования

#include <stdio.h> #include <stdlib.h> int main() {     int v=0;    //speed     char num [7]; //string -number of car, 6+1     int sum=0; // money      do      {      scanf( "%d %s",&v,&num);         if (v>100)         {            if ((num[1] == num[2]) || (num[2] == num[3]) || (num[1] == num[3]))              {                if ((num[1] == num[2]) && (num[2] == num[3]) && (num[1] == num[3]))              {                sum=sum+1000;              }                else                sum=sum+500;              }            else                sum=sum+100;           }     }      while ((num[0]!= 'a') && (num[1]!= '5') && (num[2]!= '5') && (num[3]!= '5') && (num[4]!= 'a') && (num[5]!= 'a'));      if (v>100)         {             sum=sum-1000;         }     printf( "%d\n",sum);     return 0; }