Циклы чрезвычайно важны в программирования на C++, да и в остальных языках. Начнем с теории.
Цикл — это повторение одного и того же участка кода в программе. Последовательность действий, которые повторяются, называют телом цикла. Один проход цикла — это шаг или итерация. Переменные, изменяющиеся внутри цикла и влияющие на его окончание, называются параметрами цикла.
В C++ предусмотрены три оператора, реализующих циклический процесс: while, do..while и for. Рассмотрим каждый из них.
Оператор с предусловием (while)
Он работает следующим образом. Вычисляется значение выражения. Если оно истинно, то выполняется оператор. В противном случае цикл заканчивается. Если состоит более чем из одного оператора, необходимо использовать составной оператор:
while условие
{
оператор_1;
оператор_2;
…
оператор_n;
}
Рассмотрим пример. Пусть нам необходимо составить программу, которая в зависимости от возраста пользователя определяла сколько лет ему осталось до выхода на пенсию. При условии, что пенсионный возраст наступает в 56 лет.
#include "stdafx.h" #include <iostream> using namespace std; int main () { int x, y, i, pen; //описаваем нужные переменные x=0; //стартовое значение переменной y=56; //определяем пенсионный возраст while (x<=3) //пока параметр цикла не превышает конечное значение. //выполнять тело цикла { cout<<"How old are you? \n"; cin>>i; pen=y-i; cout<<"Remained until retirement (years) = "<<pen<<endl; x++; //изменение параметра цикла (аналогично x=x+1 (расмотрим в последующих уроках)) } system ("pause"); return 0; }
Вот результат работы программы:
Цикл с постусловием (do…while)
Иногда возникает необходимость, чтобы тело цикла выполнилось хотя бы один раз, но условие не позволяет этому случится. Вот именно тут нам поможет цикл с постусловие do…while. Который реализован следующей конструкцией:
do оператор while (выражение);
Работает цикл следующим образом. В начале выполняется оператор, затем вычисляется значение выражения. Если оно истинно, оператор тела цикла выполняется еще раз.
Рассмотрим код на примере прошлой программы, изменив некоторые строки.
#include "stdafx.h" #include <iostream> using namespace std; int main () { int x, y, i, pen; //описаваем нужные переменные x=0; //стартовое значение переменной y=56; //определяем пенсионный возраст do { cout<<"How old are you? \n"; cin>>i; pen=y-i; cout<<"Remained until retirement (years) = "<<pen<<endl; x++; //изменение параметра цикла (аналогично x=x+1) } while (x<=-1); //условие ложно, но цикл выполняется 1 раз system ("pause"); return 0; }
Цикл с параметром (for)
Данный цикл можно представить такой конструкцией;
for (начальные_присваивания; выражение; приращение) оператор;
Здесь начальные_присваивания — оператор или группа операторов, применяемые для присвоения начальных значений величинам используемым в цикле; выражение — определяет условие выполнения цикла, если оно истинно, то цикл выполняется; приращение — оператор, который выполняется после каждого шага (прохода) по телу цикла; оператор — любой оператор.
Давайте на примере задачи рассмотрим цикл с параметром. Нам необходимо посчитать сумму чисел от 1 до 500. Делаем:
#include "stdafx.h" #include <iostream> using namespace std; int main () { int i; //определяем переменную int sum = 0; for (i=1; i<=500; i=i+1) // задаем начальное значение, конечное 500, шаг цикла { sum = sum + i; } cout << "The sum of the numbers from 1 to 500 = " <<sum<<endl; system ("pause"); return 0; }
Ответ будет 125250.