
- •Алгоритмы и их свойства. Представление алгоритмов
- •Структура программы и типы данных
- •Основы программирования. Операторы
- •Структурированные типы данных. Массивы
- •Структурированные типы данных. Динамические массивы
- •Этапы составления программы. Структурное программирование
- •Структурированные типы данных. Строки
- •Структурированные типы данных. Структуры (Struct).
- •Структурированные типы данных. Файлы.
- •Технологии программирования. Ошибки, тестирование
- •Подпрограммы. Входные и выходные данные. Виды параметров
- •Подпрограммы. Рекурсия
- •Динамические структуры данных. Однонаправленный список
- •Динамические структуры данных. Стек и очередь
- •Динамические структуры данных. Бинарное дерево.
- •Объектно-ориентированное программирование. Определения. Классы.
- •Объектно-ориентированное программирование. Инкапсуляция. Наследование. Полиморфизм.
- •Объектно-ориентированное программирование. Виды взаимодействия классов.
Подпрограммы. Входные и выходные данные. Виды параметров
Подпрограммой называют независимую часть программы, предназначенную для решения некой подзадачи. Подпрограмма взаимодействует с основной программой через механизм параметров -- так называют входные и выходные данные, с которыми работает подпрограмма. Параметры служат для передачи исходных данных в подпрограммы и для приема результатов работы этих подпрограмм. Исходные данные передаются в подпрограмму с помощью входных параметров, а результаты работы подпрограммы возвращаются через выходные параметры. Параметры могут быть входными и выходными одновременно.
Главное отличие подпрограммы от основной (главной) программы заключается в том, что управление может быть передано только главной программе. Подпрограмма может быть откомпилирована, но не может быть запущена на исполнение.
Работа с подпрограммой имеет два этапа: описание подпрограммы; вызов подпрограммы.
Виды параметров:
параметры-значения (группа параметров, перед которыми в заголовке подпрограммы отсутствуют слова var и const и за которыми следует их тип),
параметры-константы (группа параметров, перед которыми в заголовке подпрограммы стоит слово const и за которыми следует их тип),
параметры-переменные (var, а за каждым параметром следует тип),
нетипизированные константы и переменные (не имеют конкретного типа (их тип не указан).
Подпрограммы. Рекурсия
Подпрограмма называется рекурсивной, если она вызывает саму себя (прямая рекурсия) или вызывает другую подпрограмму, которая, в свою очередь, обращается к первой (косвенная рекурсия).
В случае прямой рекурсии вызов функцией самой себя делается непосредственно в этой же функции. Косвенная рекурсия создаётся за счёт вызова данной функции из какой-либо другой функции, которая сама вызывалась из данной функции.
Не зависимо от того, какой вид рекурсии используется (прямая или косвенная), в рекурсивной функции обязательно должна выполняться проверка какого-либо условия, в зависимости от которого осуществлялся бы выход из рекурсивной функции. Причём, необходимо гарантировать, что это условие обязательно будет выполнено через конечное количество рекурсивных вызовов, и функция в конце концов закончит работу. Иначе — аварийное завершение. Последовательный вызов функцией самой себя называют рекурсивным спуском, последовательный выход из многократного вызова — рекурсивным подъёмом.
Классическими рекурсивными алгоритмами могут быть возведение числа в целую положительную степень, вычисление факториала.
При написании рекурсивных функций следует иметь оператор if, чтобы заставить функцию вернуться без рекурсивного вызова. Если это не сделать, то, однажды вызвав функцию, выйти из нее будет невозможно. Это наиболее типичная ошибка, связанная с написанием рекурсивных функций. Надо использовать при разработке функции printf() и getchar(), чтобы можно было узнать, что происходит, и прекратить выполнение в случае обнаружения ошибки.
Рекурсия позволяет в ряде случаев создавать очень компактный код, особенно в том случае, когда при постановке задачи определение каких-либо понятий имеет явно рекурсивный вид.