178 Глава 3
План
Введение
Программные модули в С++
Математические библиотечные функции
Функции
Определение функций
Прототипы функций
Заголовочные файлы
Генерация случайных чисел
Пример: азартная игра З.Ю.Классы памяти
Правила, определяющие область действия
Рекурсия
Пример использования рекурсии: последовательность чисел Фибоначчи
3.14.Рекурсии или итерации
Функции с пустыми списками параметров
Встраиваемые функции
Ссылки и ссылочные параметры 3.18.Аргументы по умолчанию
3.19.Унарная операция разрешения области действия
3.20.Перегрузка функций
3.21.Шаблоны функции
3.22.Размышления об объектах: идентификация атрибутов
Резюме • Терминология • Типичные ошибки программирования • Хороший стиль программирования • Советы по повышению эффективности • Замечания по мобильности • Замечания по технике программирования • Упражнения для самопроверки • Ответы на упражнения для самопроверки • Упражнения
3.1. Введение
Большинство компьютерных программ, решающих реальные практические задачи, намного превышают те программы, которые были представлены в первых главах. Экспериментально показано, что наилучшим способом создания и поддержки больших программ является их конструирование из малень-
Функции 179
ких фрагментов, или модулей, каждый из которых более управляем, чем сложная программа. Эта техника называется разделяй и властвуй. В этой главе описываются многие ключевые свойства языка С++, которые облегчают проектирование, реализацию, работу и сопровождение больших программ.
3.2. Программные модули в С++
Модули в С++ называются функциями и классами. Обычно программы на С++ пишутся путем объединения новых функций, которые пишет сам программист, с функциями, уже имеющимися в стандартной библиотеке С, и путем объединения новых классов, которые пишет сам программист, с классами, уже имеющимися в различных библиотеках классов. В этой главе мы сосредоточим внимание на функциях; классы мы будем детально обсуждать, начиная с главы 6.
Стандартная библиотека С обеспечивает широкий набор функций для выполнения типовых математических расчетов, операций со строками, с символами, ввода-вывода, проверки ошибок и многих других полезных операций. Это облегчает работу программиста, поскольку эти функции обладают многими из необходимых программисту свойств. Функции стандартной библиотеки С являются частью среды программирования С++.
Хороший стиль программирования 3.1
Внимательно изучайте широкий набор функций в стандартной библиотеке ANSI С и классов в различных библиотеках классов.
Замечание по технике программирования 3.1
Избегайте повторного изобретения колеса. Если возможно, используйте стандартную библиотеку ANSI С вместо того, чтобы писать новые функции. Это сокращает затраты времени на создание программы.
Замечание по мобильности 3.1
Использование стандартной библиотеки ANSI С увеличивает мобильность программы.
Программист может написать функции, чтобы определить какие-то специфические задачи, которые можно использовать в разных местах программы. Эти функции иногда называют функциями, определенными пользователем. Операторы, реализующие данную функцию, пишутся только один раз и скрыты от других функций.
Функция активизируется (т. e. начинает выполнять запроектированную для нее задачу) путем вызова функции. В вызове функции указывается ее имя и дается информация (в виде аргументов), необходимая вызываемой функции для ее работы. Это аналогично иерархической форме управления. Начальник (вызывающая функция или вызывающий оператор) просит подчиненного (вызываемую функцию) выполнить задание и возвратить (т.е. сообщить) результаты после того, как задание выполнено. Функция-начальник не знает, как функция-подчиненный выполняет порученное ей задание. Подчиненный может вызвать другие подчиненные функции, причем началь-
180
- 116 Глава 2
- 2.13. Основы повторения, управляемого счетчиком
- 2.14. Структура повторения for (цикл)
- 120 Глава 2
- 122 Глава 2
- 2.15. Пример использования структуры for
- 124 Глава 2
- 126 Глава 2
- 2.16. Структура множественного выбора switch
- Глава 2
- 130 Глава 2
- 132 Глава 2
- 2.17. Структура повторения do/while
- 134 Глава 2
- 2.18. Операторы break и continue
- Глава 2
- 2.19. Логические операции
- 138 Глава 2
- Глава 2
- 2.21. Заключение по структурному программированию
- IfcrpyKTypa (единственный выбор)
- Глава 2
- Глава 2
- 148 Глава 2
- Глава 2
- Глава 2
- Глава 2
- 156 Глава 2
- 158 Глава 2
- 160 Глава 2
- 2.1. А) следование, выбор и повторение, b) if/else. С) управляемым счет чиком или определенным заранее, d) Метку, сигнал, флаг или лож ный сигнал.
- 162 Глава 2
- 164 Глава 2
- 166 Глава 2
- 168 Глава 2
- 170 Глава 2
- 172 Глава 2
- 174 Глава 2
- 176 Глава 2
- 178 Глава 3
- Глава 3
- 3.3. Математические библиотечные функции
- 3.4. Функции
- Глава 3
- 3.5 Определения функций
- 184 Глава 3
- 186 ГлаваЗ
- 3.6. Прототипы функций
- 188 Глава 3
- 3.7. Заголовочные файлы
- 3.8. Генерация случайных чисел
- Глава 3
- 192 Глава 3
- 194 Глава 3
- 3.9. Пример: азартная игра
- Глава 3
- 198 Глава 3
- 3.10. Классы памяти
- 200 Глава 3
- 3.11. Правила, определяющие область действия
- 202 Глава 3
- 204 Глава 3
- 3.12 Рекурсия
- Глава 3
- 6) Значения, возвращаемые после каждого рекурсивного вызова
- 3.13. Пример использования рекурсии: последовательность чисел Фибоначчи
- Глава 3
- 3.14. Рекурсии или итерации
- 212 Глава 3
- Глава 3
- Глава 4
- Глава 5
- Глава 6
- 3.15. Функции с пустыми списками параметров
- 214 Глава 3
- 3.16. Встраиваемые функции