
книги / Технологии разработки объектно-ориентированных программ на язык C++. Основы структурного программирования на алгоритмическом языке C++
.pdfОператоры сравнения
Помимо операторов больше (>) и меньше (<) существуют операторы, позволяющие упростить запись условий. Основные из них следующие:
b >= 0 – b больше или равно нулю;
b <= 0 – b меньше или равно нулю;
b == 0 – проверка b на равенство нулю. Важно помнить, что этот оператор пишется удвоенным знаком равно (==), в отличие от оператора присваивания (=);
b != 0 – b не равно нулю.
31
Глава 7. ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ
Цикл – это конструкция, задающая многократное выполнение операторов. Цикл состоит из трех элементов тела цикла:
тело цикла – это повторяющиеся операторы;
шаг цикла – это однократное выполнение тела цикла;
параметр цикла – это величина, которая должна изменяться от шага к шагу и по которой определяется, продолжить или закончить шаг вычисления. При отсутствии параметра цикла он может стать бесконечным.
7.1.Виды циклических процессов
Арифметический цикл – это такой процесс, когда заранее известно, сколько раз надо выполнить тело цикла. Примером такого цикла является суммирование всех целых чисел от 1 до 10, так как заранее известно, сколько чисел необходимо просуммировать.
Итерационный цикл – это такой процесс, когда заранее не известно, сколько раз необходимо выполнить тело цикла, но существует только одна причина окончания цикла, а именно достижение заданного результата. Например, наполнение летнего бассейна водой с помощью ведра: сколько ведер воды придется принести, не известно, причина окончания процесса одна – наполнение бассейна.
Поисковый цикл – это такой процесс, где заранее не известно, сколько раз выполнится тело цикла, но существует более одной причины его окончания. Примером такого цикла является выполнение домашнего задания: его можно закончить, выполнив все или решив отдохнуть (в этом случае выполнение цикла тоже прекращается).
7.2.Операторы циклических процессов
Впрограммировании существует три оператора циклов:с предусловием;с постусловием;
с автоматическим изменением параметра цикла.
32

Цикл с предусловием
Условие выхода из цикла расположено до тела цикла. В теле предусмотрено изменение параметра цикла таким образом, чтобы оно происходило на каждом шаге цикла, пока условие не будет нарушено и не произойдет выход из циклического процесса.
В блок-схеме это выглядит так, как изображено на рис. 7.1.
Рис. 7.1. Цикл с предусловием
В программе на рис. 7.1 фрагмент программы цикла с предусловием:
while (условие) { тело цикла;
изменение параметра цикла;
}
Цикл с постусловием
Условие выхода из цикла расположено после тела цикла. Важно понимать, что в данном случае цикл пройдет хотя бы один раз, даже если после прохода окажется, что условие было ложным.
33

В блок-схеме это выглядит так, как изображено на рис. 7.2.
Рис. 7.2. Цикл с постусловием
Фрагмент программы цикла с постусловием:
do {
тело цикла; изменение параметра цикла;
} while (условие)
Цикл с автоматическим изменением параметра цикла
Заранее известно количество шагов в цикле. На каждом новом шаге цикла параметр автоматически изменяется от заданного начального значения до заданного конечного значения, после чего происходит выход из цикла.
В блок-схеме это выглядит так, как показано на рис. 7.3.
34

Рис. 7.3. Цикл с автоматическим изменением параметра
Фрагмент программы цикла с автоматическим изменением параметра цикла:
for (int i = 0; i != 10; i++) {
тело цикла;
}
После ключевого слова for происходит объявление переменной цикла и присваивание ей начального значения (int i = 0). Далее пишется ее конечное значение (i == 10). Последнее обозначение – это изменение переменной на каждом шаге. Знак «++» обозначает увеличение на 1, что равнозначно записи i = i + 1.
Пример работы различных операторов цикла:
Разработать алгоритм и составить программу вычисления факториала числа а.
Параметром управления циклическими процессами будет переменная целого типа. Значение факториала записывается в переменную целого типа factor.
Цикл с предусловием
Блок-схема вычисления факториала (цикл с предусловием) приведена на рис. 7.4.
35

Рис. 7.4. Вычисление факториала. Цикл с предусловием (фрагмент блок-схемы)
В программном коде это будет выглядеть следующим образом:
int a = 7, factor = 1; while (a>0) {
factor = factor * a; a = a – 1;
}
cout << factor;
Цикл с постусловием
Блок-схема вычисления факториала (цикл с постусловием) приведена на рис. 7.5.
36

Рис. 7.5. Вычисление факториала. Цикл с постусловием (фрагмент блок-схемы)
В программном коде это будет выглядеть следующим образом:
int a = 7, factor = 1; do {
factor = factor * a; a = a – 1;
} while (a>0); cout << factor;
37

Цикл с автоматическим изменением параметра
Блок-схема вычисления факториала (цикл с автоматическим изменением параметра) приведена на рис. 7.6.
Рис. 7.6. Вычисление факториала. Цикл с автоматическим
изменением параметра (фрагмент блок-схемы)
В программном коде это будет выглядеть следующим образом:
int a = 7, factor = 1;
for (int i = 1; i = a; i++) { factor = factor * i;
}
cout << factor;
Задания для самостоятельной работы:
Разработать в виде блок-схемы и программного кода алгоритм Евклида: поиск наибольшего делителя двух чисел.
38
Разработать в виде блок-схемы и программного кода алгоритм суммирования чисел, которые вводит пользователь с клавиатуры. Количество чисел не известно, 0 – признак окончания ввода.
Разработать в виде блок-схемы и программного кода алгоритм для поиска в последовательности чисел максимального четного числа. Количество чисел известно заранее – это число задает пользователь, числа вводятся с клавиатуры.
39
Глава 8. СТРУКТУРА ПРОГРАММЫ НА С++
8.1. Основная часть программы – функция main
При выполнении консольного приложения, написанного на языке С++, операционная система компьютера передает управление функции с именем main(). Функцию main() нельзя вызывать из других функций программы, она является главной.
Следующие за именем функции круглые скобки предназначены для указания параметров, которые передаются в функцию при обращении к ней. В данном случае операционная система не передает в функцию main() никаких параметров, поэтому в круглых скобках ничего нет.
Главная функция записывается следующим образом: int main(). Перед именем функции указывается тип возвращаемого значе-
ния. При обращении к главной функции целочисленное значение возвращается операционной системе. В зависимости от возвращенного значения операционная система определяет, корректно ли завершилась программа. Если же это значение не возвращено, то операционная система понимает, что программа завершилась в аварийном режиме. Для возврата целочисленного значения перед завершением функции добавляется строка
return 0; // Возвращение 0
Если программа завершилась и вернула 0, то ошибок не произошло.
После объявления функции пишутся фигурные скобки, в которых находится тело программы. Напишем программу, которая выводит на экран предложение:
int main() { |
// Главная функция |
cout << “Hello, my friends”; |
// Вывод сообщения |
system (“pause”); |
// Задержка для консоли |
return 0; |
// Программа завершилась |
успешно |
|
} |
|
40