158 Глава 2
Программист завершает процесс нисходящей разработки с пошаго вой детализацией, когда алгоритм на псевдокоде настолько детали зирован, чтобы его псевдокод можно было бы преобразовать в про грамму на С++. Реализованная программа на С++ окажется в этом случае простой и наглядной.
Опыт показывает, что наиболее трудной частью решения задач на компьютерах является разработка алгоритма решения. После того, как корректный алгоритм получен, процесс создания на его основе работающей программы на С++ продвигается успешно.
Многие опытные программисты пишут программы, не используя такой инструмент разработки, как псевдокод. Эти программисты полагают, что их конечная цель — решение задачи на компьютере и что написание псевдокода только задержит достижение конечного результата. Это может быть иногда оправдано для простых и хорошо знакомых задач, но может приводить к серьезным ошибкам в боль ших и сложных проектах.
Имеется некоторое противоречие между стремлением к технике вы сококачественного программирования и стремлением к наилучшей эффективности программного обеспечения. Часто достижение одной из этих целей достигается за счет другой.
Упражнения для самопроверки
Упражнения с 2.1 по 2.10 соответствуют разделам 2.1—2.12. Упражнения с 2.11 по 2.13 соответствуют разделам 2.13—2.21.
2.1. Заполнить пробелы в следующих утверждениях:
Все программы можно писать в терминах трех типов управляю щих структур: , и .
Структура выбора используется для выполнения одного
действия, если условие истинно, и другого, если условие ложно.
Повторение ряда операторов заданное число раз называется повторением.
Когда заранее не известно, сколько раз должна быть повторена группа операторов, можно использовать для оконча ния повторения.
Напишите четыре различных оператора С++, которые прибавляли бы 1 к целой переменной x.
Напишите операторы С++, выполняющие следующие действия:
Присваивание суммы x и у переменной z и увеличение значения x на 1 после этого вычисления.
Проверку, больше ли значение переменной count числа 10. Если больше, то печать текста: <<count больше, чем 10».
Уменьшение переменной x на 1 и затем ее вычитание из пере менной total.
Вычисление остатка от деления q на divisor и присваивание результата переменной q. Запишите два различных варианта такого оператора.
Управляющие структуры 159
2.4. Напишите операторы С++, решающие следующие задачи:
Объявление переменных sum и x типа int.
Задание начального значения 1 переменной x.
Задание начального значения 0 переменной sum.
Сложение переменных x и sum и присваивание результата пере менной sum.
Печать «Сумма равна » и затем значение переменной sum.
Объедините операторы, которые вы написали в упражнении 2.4, в программу, которая вычисляла бы и печатала сумму целых чисел от 1 до 10. Используйте структуру while для организации цикла, включающего операторы вычисления и приращения. Цикл должен завершаться, когда значение x становится равным 11.
Определите значения каждой переменной после осуществления вы числений. Предполагайте, что когда каждый оператор начинает вы полняться, все переменные имеют целое значение 5.
product *= x++;
quotient /= ++x;
2.7. Напишите по одному оператору С++, выполняющему следующие действия:
Ввод целой переменной x с помощью cin и ».
Ввод целой переменной у с помощью cin и ».
Задание начального значения 1 целой переменной i.
Задание начального значения 1 целой переменной power.
Умножение переменной power на x и присваивание полученного результата переменной power.
Увеличение переменной у на 1.
Проверка, меньше или равно значение у величины x. h) Вывод целой переменной power с помощью cout и «.
Используя операторы упражнения 2.7 напишите программу на С++, которая рассчитывала бы x в степени у. Программа должна вклю чать управляющую структуру повторения while.
Найдите и исправьте ошибки в следующих операторах:
a) while (с <= 5) {
product *= с; ++с;
cin « value;
if (gender == 1)
cout « "Женщина" « endl; else;
cout « "Мужчина" « endl;
2.10. Чем ошибочна следующая структура повторения while:
while (z >= 0) sum += z;
- 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. Встраиваемые функции