Основи програмування на С ++ для початківців

Цикл for в C++

for C++, for С++Как вы заметили в содержании, на главной странице сайта, в языке C применяются несколько видов циклов. Цикл for  ми розглянемо першим, так как его легче понять новичкам, с моей точки зрения. А циклы while і do while, рассмотрены в отдельной статье.

Для начала, разберемся с тем, що означає цикл в програмуванні. Цикл – это специальный оператор, с помощью которого происходит повторение определённого участка кода определённое количество раз (какой участок кода повторять и когда цикл должен прерваться – определяет программист). Ще одне визначення запропонував відвідувач нашого сайту rrrFer: цикл – конструкция языка, предназначенная для организации повторного исполнения команд. Наприклад, щоб вивести на екран числа від одиниці до п'ятисот, можно использовать ручной вывод на экран:

ручной ввод (без цикла for)

Согласитесь – не самое интересное задание и представьте сколько пришлось бы прокручивать колесико мышки, чтобы добраться до конца кода.  А можна скористатися циклом for  і скоротити, тим самим в десятки разів,  час на написання цієї “интересной” программы и сам размер кода. Вот, якомога виконати це завдання із застосуванням for:

Ми починаємо визначати наш цикл в рядку 6 . Для этого пишем ключевое слово for і за ним круглі дужки() . В круглых скобках объявляется управляющая переменная (переменная-счетчик) i. В нашем случае, вона инициализирована нулем. Після ініціалізації стоїть крапка з комою ; . Далі маємо умову: i < 500 (оно означает, что пока i меньше 500, код в теле цикла будет повторяться) и снова точка с запятой ; . Именно оно и будет “говорить” програмі доки буде виконуватися тіло циклу (код в фигурных скобках {}). наостанок вказуємо, как будет изменяться i  з кожним кроком циклу (у нас – увеличение на единицу, используя постфиксный инкремент). Если описать одним предложением, те, что расположено в круглых скобках, команда будет звучать так – выполнять тело цикла, пока переменная i   менше п'ятисот, увеличивая i на единицу, при кожному кроці циклу. Крок циклу ще називають итерацией. А переменную-счетчик – управляющей переменной, так как она управляет количеством итераций.

Розберемо для наочності кілька кроків циклу з нашого прикладу. При першій ітерації циклу керуюча змінна дорівнює 0. Поэтому для вывода на экран единицы используем выражение i + 1 (0 + 1). Когда тело цикла выполнилось, происходит изменение (увеличение) управляющей переменной i  так, як ми вказали в круглих дужках () после оператора for – тобто вона стає рівною одиниці. Вторая итерация начинается с проверки условия (у нас i < 500). Если i действительно< 500, виконання тіла циклу повториться – на экран снова покажется i + 1, что эквивалентно 1 + 1, то есть 2. Последний раз цикл выполнится, когда управляющая переменная будет равна 499 и на экран покажется значение i + 1 (499 + 1). После этого её значение снова увеличится на единицу, но условие повторения цикла уже не будет выполняться, так как i (500) уже не меньше 500.  Після завершення роботи циклу програма перейде до виконання наступного рядка коду, расположенной за закрывающей } фигурной скобкой тела цикла. Результат выполнения программы посмотрите сами, запустив программу.

Управляющая переменная может как увеличиваться так и уменьшаться. В зависимости от того, какая задача поставлена перед программистом. Посмотрите на этот код. При его выполнении, на экране мы увидим числа, розташовані по спадаючій, от 500 до 1.

Не обязательно использовать постфиксный инкремент или декремент. Изменяем управляющую переменную так, как того требует задача. Це може бути++i,  i = 2,  i = 20,  i -= 15… Наприклад:

цикл for - управляющая переменная

управляющая переменная i  змінюється від 8 до 88 включительно, при этом шаг изменения равен 8. То есть сначала i = 8, на второй итерации 16 и так далее до 88.

цикл for - управляющая переменная

управляющая переменная i  змінюється від 3000 до 300 включительно, с уменьшением при каждой итерации на 300 (3000,  2700, 2400…)

цикл for c++, Цикл для C ++

управляющая переменнаяi  змінюється від 0  до 100 включительно, зі збільшенням при кожній ітерації на 10. (0, 10, 20…100)

цикл for - управляющая переменная

управляющая переменнаяi  змінюється від 3000  до 3 включительно, з розподілом при кожній ітерації на 10. (3000, 300, 30, 3)

В дополнение ко всему сказанному, хочу добавить, что все три, використовувані в круглих дужках, выражения необязательны. Если сделать такую, наприклад, запись: for( ; ; ) – это будет воспринято компилятором, как запуск так называемого бесконечного цикла. Здесь нет ни управляющей переменной, ни условия продолжения цикла, ні зміни керуючоїзмінної. Тобто цикл буде виконуватися нескінченно. В этом случае, чтобы все-таки как-то работать с таким циклом, керуюча змінна може бути визначена до циклу, её изменение можно добавить в конец тела for, а условие продолжения цикла можно задать используя оператор if і оператор break. Вот как это будет выглядеть:

Отмечу, что существует такое понятие, як область видимості змінної. В этом примере область видимости переменной i – тело главной функции main(). А в предыдущих примерах, она ограничивалась телом цикла for  і за його межами ця змінна вже була недоступна (к ней уже нельзя было обратиться – вывести её значение на экран, например)  Це треба мати на увазі. Так как, если в программе встречаются несколько циклов и управляющие переменные определяются выше в коде, а не в круглых скобках () після операторівfor , для каждой необходимо придумывать уникальное имя. Или каким-то другим образом выходить из этой ситуации.   Так що краще користуватися стандартним синтаксисом:

for ( определение управляющей переменной ;  умова повторення циклу;  зміна керуючоїзмінної) 

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

Рекомендую посмотреть видео по теме. В нем рассмотрен и цикл while

Практика программирования по этой теме находится здесь – Завдання: Цикл for.

50 думки про "Цикл for в C++

  1. адмін, спасибі що пишеш такі розбірливі статті. Пиши далі і нікого не слухай. Я тебе як новачок в програмуванні дуже добре розумію!

    1. Віталій, спасибо ) У цьому і суть – дати зрозуміти елементарне на простих прикладах. А для глибокого розуміння – тут вже без хороших книг і практики нікому не обійтися.

      1. До речі зазначу, сайт знахідка для новачка. Перелопатив під сотню ресурсів. Побачив стиль викладу тут і потер з букмарки всі інші.

      2. красно дякую! Чекаємо нових уроків. Зокрема про роботу з фалами. Дуже важлива тема. Дякую ще раз!!!! Автор крутий, реально виручав!

  2. спасибі тобі, автор!
    Ти один з тих людей, завдяки котрим, багато що стає доступним при розвитку IT технологій в освіті та розвитку людини, а це дуже круте справу і крутий внесок.

  3. Вітаю. Поясніть будь ласка, чому в першій задачі умова
    cout << i + 1 виконується тільки перший раз, а далі ігнорується?

      1. але тоді куди дівається i ++ , адже ця команда теж повинна додати одиницю ? т.е. вартість спочатку << 0+1 = 1, на екран виводиться 1,
        потім виконується дія i ++ і додається ще одиниця 1 + 1 = 2,

        2 < 500? меньше,

        вартість тоді << i + 1, т.е. 2+1= 3 і на екран має виводитися 3, а не 2.
        де підступ? без этого "i+1" все прекрасно логічно виходить.
        заздалегідь дякую.

      2. Виходити мало б “прекрасно логічно”, а як перевірити працездатність коду!

        вартість Оператор << i + 1 – нічого і ніяк не збільшує: як було i значенням 0 до операції, так і залишиться 0 після.
        І навіть cout << i + 1000000 ніяк не змінить значення i.
        cout – це тільки висновок обчисленого значения, а змінної i ніякого присвоєння там не показано.

  4. Якщо не помиляюся admin в самому початку писав – “більше практикуйтеся”. Сам зупинився з цим “+ 1”, а потім попрактикуватися і стало зрозуміліше.
    Тобто,. більше Кодима(практикуємося) і буде нам зрозуміліше.

  5. Поясніть мені хто небудь чому у мене компілятор вважає з 299, а не з 500 ?
    #include
    using namespace std;

    int main()
    {
    for (int i = 500; i > 0; i–)
    {
    cout << i << endl;
    }

    return 0;
    }

    1. Ni,– ні i-1 одна і таж нісенітниця, цикл продовжує вважати на зменшення, але з 299 в чому прикол не зрозумію.

      1. У мене в CodeBlocks було те ж саме, якщо виводити в стовпчик.
        Але якщо виводити в рядок, то все нормально:

        #include
        using namespace std;
        int main()
        {
        for (int i = 1; i < 500; i )
        {
        cout << i << " ";
        }
        return 0;
        }

      2. #include
        using namespace std;

        int main()
        {
        for (INT I = 500; i>0; i–)
        {
        cout << i << endl;
        }

        return 0;
        }

      3. Схоже розмір виведення консольного вікна має обмеження в 300 строк. 299 строк – основна робота програми і останній рядок “Для продовження натисніть будь-яку кнопку”

    2. Поясніть мені хто небудь чому у мене компілятор вважає з 299, а не з 500 ?
      #include
      using namespace std;

      int main()
      {
      for (int i = 500; i > 0; i-) {b}Ось тут, зліва, в лапках, біля змінної i ти
      поставив ОДИН мінус, ПРОСТО поруч поставити
      ЩЕ ОДИН -, і все запрацює.[/b]
      {
      cout << i << endl;
      }

      return 0;
      }

      1. У командного рядка ліміт 300 строк

  6. 9.З 5-ти чисел знайти кількість парних і непарних чисел і знайти відповідно їх суми.

    10. Визначити кількість простих чисел в інтервалі від N до M, де N і M натуральні числа.
    Допоможіть будь ласка написати код з ++

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *