Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике1.doc
Скачиваний:
61
Добавлен:
02.05.2014
Размер:
1.3 Mб
Скачать

Структуры повторения (циклы)

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

Язык Си и Си++ имеет три структуры, известные под названием циклов, которые используются для управления повторами:

цикл for;

цикл do...while;

цикл while.

Любой из этих циклов может быть применен для повторения инструкции, группы инструкций или даже целой программы.

Использование цикла for

Цикл for используется в том случае, когда известно точное количество повторов, которое нужно выполнить.

for (инициализация цикла (начальное значение); выражение-условие (повторять, пока выполняется условие); список выражений (приращение значения))

{

тело_цикла

}

В приведенной ниже программе цикл for используется для того, чтобы вывести на экран монитора числа от 1 до 10, расположенные друг под другом.

main()

{

int repeat;

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

printf("%d\n", repeat);

}

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

repeat=1

инициализация переменной repeatпутем присваивания ей начального значения

repeat <= 10

задает условие повтора цикла до тех пор, пока значение переменной repeatостается меньше или равно 10

repeat++

приращение значения переменной repeatпосле каждого повтора цикла

Когда программа начнет выполнение цикла, она присвоит переменной repeat начальное значение, равное 1. Затем будет проверено, является ли истинным условие, что значение переменной меньше или равно 10. Если условие истинное, начнется выполнение инструкции, связанной с циклом, то есть вывод на экран значения переменной.

После выполнения инструкции произойдет увеличение значения переменной на единицу и снова будет проведена проверка истинности условия. Так как условие все еще является истинным, цикл будет выполнен во второй раз, отображая на дисплее текущее значение переменной. Этот процесс будет повторяться до тех пор, пока значение переменной не вырастет до 11. Как только это произойдет, условие repeat <= 10 уже не будет истинным, так что выполнение инструкции прекратится и цикл завершится.

Если один цикл for выполняется внутри другого, принято говорить, что мы имеем дело с вложенным циклом. Внутренний цикл целиком выполняется во время каждого повторения внешнего цикла. Вложенные циклы for можно представить себе как двухмерные, а единичный— как одномерный.

Использование цикла do...While (постусловие)

Цикл do...while используется в тех случаях, когда вы не знаете точного количества повторов, но в то же время вам известно, что цикл необходимо выполнить, по меньшей мере, один раз.

do {

операция_1;

операция_2;

……………

операция_n;

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

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

Используя цикл do...while, следует указывать условие так, чтобы выполнение его не оказалось бесконечным.

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

main()

{

int temp;

float celsius;

char repeat;

do

{

printf("Введите значение температуры: ");

scanf("%d", &temp);

celsius = (5.0 / 9.0) * (temp - 32);

printf("%d градусов по

Фаренгейту соответствует %6.2f по Цельсию\n",

temp, celsius);

printf("Желаете ввести еще значение?");

repeat = getchar();

putchar('\n');

}

while (repeat == 'y' || repeat == 'Y');

}

В этом примере практически весь текст программы, исключая определение переменных, входит в большой блок do...while. Цикл будет повторяться до тех пор, пока в ответ на запрос будет вводиться символ Y или y. Обратите внимание, что инструкция, выводящая на экран запрос о продолжении работы, является последней инструкцией в блоке.

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