- •Некоммерческое акционерное общество
- •Технологии программирования
- •1.1 Общие сведения
- •1.2 Задание к лабораторной работе
- •Контрольные вопросы
- •2 Лабораторная работа. Характерные приемы программирования
- •2.1 Общие сведения
- •2.2 Задание к лабораторной работе
- •3 Лабораторная работа. Массивы и их обработка
- •Общие сведения
- •3.2 Задание к лабораторной работе
- •2.3 Контрольные вопросы
- •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 Общие сведения
- •7.2 Задание к лабораторной работе
- •7.3 Контрольные вопросы
- •8 Лабораторная работа. Функции. Рекурсия
- •8.1 Общие сведения
- •8.2 Задание к лабораторной работе
- •8.3 Контрольные вопросы
- •Список литературы
- •Содержание
- •050013, Алматы, ул. Байтурсынова, 126
7.3 Контрольные вопросы
7.3.1 Что представляют собой файлы?
7.3.2 Какие типы файлов Вам известны?
7.3.3 Какие библиотечные функции применяются при работе с файлами?
7.3.4 Из каких шагов складывается работа с файлами?
7.3.5 Какие операторы используются при работе с файлами?
7.3.6 Перечислите режимы записи данных в файл?
7.3.7 Как добавить данные в файл?
7.3.8 Приведите пример чтения данных из файла.
7.3.9 Приведите пример записи массива в файл.
7.3.10 Каковы особенности записи массива в файл?
8 Лабораторная работа. Функции. Рекурсия
Цель: получить практические навыки использования функций в С++.
8.1 Общие сведения
Кроме стандартных функций, размещенных в заголовочных файлах, язык C++ позволяет формировать пользовательские функции. Эти функции целесообразно создавать, если при решении задач возникает необходимость проводить вычисления многократно по одним и тем же алгоритмам. Применение функций позволяет разделить программу на простые, легко контролируемые части. При использовании функций необходимо различать описание функции и оператор вызова функции.
Структура функции похожа на структуру программы main. Описание функции содержит заголовок функции, объявления переменных и операторы:
тип_функции имя_функции (список формальных_параметров)
{
объявления переменных;
оператор1;
…;
операторы; }
Здесь: тип_функции — тип возвращаемого в основную программу результата;
имя_функции — уникальное имя, соответствующее по смыслу операции, которую выполняет функция (например, max — определение максимального из двух чисел);
список_формальных_параметров — перечень формальных параметров и их типов.
Формальные параметры — это наименования переменных, через которые передается информация из основной программы в функцию.
Для вызова функции достаточно указать ее имя со списком фактических параметров в любом выражении вызывающей программы:
имя_функции (список_фактических_параметров);
Фактические параметры — это наименования переменных, значения которых при обращении к функции, присваиваются соответствующим формальным параметрам.
Для возвращения вычисленного значения в основную программу в функциях используется оператор return(результат);
Если описание функции размещается в программе после обращения к ней, в начало программы нужно поместить прототип функции. Прототип функции содержит информацию об имени функции, типе возвращаемого значения, количестве и типе формальных параметров, например:
float max(float, float);
Кроме переменных, в качестве формальных параметров в функциях могут выступать и массивы.
Рекурсия - вычислительный процесс, направленный на решение определенной задачи таким образом, что само решение использует этот же процесс, решающий аналогичную подзадачу. В программировании под рекурсией понимают такую реализацию, в которой подпрограмма использует в своем теле вызов самой себя. Такие вызовы называют рекурсивными. Когда функция A в своем теле вызывает только одну рекурсивную функцию (саму себя), то говорят о простой рекурсии. Под косвенной рекурсией понимают явление, когда рекурсивные функции вызывают друг друга (например, функция А вызывает B, а функция B вызывает A).
Рекурсивные алгоритмы сложнее отлаживать, но порой они позволяют очень гибко и красиво решить задачу. Известно, что любой рекурсивный алгоритм можно заменить нерекурсивным, но это будет стоить больше времени на реализацию. Главное, чтобы рекурсивная функция не вызывала себя бесконечно, иначе программа не будет работать. Поэтому при реализации рекурсивных алгоритмов необходимо уделять внимание тому, чтобы алгоритм был конечным, т.е. выполнение рекурсивной функции должно когда-нибудь завершиться.
