Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР5.doc
Скачиваний:
0
Добавлен:
13.11.2018
Размер:
99.84 Кб
Скачать

Лабораторная работа №5

Функции

1 Цель работы

Приобретение навыков использования функций при написании программ. Закрепление навыков работы с массивами и строками.

2 Теоретические сведения

2.1 Функции

Функция – это самостоятельная единица программы, спроектированная для реализации конкретной задачи. В языке С/С++ функция – строительный блок всех программ. Вызов функций приводит к выполнению некоторых действий.

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

2.1.1 Функции, возвращающие значение

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

Общий вид определения функции выглядит следующим образом:

тип_возвращаемого_значения имя_функции(список_формальных_параметров)

{

тело функции

}

Здесь тип_возвращаемого_значения определяет тип переменной, которую возвращает функция в качестве своего значения. Функция может возвращать переменные любого типа кроме массива, но может возвращать указатель на массив.

имя_функции – правильный идентификатор.

список_формальных_параметров – список типов переменных и их имен, разделенных запятой.

Общий вид списка формальных параметров функции выглядит следующим образом:

имя_функции(тип_переменной1 имя_переменной1, …, тип_переменнойN имя_переменнойN)

Например, функция с двумя аргументами целого типа, возвращающая целое число, будет определена следующим образом:

int func(int a, int b)

{

тело функции

}

Выполнение функции, возвращающей значения, обязано завершиться оператором return вида

return e;

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

2.1.1.1 Вызов функции

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

Например, данный фрагмент программы является правильным:

x=power(a, n);

if (max(5, 2) > 10) printf(“больше”);

for (ch=getchar(); isdigit(ch);) …

Функция не может стоять в левой части оператора присваивания. Следовательно, оператор

power(a, n)=45;

является ошибочным.

2.1.2 Функции, возвращающие значение

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

Определения функции, не возвращающей значения, имеют следующий формат:

void имя_функции(список_формальных_параметров)

{

тело функции

}

Выполнение такой функции завершается, если выполнено ее тело или оператор return вида

return 0;

Функция, не возвращающая значения, может содержать более одного оператора return.

Функции, определенные со спецификатором void, нельзя использовать в выражениях.

Например, данный фрагмент программы является правильным:

void print_vertical(char *a)

{

}

int main()

{

if (x > 10) print_vertical(p); /* функция print_vertical(p) использована в

операторе ветвления самостоятельный оператор*/

return 0;

}

Данный фрагмент программы является ошибочным:

void print_vertical(char *a)

{

}

int main()

{

if (x > 10) y=print_vertical(p); /* функция print_vertical(p) использована в

выражении как переменная*/

return 0;

}

2.1.3 Объявление функций

В языке С++ все функции должны быть объявлены до своего первого вызова. Обычно для этого используют прототипы функций. В языке С прототипов не было. Но так как в языке С++ прототипы обязательны рекомендуем их использовать.

Общий вид прототипа выглядит следующим образом:

имя_функции(тип_переменной1 имя_переменной1, …, тип_переменнойN имя_переменнойN);

Указывать имена параметров необязательно.

Если функция определяется перед функцией main, то прототип не нужен.

Например,

void function(char a) // определение функции function()

{

}

int main()

{

if (x > 10) function(p); // вызов функции function()

return 0;

}

В противном случае необходимо объявит функцию перед функцией main, используя ее прототип.

Например,

void function(char a); // объявление функции function()

int main()

{

if (x > 10) function(p); // вызов функции function()

return 0;

}

void function(char a) // определение функции function()

{

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]