- •Содержание
- •1.1 Общие сведения
- •1.2 Задание к лабораторной работе
- •2.2 Задание к лабораторной работе
- •2.3 Контрольные вопросы
- •3 Лабораторная работа. Массивы и их обработка
- •3.2 Задание к лабораторной работе
- •3.3 Контрольные вопросы
- •4 Лабораторная работа. Методы сортировки массивов
- •4.1 Общие сведения
- •4.2 Задание к лабораторной работе
- •4.3 Контрольные вопросы
- •5 Лабораторная работа. Обработка символьных данных
- •5.1 Общие сведения
- •5.2 Задание к лабораторной работе
- •5.3 Контрольные вопросы
- •6 Лабораторная работа. Работа со структурами и объединениями
- •6.1 Общие сведения
- •6.2 Задание к лабораторной работе
- •6.3 Контрольные вопросы
- •7 Лабораторная работа. Файлы и работа с ними
- •7.1 Общие сведения
- •Ifstream имя_потока ("имя_файла.Расширение");
- •7.2 Задание к лабораторной работе
- •7.3 Контрольные вопросы
- •8 Лабораторная работа. Функции. Рекурсия
- •8.1 Общие сведения
- •8.2 Задание к лабораторной работе
- •8.3 Контрольные вопросы
- •Приложение а Способы описания алгоритмов
- •Список литературы
8 Лабораторная работа. Функции. Рекурсия
Цель: получить практические навыки использования функций в С++.
8.1 Общие сведения
Кроме стандартных функций, размещенных в заголовочных файлах, язык C++ позволяет формировать пользовательские функции. Эти функции целесообразно создавать, если при решении задач возникает необходимость проводить вычисления многократно по одним и тем же алгоритмам. Применение функций позволяет разделить программу на простые, легко контролируемые части. При использовании функций необходимо различать описание функции и оператор вызова функции.
Структура функции похожа на структуру программы main. Описание функции содержит заголовок функции, объявления переменных и операторы:
тип_функции имя_функции (список_формальных_параметров)
{
объявления переменных;
оператор1;
…;
операторN;
}
Здесь: тип_функции - тип результата, возвращаемого в основную программу; имя_функции - уникальное имя, соответствующее по смыслу операции, которую выполняет функция; список_формальных_параметров - перечень формальных параметров и их типов.
Для вызова функции достаточно указать ее имя со списком фактических параметров в любом выражении вызывающей программы:
имя_функции (список_фактических_параметров);
Для возвращения вычисленного значения в основную программу в функциях используется оператор:
return (результат);
Если обращение к функции предшествует ее описанию, в начало программы следует поместить прототип функции. Прототип функции содержит информацию об имени функции, типе возвращаемого значения, количестве и типе формальных параметров.
Локальные переменные объявляются внутри функции точно так же, как и внутри главной функции main. Локальные переменные действуют только внутри функции, в которой они объявлены. Глобальные переменные объявляются в начале программы вне какой-либо функции. Глобальные переменные доступны для любой функции в программе. Если локальная и глобальная переменные имеют одинаковое имя, то переменная в функции воспринимается компилятором C++ как локальная переменная. Если внутри функции нужно использовать глобальную переменную, совпадающую по имени с локальной переменной, то в этом случае нужно воспользоваться глобальным оператором разрешения:
:: имя_переменной
Поскольку значения глобальных переменных могут быть легко изменены любой функцией, не рекомендуется их использование в программах.
8.2 Задание к лабораторной работе
Используя рекурсию, решить задачу, соответствующую варианту, выбранному по таблице 8.1.
Таблица 8.1 – Варианты заданий
|
Вариант |
Задание |
|
1 |
|
|
2 |
|
Продолжение таблицы 8.1
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
Окончание таблицы 8.1
|
21 |
|
|
22 |
|
|
23 |
|
|
24 |
|
|
25 |
|
|
26 |
|
|
27 |
|
|
28 |
|
|
29 |
|
|
30 |
|
8.3 Контрольные вопросы
8.3.1 Дайте определение функции.
8.3.2 Что представляет собой описание функции?
8.3.3 С какой целью используются прототипы?
8.3.4 С какой целью в типе функции используется void?
8.3.5 Как осуществляется обращение к функции?
8.3.6 Что понимается под фактическими параметрами?
8.3.7 В чем заключается отличие формальных параметров функции от фактических?
8.3.8 Как осуществляется выход из функции?
8.3.9 В чем заключаются преимущества и недостатки рекурсивных функций?
8.3.10 С какой целью используются локальные и глобальные параметры?
