Циклы в C++

25154

Циклы в C++

Иногда требуется повторять одинаковое действие несколько раз. В этих целях применяются циклы. На этом уроке вы попробуете создавать циклы C++, далее посчитаете совокупность числе в диапазоне 1-1000.

Цикл for

Циклы в C++
Циклы в C++

Если вам известно определенное количество действий и сочетаний в цикле, можно пользоваться инструментом for.

for (действие до начала цикла;
     условие продолжения цикла;
     действия в конце каждой итерации цикла) {
         инструкция цикла;
         инструкция цикла 2;
         инструкция цикла N;
}

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

for (счетчик = значение; счетчик < значение; шаг цикла) {
    тело цикла;
}

В данном случае счетчик цикла представляет собой переменное значение, в котором имеется число проходов.

Описание синтаксиса

  1. Для начала дается первоначальный параметр счетчику, далее следует поставить знак точки с запятой.
  2. После устанавливается окончательное значение. Когда показатель достигнет предела, произойдет завершение цикла. Снова ставится точка с запятой.
  3. Задается шаг цикла, то есть значение, на которое происходит увеличение или уменьшение счетчика в процессе проходов.

Пример кода с циклом на C++

Пример программы, которая считает сумму всех чисел от 1 до 1000. Так же примеры готовых программ можно посмотреть в Шпаргалка по C++.

#include 
using namespace std;

int main()
{
    int i; // счетчик цикла
    int sum = 0; // сумма чисел от 1 до 1000.
    setlocale(0, "");
    for (i = 1; i <= 1000; i++) // задаем начальное значение 1, конечное 1000 
    и задаем шаг цикла - 1.
    {
        sum = sum + i;
    }
    cout << "Сумма чисел от 1 до 1000 = " << sum << endl;         
    return 0;
}

Если скомпилировать данный код и включить программу, ответ будет 500500. Это и будет совокупность вышеуказанного диапазона чисел. Подсчеты вручную отнимут много времени, к тому же они трудозатратны. С помощью цикла можно автоматически выполнить эти рутинные действия.

Окончательный показатель счетчика задан неравенством нестрогого типа, так как, если бы этот знак был меньше, программа создала бы 999 итераций, то есть на единицу меньше положенного. Это важный нюанс, неопытные программисты здесь могут допустить ошибку, особенно при обработке массивов. Показатель шага цикла равен одному, i++ — это тоже самое, что и i = i + 1.

В теле цикла при проходе программа увеличивает переменную sum на i. В начале эта переменная была равна 0. Если не задать такое значение, можно вылететь в сегфолт, при указании значения без инициализации, что данная переменная будет сохранять «мусор».

К мусору ничего нельзя добавить. Определенные компиляторы (gcc) задают нулевой параметр при объявлении переменной.

Цикл while в C++

Если нам не известно, какое количество итераций может быть проведено циклом, следует использовать вариант while или do…while.. Конечно, на данный момент мы знакомы с количеством итераций, однако на практике часто возникают ситуации, когда данное значение не известно. Его синтаксис выглядит так:

while (Условие) {
    Тело цикла;
}

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

Далее приведен код, с помощью которого можно посчитать вышеуказанную совокупность чисел от 1 до 1000.

#include 
using namespace std;

int main()
{
    setlocale(0, "");
    int i = 0; // инициализируем счетчик цикла.
    int sum = 0; // инициализируем счетчик суммы.
    while (i < 1000)
    {
        i++;
        sum += i;
    }
    cout << "Сумма чисел от 1 до 1000 = " << sum << endl; 
    return 0;
}

После компиляции выдается результат, равный результату предыдущего цикла. Есть определенные нюансы. Было задано неравенство строгого типа, счетчик i был задан 0, поскольку в новом цикле осуществляется на интеграцию больше, поэтому он будет проводиться, пока значение перестанет соответствовать условию, однако итерация все равно будет выполнена. Если задать неравенство нестрогого типа, цикл бы завершился на значении 1001.

Разберем особенности исходного кода. Для начала инициализируется счетчик и переменная, хранящая сумму чисел.

В этом случае счетчику требуется дать определенное значение, поскольку в прежнем варианте это значение придавалось внутри кода for, в новом случае, если не провести инициализацию, в цикл попадут «мусорные» значения, и программа может выдать нам ошибки.

Далее задается условие – пока переменная i меньше 1000 — выполняй цикл. В процессе итераций величина переменной i будет увеличиваться на 1 внутри цикла.

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

Цикл do while в C++

Цикл do while схож с предыдущим. Однако при выполнении нового цикла один проход будет проведен вне зависимости от заданных условий. Ниже пример программы по  поиску суммы чисел от 1 до 1000, который практически будет соответствовать предыдущему варианту, но использовать do while.

#include 
using namespace std;

int main ()
{
    setlocale(0, "");
    int i = 0; // инициализируем счетчик цикла.
    int sum = 0; // инициализируем счетчик суммы.
    do {// выполняем цикл.
        i++;
        sum += i;
    } while (i < 1000); // пока выполняется условие.
    cout << "Сумма чисел от 1 до 1000 = " << sum << endl;
    return 0;
}

Существенной разницы нет, однако при указании переменной значения i, превышающего 1000, код все равно будет выполнять одну итерацию.

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