В этом уроке мы рассмотрим Циклы.
Циклы предназначены для многократного выполнения какого-либо блока.
В С++ существуют три вида циклов: for, while, do...while.
Все они имеют сходную структуру и характерные особенности:
инициализация счётчика цикла, проверка условия цикла, увеличение
счётчика цикла.
Начнём с цикла for.
Из первого урока мы знаем как создать новый проект, и подключить необходимые библиотеки. Теперь рассмотрим следующий пример:
#include <iostream> // подключим стандартную С++ библиотеку ввода/вывода
#include <clocale> // установим поддержку языковых пакетов
using namespace std; // указывает на использование стандартного простанства имен С++ (STD)
int main()
{
setlocale(LC_CTYPE,"Russian"); // подключим русский язык для отображения в консоли
cout << "Я собираюсь съесть 10 пирожков"<< endl;
for (int i = 1; i < = 10; ++i)
{
cout << "Пирожок: " << i << endl;
}
cout << "Уф... чуть не лопнул " << endl;
cin.get();
}
В скобках после ключевого слова for находятся три выражения:
- Инициализирующее. Оно предназначено для инициализации счётчика цикла. В нашем случае еденицей.
- Условие проверки цикла. Здесь находится операция отношения. Если
она возвращает единицу, то выполняется тело цикла, если возвращает
ноль, то выполняется первый оператор стоящий за закрывающей фигурной
скобкой.
В начале цикла переменная i равна единице, происходит проверка во втором выражении и т.к. выражение возвращает единицу (i действительно меньше десяти), то выполняется тело цикла. после того как выполнилось тело цикла, выполняется третье выражение. - Выражение инкрементирования (увеличения) счётчика цикла. В этом
выражении мы можем изменить значение счётчика. Здесь мы видим новую
операцию:
++i // i = i + 1
Операция обозначаемая двойным плюсом называется операцией инкремента и
просто увеличивает значение переменной на единицу. От этой операции и
происходит название языка C++.
После того как выполнилось выражение инкремента счётчика, снова выполняется второе выражение. На этот раз i равна двум. И выражение снова вернёт единицу, а значит тело цикла выполнится снова.
Эти шаги повторяются до тех пор, пока условие проверки не вернёт
ноль и программа продолжит работу начиная со следующего оператора
стоящего после тела цикла.
Сейчас самое важное - понять как работает цикл:
- Инициализация счётчика
- Проверка счётчика
- Выполнение тела цикла
- Инкремент счётчика
- Проверка счётчика
- Выполнение тела цикла
И так, до тех пор пока условное выражение не вернёт ноль.
В теле цикла находится всего один оператор, который выводит на экран текущее значение i.
Теперь перейдём к циклу while. По структуре он точно такой же ка и цикл for, только выражения инициализации и инкрементирования расположены в разных местах.
cout << "Я собираюсь съесть 10 пирожков"<< endl;
int i = 1;
while (i <= 10)
{
cout << "Пирожок: " << i << endl;
++i;
}
cout << "Уф... чуть не лопнул " << endl;
Инициализирующее выражение расположено за пределами цикла. Инкрементирующее выражение находится в конце тела цикла.
Цикл do...while, в отличии от 2-х предыдущих позволяет выполнить цикл (при неверном условии) как минимум один раз, рассмотрим пример:
int i = 11;
do
{
cout << "Пирожок: " << i << endl;
++i;
}
while (i <= 10);
cout << "Уф... чуть не лопнул " << endl;
При выполнении, программы мы получим результат:
Т.е. цикл выполнился даже с учетом того что, i = 11 и условие i <=10 неверно.
Важно понимать, что циклы взаимозаменяемы. Если Вы выполняете
какую-либо задачу с помощью одного вида цикла, Вы можете выполнить её и
с помощью двух других. Просто иногда определённый цикл может сделать
вашу программу более понятной.
На этом все, продолжение следует .....
|