Два преимущества использования подпрограмм в программировании

Функция-это логически сгруппированный набор операторов, выполняющих определенную задачу. В программе C функция создается для достижения чего-то. Каждая программа C имеет по крайней мере одну функцию, т. е. main (), где начинается выполнение программы. Это обязательная функция в C.

Преимущества функции

Преимущества использования функций:

  • Избегайте повторения кодов.
  • Повышает читаемость программы.
  • Разделите сложную задачу на более простые.
  • Уменьшает вероятность ошибки.
  • Изменение программы становится проще с помощью функции.

Компоненты функции

Функция обычно имеет три компонента. Они являются:

  1. Прототип/Объявление функции
  2. Определение функции
  3. Вызов функции

1. Прототип/Объявление функции

Объявление функции-это оператор, информирующий компилятор о

  • Имя функции
  • Тип аргументов
  • Количество аргументов
  • Тип возвращаемого значения

Синтаксис объявления функции

returntype function_name ([тип аргументов]);

Например,

void sort(int []); /*function name = sort. Получает массив целых чисел в качестве аргумента и ничего не возвращает*/ int product(int,int); /*имя функции = product. Принимает в качестве аргумента два целых числа и возвращает целое число*/

Объявление функции не требует указания имени аргументов. Можно указать только тип аргументов.

2. Определение функции

Определение функции состоит из тела функции. Тело состоит из блока инструкций, которые определяют, какая задача должна быть выполнена. При вызове функции управление передается в определение функции.

Синтаксис определения функции

returntype function_name ([аргументы]) { заявление(ы); 

Заявление о возврате

Оператор return используется для возврата значений вызывающей функции вызываемой функцией. Тип данных значения, которое может возвращать функция, указывается во время объявления функции. Функция с типом void в качестве возвращаемого значения не возвращает никакого значения.

Кроме основного типа данных, он также может возвращать объект и указатели. Оператор return обычно помещается в конце определения функции или внутри ветвящегося оператора.

Синтаксис инструкции return

возвращаемое значение;

Например,

int product (int x, int y) { int p = x*y; 

В этой функции возвращаемый тип product () — int. Таким образом, он возвращает целочисленное значение p вызывающей функции.

3. Вызов функции

Вызов функции может быть выполнен с помощью оператора call. Оператор вызова функции состоит из имени функции и требуемого аргумента. Заключенного в круглые скобки.

Синтаксис вызова функции

function_name ([фактические аргументы]);

Например,

сортировка(a); p = произведение(x,y);

Функцию можно вызвать двумя способами. Они являются:

  • Вызов по значению
  • Звоните по ссылке

Вызов по значению

Когда функция вызывается по значению. Копия фактического аргумента передается вызываемой функции. Скопированные аргументы занимают отдельное место в памяти, чем фактический аргумент. Если какие-либо изменения, внесенные в эти значения внутри функции, видны только внутри функции. Их ценности остаются неизменными вне его.

Пример: программа на языке Си для нахождения суммы двух чисел с помощью функции (вызов по значению)

int main() { int a,b,s; printf(scanf(s=sum(a,b); // fucntion вызов printf(int sum(int x,int y) // определение функции { 

В этой программе пользователь вводит два целочисленных значения. Определяется пользовательская функция sum (), которая принимает в качестве аргументов два целых числа и возвращает сумму этих значений. Эта функция вызывается из функции main() и выводится возвращаемое значение.

Выход

Введите два целых числа:11 6 Сумма = 17

Звоните по ссылке

В этом методе передачи параметра вместо значения копируется адрес аргумента. Внутри функции адрес аргумента используется для доступа к фактическому аргументу. Если какие-либо изменения вносятся в эти значения внутри функции, они видны как внутри. Так и вне функции.

Пример: программа на языке Си для замены двух значений с помощью функции (вызов по ссылке).

int main() { int a,b; printf(scanf(printf(printf(printf(swap(&a,&b); // вызов функции по ссылке printf(printf(printf(void swap(int *x. Int *y) // определение функции { int temp; temp = *x; *x = *y; 

Эта программа меняет местами значения двух целочисленных переменных. Пользователь вводит два целочисленных значения, которые передаются по ссылке функции swap (). Которая меняет местами значения двух переменных.

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

Выход

Введите два числа: 12 35 Перед заменой а = 12 b = 35 После замены а = 35 b = 12 

Типы функций

Есть два вида функций. Они являются:

  1. Библиотечные функции
  2. Определяемые пользователем функции

1. Библиотечные функции

Библиотечные функции-это встроенные функции, которые уже определены в библиотеке C.

Прототип этих функций записывается в заголовочные файлы. Поэтому нам нужно включить соответствующие заголовочные файлы перед использованием библиотечной функции. Например, прототип математических функций, таких как pow (), sqrt ()и т. Д., Присутствует в math.h, прототип exit(), malloc(), calloc() и т. Д.-в stdlib.h и т. Д.

2. Пользовательские функции

Те функции, которые определены пользователем для использования их при необходимости. Называются пользовательскими функциями. Определение функции записывается пользователем.

main ()-это пример пользовательской функции.