Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы программирования. Учебно-методический комплекс.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

Лекция 6 Повторение одного или нескольких операторов. Операторы цикла.

Для повторения операторов определенное число раз программы используют оператор C++ for.

С помощью оператора C++ while программы повторяют операторы до тех пор, пока указанное условие истинно.

Оператор C++ do while позволяет программам выполнять операторы по крайней мере один раз, а затем, возможно, повторять операторы, основываясь на определенном условии.

Повторение операторов указанное число раз Одной из наиболее широко используемых операций в ваших

программах является повторение одного или нескольких операторов определенное число раз. Например, одна программа могла бы повторять один и тот же оператор, чтобы напечатать пять копий файла, а другая могла бы повторять некоторый Набор операторов 30 раз, чтобы определить, поднялась или упала цена ваших 30 акций. Оператор C++ for предоставляет чрезвычайно простую возможность программам повторять один или несколько операторов указанное число раз.

Если программа использует оператор for (часто называемый циклом for), она должна указать переменную, которая называется управляющей переменной, хранящей количество выполнений цикла. Например, следующий цикл for использует переменную count для хранения количества выполнений цикла. В данном случае цикл будет выполнен десять раз.

for (count = 1; count <= 10; count++)

оператор;

Цикл for состоит из четырех частей. Первые три части управляют количеством выполнений цикла. Сначала оператор count = 1, присваивает переменной управления начальное значение. Цикл for выполняет эту инициализацию один раз при запуске цикла. Далее цикл проверяет условие count <= 10. Если условие истинно, цикл for выполняет следующий оператор. Если условие ложно, цикл завершается и программа продолжает свое выполнение с первого оператора, следующего за циклом. Если условие истинно и цикл for выполняет свой оператор, то после этого цикл увеличивает переменную count, используя оператор count++. Далее программа проверяет условие count <= 10.

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

30

Если это условие все еще истинно, то опять повторяется выполнение оператора внутри цикла, увеличение и проверка переменной count

for (count = 1; count <= 10; count++)

Инициализация Проверка Увеличение

Следующая программа firstfor.cpp использует цикл for для вывода на экран дисплея значений от 1 до 100:

#include <iostream.h> void main(void)

{

int count;

for (count = 1; count <=100; count++) cout << count <<' ';

}

Как видно, оператор for инициализирует переменную count значением 1. Затем цикл проверяет, меньше ли значение переменной count или равно 100. Если это так, цикл for выполняет соответствующий оператор и затем увеличивает count, повторяя проверку.

Следующая программа askcount.cpp выводит сообщение, запрашивающее пользователя ввести число, при котором цикл должен завершиться. Затем программа выводит числа от одного до указанного значения:

#include <iostream.h> void main(void)

{

int count;

int ending_value;

cout << "Введите конечное значение и нажмите Enter: "; cin >> ending_value;

for (count = 0; count <= ending_value; count++) cout << count << ' ';

}

Если вводится значение 0 или 1, цикл for никогда не выполняется, потому что условие count <= ending_value сразу же ложно. Если значение вне диапазона значений, которые может хранить переменная типа int, возникнет ошибка переполнения. Например, запуск программы и ввод значение 50000. Поскольку это значение превышает наибольшее возможное для переменной типа int, то переполнение приводит к отрицательному значению, которое предотвращает выполнение цикла.

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

31

Циклы for C++ поддерживают составные операторы

Если программы выполняют несколько операторов внутри if или else, то такие операторы следует сгруппировать внутри левой и правой фигурных скобок. Это же относится и к нескольким операторам в цикле for. Следующая программа ADD1_100.CPP зацикливает числа от 1 до 100, выводя и добавляя каждое число в общий итог:

#include <iostream.h> void main(void)

{

int count;

int total = 0;

for (count = 1; count <= 100; count++)

{

cout << "Прибавляю " << count << " к " << total; total = total + count;

cout << " получаю " << total << endl;

}

}

Группируя операторы внутри фигурных скобок, цикл for тем самым может выполнить несколько операторов за один проход (называемый umepaцией цикла).

Изменение и увеличение цикла for

Следующая программа by_fives.cpp выводит каждое пятое число в диапазоне от 0 до 100:

#include <iostream.h> void main(void)

{

int count;

for (count = 0; count <= 100; count += 5) cout << count << ' '';

}

Если откомпилировать эту программу, на экране будут отображаться числа 0, 5,10 и т. д. до 100. Оператор цикла for использует для увеличения переменную count.

count += 5;

Если добавить некоторое значение к текущему значению переменной, а затем присвоить результат той же переменной, C++ позволяет сделать это двумя способами. Первый: программе необходимо добавить значение 5 к переменной count, это можно сделать, как показано ниже:

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

32

count = count + 5;

Второй: C++ позволяет использовать краткую запись, представленную ниже, для добавления значения 5 к переменной count.

count += 5;

Поскольку это легче записать, то данная краткая форма является общепринятой внутри циклов.

При использовании цикла for не обязаны продвигать счетчик в сторону увеличения. Следующая программа cnt_down.cpp использует цикл for для вывода чисел в порядке уменьшения от 100 до 1:

#include <iostream.h> void main(void)

{

int count ;

for (count = 100; count >= 1; count--) cout << count << ' ';

}

Цикл for инициализирует переменную count значением 100. На каждой итерации цикл уменьшает значение этой переменной на 1. Цикл завершается, когда переменная count содержит значение 0.

Остерегайтесь бесконечных циклов

Цикл for предоставляет программам способ повторять связанные операторы определенное количество раз. Используя переменную управления, цикл for по существу считает количество выполненных итераций. Когда цикл достигает своего конечного условия, программа прекращает повторение операторов и продолжает свое выполнение с первого оператора, следующего за циклом for.

К сожалению, из-за ошибок в программах в некоторых случаях цикл никогда не достигает своего завершающего условия и, таким образом, зацикливается навсегда (или до тех пор, пока вы не прервете программу). Такие не завершающиеся циклы называются бесконечными циклами. Другими словами, это циклы, не имеющие способа для завершения. Например, следующий оператор for создает бесконечный цикл:

for (count = 0; count < 100; wrong_variable++) // операторы

Цикл for использует переменную count в качестве своей управляющей переменной. Однако в секции цикла увеличения программа увеличивает не ту переменную. В результате цикл никогда не увеличивает переменную count, и она никогда не будет иметь

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

33

значение больше или равно 100. Таким образом, этот цикл превращается в никогда не завершающийся бесконечный цикл.

Важно обратить внимание, что циклы for не ограничиваются использованием переменных типа int в качестве их управляющих переменных. Например, следующая программа loopvar.cpp использует переменную типа char для вывода букв алфавита внутри одного цикла и переменную типа float для вывода чисел с плавающей точкой внутри другого цикла:

#include <iostream.h> void main(void)

{

char letter; float value;

for (letter = 'A'; letter <= 'Я'; letter++) cout << letter;

cout << endl;

for (value = 0.0; value <= 1.0; value += 0.1) cout << value << ' ';

cout << endl;

}

Если откомпилировать и запустить эту программу, на экране появится следующий вывод:

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9

Повторение цикла определенное число раз.

Одна из наиболее общих операций, которую будут выполнять программы, состоит в повторении одного или нескольких операторов определенное количество раз. Оператор C++ for позволяет программам сделать именно это. Такой оператор for использует управляющую переменную, хранящую количество выполнений цикла. Общий формат оператора for выглядит так:

for (инициализация; проверка; увеличение) оператор;

При запуске этот цикл for присваивает начальное значение управляющей переменной цикла. Далее программа проверяет условие цикла. Если условие истинно, она выполняет операторы внутри цикла, затем увеличивает управляющую переменную цикла и повторяет проверку условия. Если условие истинно, процесс повторяется. Если же условие ложно, цикл for завершается и программа продолжает свое выполнение с первого оператора, следующего за циклом for.

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

34

взгляд на цикл while

Цикл C++ for позволяет программам повторять один или несколько операторов определенное количество раз. Однако в некоторых случаях программе необходимо повторять операторы, пока удовлетворяется (истинно) некоторое условие. Например, как читать содержимое файла. Такие программы могли бы повторять цикл, пока не встретится конец файла. В ситуациях, когда программам необходимо выполнять цикл, пока удовлетворяется некоторое условие (но не обязательно определенное количество раз), программы могут использовать оператор C++ while. Общий формат оператора while выглядит так:

while (условие_верно) оператор;

Если программа встречает оператор while, она проверяет заданное условие. Если условие истинно, программа выполняет операторы цикла while. После выполнения последнего оператора в цикле, цикл while опять проверяет условие. Если условие все еще истинно, повторяются операторы цикла и повторяется данный процесс. Когда условие, наконец, становится ложным, цикл завершается и программа продолжает свое выполнение с первого оператора, следующего за циклом. Следующая программа get_yn.cpp просит ввести Д для да или Н для нет. Затем программа использует цикл while для чтения символов с клавиатуры, пока пользователь не введет Д или Н. Если пользователь вводит значение, отличное от Д или Н, программа сигналит встроенным динамиком, записывая символ сигнала '\а' в выходной поток cout:

#include <iostream.h> void main(void)

{

int done = 0; // Устанавливается в состояние „истина", если введены Д или Н char letter;

while (! done)

{

cout << "\nВведите Д или Н" << " и нажмите Enter для продолжения: "; cin >> letter;

if ((letter == 'Д') II (letter == 'д')) done = 1;

else if ((letter == 'Н') II (letter == 'н')) done = 1;

else cout << '\а'; // Играть сигнал динамика для неверного символа

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

35

}

cout << "Вы ввели букву " << letter << endl;

}

Цикл while тоже поддерживает несколько операторов, сгруппированных внутри левой и правой фигурных скобок. В данном случае программа использует переменную done для управления циклом. Пока программа не завершится (т. е. пока пользователь не введет Д или Н), цикл продолжает выполняться. Когда пользователь вводит Д или Я, программа устанавливает переменную done в значение истина и цикл завершается. Как только программы начнут работать с файлами, регулярно используются цикл while.

Повторение цикла до выполнения заданного условия По мере усложнения программ им, возможно, понадобится

выполнять группы связанных операторов, пока не реализуется заданное условие. Например, программа может вычислять суммы платежей для служащих компании. В этом случае цикл будет выполняться до тех пор, пока не обработаны данные для последнего служащего. Для повторения операторов до выполнения заданного условия программы как правило, будут использовать оператор while:

while (условие)

оператор;

Сталкиваясь с оператором while, программа будет оценивать условие цикла. Если условие истинно, программа выполняет операторы цикла while. После выполнения последнего оператора цикла программа снова проводит проверку условия. Если условие истинно, программа повторит этот процесс, выполнит операторы, а затем повторит проверку условия. Если условие оценивается как ложь, программа продолжит свое выполнение с первого оператора, который следует за оператором while.

Цикл C++ while позволяет программам повторять набор операторов, пока данное условие удовлетворяется. Когда программа встречает оператор while, она сначала оценивает заданное условие. Если условие истинно, программа входит в цикл. Если условие ложно, операторы цикла while никогда не выполняются. В зависимости от назначения программ, возможны ситуации, когда некоторый набор операторов должен выполняться по крайней мере один раз, а затем выполнение, основываясь на некотором условии, может повторяться. В подобном случае программы могут использовать цикл do while:

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

36

do

{

операторы;

}

while (условие_истинно);

Если программа встречает цикл do while, она входит в цикл и запускает выполнение операторов, содержащихся в цикле. Затем программа оценивает заданное условие. Если условие истинно, программа возвращается к началу цикла:

do

{

операторы;

}

while (условие_истинно);

Если условие ложно, программа не повторяет инструкции цикла, продолжая вместо этого выполнение с первого оператора, следующего за циклом. Обычно цикл do while используется для отображения пунктов меню и затем обработки выбора пользователя. Требуется, чтобы программа отобразила меню по крайней мере один раз. Если пользователь выбирает какой-либо пункт меню, кроме Quit, программа выполнит пункт, а затем отобразит меню снова (повторяя оператор цикла). Если пользователь выбирает Quit, цикл завершится и программа продолжит свое выполнение с первого оператора после цикла.

Повторение операторов, если условие истинно В зависимости от назначения программы, возможно, потребуется

выполнить набор операторов, по крайней мере, один раз, и повторить операторы, если заданное условие истинно. В таких случаях программы используют оператор C++ do while:

do {оператор;} while(условие);

Когда программа встречает оператор do while, она сразу же выполняет операторы, содержащиеся в цикле. Затем программа исследует условие цикла. Если условие истинно, программа повторяет операторы цикла и процесс продолжается. Если условие цикла становится ложным, программа продолжает свое выполнение с первого оператора, следующего за оператором do while.

Ф КазНПУ 703-12-11. Учебно-методический комплекс дисциплины для обучающегося. Издание третье.

37

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]