Цикл — многократное прохождение по одному и тому же коду программы. Циклы необходимы программисту для многократного выполнения одного и того же кода, пока истинно какое-то условие. Если условие всегда истинно, то такой цикл называется бесконечным, у такого цикла нет точки выхода.
В языке программирования С++ существуют такие циклы:
- цикл
for
- цикл
while
- цикл
do while
Тело цикла будет выполняться до тех пор, пока условие будет истинно(т. е. true
).
// форма записи оператора цикла for: for (/*выражение1*/; /*выражение2*/; /*выражение3*/ ) { /*один оператор или блок операторов*/; }
Если в теле цикла for
должен выполнится один оператор, тогда фигурные скобки можно опустить:
for (/*выражение1*/; /*выражение2*/; /*выражение3*/) /*один оператор*/;
Рассмотрим подробно три выражения записанные в круглых скобках цикла for
. Выражение 1 — объявление (и) или инициализация, ранее объявленной, переменной-счетчика, которая будет отвечать за истинность условия в цикле for
. Пример:
int counter = 0; // отсюда видно, что была объявлена переменная counter типа int и инициализирована значением 0
Переменная-счетчик всегда должна иметь целочисленный тип данных. Если переменная была объявлена в цикле (все равно в каком), по завершении цикла эта переменная будет уничтожена.
Разница между объявлением и инициализацией переменной:
counter; // объявление переменой count counter = 9; // инициализация целочисленной переменой count значением 9.
Выражение 2 — это условие продолжения цикла for
, оно проверяется на истинность.
counter < 10; // условие истинно пока count строго меньше десяти!
Выражение 3 изменяет значение переменной-счетчика. Без выражения 3 цикл считается бесконечным, так как изменение содержимого переменной count
выполняться не будет, и если изначально условие было истинным, то цикл будет бесконечным, иначе программа даже не войдет в цикл. Выражения 1, 2, 3 отделяются друг от друга обязательными разделителями, точкой с запятой. Тело цикла обрамляется фигурными скобочками, если тело цикла состоит из одного оператора ,то фигурные скобочки не нужны. Под изменением значения переменной подразумевается уменьшение или приращение значения , например:
for ( int counter = 0; counter < 15; counter++) // выполняется приращение переменной counter с шагом 1 от 0 до 15
++
это операция инкремента, увеличение значения переменной на единицу;--
это операция декремента, уменьшение значения переменной на единицу.
Очень часто неправильно интерпретируется запись пределов в цикле for
, в нашем случае приращение переменной counter
выполняется с шагом 1 от 0 до 15. Обратите внимание на конечный предел. В условии продолжения цикла стоит знак отношения строго меньше, а значит, когда значение в переменной counter
будет равно 14, выполнится выход из цикла. Ниже показан пример работы программы (см. Рисунок 1).
// for.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> using namespace std; int main(int argc, char* argv[]) { for (int counter = 0; counter < 15; counter ++ ) // начало цикла cout << " " << counter; // тело цикла cout << endl; system("pause"); return 0; }
В строках 9, 10 записан цикл for
, причём без фигурных скобочек. А раз отсутствуют фигурные скобочки, значит, телом цикла является следующий оператор, после заголовка цикла, в нашем случае — это оператор вывода:
cout << " " << counter; // тело цикла
Заголовком цикла for
является строка 9:
for (int counter = 0; counter < 15; counter ++ ) // заголовок цикла
Фигурные скобочки можно не опускать, это кому как удобно. Но в данном случае без фигурных скобочек запись кода более компактна, чем со скобочками.
Рисунок 1 — Цикл for
в С++
for ( int counter = 14; counter >= 0; counter --) // декремент переменной counter от 14 до 0 включительно
Ниже показан результат работы программы с использованием декремента, для уменьшения значения переменой-счетчика (см. Рисунок 2).
// for_dec.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> using namespace std; int main(int argc, char* argv[]) { for (int count = 14; count >= 0; count --) // заголовок цикла cout << " " << count; // тело цикла cout << endl; system("pause"); return 0; }
В заголовке цикла for
в условии продолжения цикла мы использовали нестрогий знак отношения >=
, чтобы последним значением переменой-счётчика был 0.
Рисунок 2 — Цикл for
в С++
Шаг в цикле for
может быть отличным от единицы, а точнее, любым целым числом.
for ( int counter = 0; counter <= 20; counter += 5) // приращение переменной counter от 0 до 20 включительно с шагом 5
В этом случае переменная counter
будет равняться 5, 10, 15, и 20, после чего выполнится выход из цикла for
.
for ( int counter = 20; counter >= 0; counter -= 5) // изменение переменной counter от 20 до 0 включительно с шагом 5
Далее показан код программы, которая подсчитывает количество чётных чисел в интервале от 0 до 50 включительно.
// for_example.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> using namespace std; int main(int argc, char* argv[]) { int counter_even = 0; for (int count = 2; count <= 50; count += 2) // заголовок цикла counter_even ++; // подсчёт чётных чисел cout << "number of even numbers = " << counter_even << endl; system("pause"); return 0; }
В строке 9 объявлена и инициализирована нулём переменная для хранения количества чётных чисел. В заголовке цикла for
в строке 10 переменная counter
инициализирована двойкой, так как двойка — первое чётное число, начиная с 0. Шаг цикла равен двум, таким образом следующее чётное число это 4. В строке 11 переменная counter_even
инкрементируется на каждом этапе цикла for
. Результат работы программы показан ниже (см. Рисунок 3).
Рисунок 3 — Цикл for в С++
Комментарии
mpavelFax
Заработок на дому официальная работа.
Елена Чупина
Шаг в цикле
for
может быть отличным от единицы, а точнее, любым целым числом.1
for
(
int
counter = 0; counter <= 20; counter += 5)
// приращение переменной counter от 0 до 20 включительно с шагом 5
В этом случае переменная
counter
будет равняться 5, 10, 15, и 20, после чего выполнится выход из циклаfor
.я правильно поняла, что здесь первое значение counter будет не 5, а 0. То есть на экран будет выведено 0 5 10 15 20 ?
Sideshow
Ссылка на статью про цикл while ведёт снова на эту статью про цикл for.
Исправьте, пожалуйста.
Андрей
counter;
// объявление переменой count
counter = 9;
// инициализация целочисленной переменой count значением 9.
А причём counter тогда?
Инна Молодеева
Спасибо большое!