Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Циклы.docx
Скачиваний:
2
Добавлен:
22.11.2019
Размер:
1.57 Mб
Скачать

Циклы Цикл for

Часто, для выполнения программы требуется выполнение повторных действий.

Например сложение всех элементов массива один за другим поочередно.

Цикл for облегчает эту задачу.

#include <iostream>

int main()

{

using namespace std;

int i; // Создаем счетчик

//(Инициализация; проверка; обновление

for (i = 0; i < 5; i++){

cout << "C++ loops.\n";

}

cout << "C++ knows when to stop.\n";

getchar();

return 0;

}

Ниже показан вывод программы:

C++ loops.

C++ loops.

C++ loops.

C++ loops.

C++ loops.

C++ knows when to stop.

for (i = 0; i < 5; i++)

cout << "C++ loops.\n";

или

for (i = 0; i < 5; i++){

cout << "C++ loops.\n";

cout << "C++ loops.\n";

}

Этот цикл начинается с присваивания целочисленной переменной i значения 0:

i = 0;

Это - часть инициализации цикла. Затем в части проверки цикла программа прове­ряет, меньше ли i числа 5:

i < 5;

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

cout << "C++ knows loops.\n";

После этого программа активизирует часть обновления цикла, увеличивая i на 1:

i++

В части обновления цикла используется операция ++, которая называется операци­ей инкремента.

Она увеличивает значение своего операнда на 1. (Применение опера­ции инкремента не ограничено циклами for. Например, можно использовать i++ ; вместо i = i + 1; в качестве оператора программы.)

Инкрементирование i заверша­ет первый проход цикла.

Далее цикл начинает новый проход, сравнивая новое значение i с 5. Поскольку новое значение (1) также меньше 5, цикл печатает еще одну строку и завершается снова инкрементированием i.

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

Части цикла for

Цикл for представляет собой средство пошагового выполнения повторяющихся действий. Устройство цикла. Обычно части цикла for выполняют следующие шаги.

  1. Установка начального значения.

  2. Выполнение проверки условия для продолжения цикла.

  3. Выполнение действий цикла.

  4. Обновление значения (значений), используемых в проверочном условии.

В структуре цикла C++ эти элементы расположены таким образом, чтобы их мож­но было охватить одним взглядом.

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

for(инициализация; проверочное выражение; обновляющее выражение) тело

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

Проверочное выражение определяет, должно ли выполняться тело цикла. Это выражение представляет собой выражение сравнения - т.е. выражение, срав­нивающее два значения.

В примере сравниваются значения i и 5. Если про­верка проходит успешно (проверочное выражение истинно), программа выполняет тело цикла. На самом деле в C++ проверочные выражения не ограничиваются толь­ко сравнениями, дающими в результате true или false. Здесь можно использовать любое выражение, и C++ приведет его к типу bool.

Таким образом, выражение, воз­вращающее 0, преобразуется в булевское значение false, и цикл завершается. Если выражение оценивается как ненулевое, оно приводится к булевскому значению true, и цикл продолжается.

#include <iostream>

int main()

{

using namespace std;

cout << "Enter the starting value: ";

int limit;

cin >> limit;

int i; //завершается, когда i равно О

for (i = limit; i; i--)

cout << "i = " << i << "\n";

cout << "Done now that i = " << i << "\n";

getchar();

return 0;

}

Цикл завершается, когда i достигает значения 0.

До появления типа bool срав­нивающие выражения вычислялись как 1 в случае истинности и 0 — в противопо­ложном случае.

Таким образом, значение выражения 3 < 5 было равно 1, а значение 5< 5 — равно 0.

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

Цикл никогда не выполняет тело, если проверочное условие возвращает false.

Например, при запуске программы 2 в качестве начального значения ввели 0. Поскольку проверочное условие не удовлетворено при первой же проверке, тело цикла не вы­полнится ни разу:

Enter the starting countdown value: 0

Done now that i = 0

Позиция “проверка перед циклом” может помочь предохранить программу от проблем.

Обновляющее выражение вычисляется в конце цикла, после того, как выполнено тело цикла. Обычно оно используется для увеличения или уменьшения значения пе­ременной, управляющей количеством шагов цикла. Однако оно может быть любым допустимым выражением C++, как и все остальные управляющие выражения. Это обеспечивает циклу for гораздо более широкие возможности, чем простой отсчет от 0 до 5, как делалось в первом примере.

Тело цикла for состоит из одного оператора, но вскоре вы увидите, как расширить это правило.

На рисунке показана блок-схема цикла for.

В C++ принят стиль помещения пробелов между for и последующими скобками, а также пропуск пробела между именем функции и следующими за ним скобками:

Другие управляющие операторы, такие как if и while, трактуются аналогично for. Это служит для визуального подчеркивания разницы между управляющим оператором и вызо­вом функции.

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