Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_S.doc
Скачиваний:
23
Добавлен:
09.02.2015
Размер:
1.15 Mб
Скачать

Цикл с постусловием (do while)

Формат записи этой инструкции:

Или, если тело цикла представляет собой одиночную инструкцию:

И тому и другому варианту соответствует следующая схема алгоритма:

Так же, как и в предыдущем цикле, выражение в этой инструкции может быть любого типа, значения которого можно трактовать как значения логического типа данных (bool). Это выражение определяет условие продолжения выполнения тела цикла, то есть, если значение этого выражения истинно (trueили не равно0), то тело цикла выполняется вновь, если же ложно (falseили0), то цикл заканчивается и управление передается следующей за циклом инструкции.

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

Использование этого цикла проиллюстрировано следующим примером:

Пример 1.Необходимо в виде строки вывести на экран цифры от 0 до 9.

int k = 0; // На экран выведеноkцифр

do

{

cout << k;

++k;

}

while (k <= 9); // Здесь используется логическое выражение

// На экран выведеноk= 10 цифр: 0123456789

Все остальное сказанное о предыдущем цикле, можно практически однозначно применить и к циклу с постусловием.

Итерационный цикл (for)

Формат записи этой инструкции:

Или, если тело цикла представляет собой одиночную инструкцию:

И тому и другому варианту соответствует следующая схема алгоритма:

При запуске цикла однократно выполняется Инициализацияпараметра (параметров) цикла, после чего осуществляется проверкаУсловия, определяющего необходимость выполнения тела цикла. После окончания выполнения инструкций тела цикла, на каждой итерации выполняетсяМодификацияпараметра (параметров) цикла и снова проверяетсяУсловие. Так продолжается до тех пор, покаУсловиене станет ложным (false).

Разделы Инициализации,УсловияиМодификациив заголовке цикла разделяются символом ‘;’.

Пример записи (пример из предыдущего параграфа):

int k;

for (k = 0; k <= 9; ++k)

cout << k;

Если параметр kцикла используется только внутри цикла (после выхода из цикла переменнаяk больше не нужна), эту переменную можно (и лучше) определить непосредственно в разделеИнициализациицикла:

for (int k = 0; k <= 9; ++k)

cout << k;

В разделах ИнициализациииМодификацииможно управлять сразу несколькими параметрами цикла:

for (int k = 1, n = 10; k <= 10; ++k, --n)

cout << k << “ * ” << n << “ = ” << k * n << endl;

На экран будет выведено:

1 * 10 = 10

2 * 9 = 18

3 * 8 = 24

4 * 7 = 28

5 * 6 = 30

6 * 5 = 30

7 * 4 = 28

8 * 3 = 24

9 * 2 = 18

10 * 1 = 10

Отдельные элементы разделов ИнициализациииМодификацииотделяются друг от друга символом ‘,’.

Любой раздел заголовка цикла может отсутствовать. Раздел Инициализации, например, может отсутствовать, когда начальные значения параметров цикла устанавливаются вне цикла, перед его началом.Модификациязначений параметров цикла может осуществляться внутри тела цикла, а не в его заголовке. При отсутствииУсловияпродолжения выполнения цикла, цикл становится бесконечным и для выхода из него придется использовать инструкциюbreak. Однако, какой бы из разделов ни отсутствовал, соответствующие разделительные символы ‘;’ в заголовке цикла должны обязательно присутствовать:

#include <conio.h>

……..

cout << “Для продолжения работы нажмите любую клавишу…” << endl;

for ( ; ! kbhit(); );

……..

В этом примере цикл, в заголовке которого отсутствуют разделы ИнициализациииМодификации, используется для приостановки выполнения программы до нажатия на клавиатуре любой клавиши (функцияkbhit()возвращает значениеfalse, если на клавиатуре не нажата никакая клавиша, и значениеtrue, если клавиша была нажата – для использования этой функции необходимо включить заголовочный файлconio.h).

Замечание. Приостановку работы программы значительно проще (без использования циклов) можно выполнить с помощью функцииgetch(), которая ожидает нажатия клавиши на клавиатуре и возвращает символ этой клавиши без отображения этого символа на экране (необходим заголовочный файлconio.h):

#include <conio.h>

……..

cout << “Для продолжения работы нажмите любую клавишу…” << endl;

getch();

……..

Принудительный выход из цикла forосуществляется с помощью инструкцииbreak, а принудительный переход к следующей итерации (шагу цикла) – с помощью инструкцииcontinue.

Тела циклов могут содержать любые инструкции языка C++, в том числе и другие циклы. Подобные конструкции называются вложенными циклами. Использование вложенных циклов является весьма распространенным приемом программирования при решении очень многих задач.

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