Цикл for в С++ для начинающих

Надеюсь, прошлые темы был неоднократно повторены, вы поупражнялись и с легкостью можете написать простой калькулятор на C++. Теперь речь пойдет о первом цикле. Как первый, нам вполне подойдёт цикл for.
Суть любого цикла в программировании в том, что выполняется какое-то действие определенное число раз. Вам постоянно придётся встречаться с задачами, в которых некоторое однотипное действие нужно выполнить большое число раз. Чтобы заставит программу выполнять какой-то участок кода многократно, можно использовать циклы.
В языке C++ есть два прямых способа зацикливания: for и while, зацикливание с помощью рекурсии. Способов зацикливания несколько, я же буду знакомить сейчас только с одним, с зацикливанием for.
Пример простой учебной задачи: Напишите программу, которая выведет на экран числа по порядку. Например, от 1 до 10




Вот элементарная и наглядная программа для начинающих, написанная в C++.
Наиболее важная для вас здесь только одна строчка for (i=1; i<=10; i++)
Давайте разберём эту самую строчку.
Вовнутрь цикла for передаётся три параметра, которые разделяются точкой с запятой:

Первый параметр — начало отсчёта.
Второй параметр — конец отсчёта.
Третий параметр — шаг отсчёта.
Чтобы циклы не выполнялись бесконечно, им нужен некоторый опознавательный признак, который сможет дать понять циклу, что пора завершаться, таким опознавательным признаком служит так называемый счётчик цикла. В примерах выше счётчиком цикла выступает переменная i. Эта переменная в показанных примерах принимает начальное значение единицу (смотрите на однострочные коды). Признак выхода из цикла сработает тогда, когда в i окажется значение, равное или большее 10 (второй параметр внутри круглых скобок цикла). Какое значение окажется внутри i после очередного выполненного повторения — определяется шагом цикла: i++ обозначает, что после каждого повторения значение в i увеличивается на единицу, это то же, что i=i+1. Можно использовать разный шаг: i+=10, i+=20, i+=100, i*=2 и т. п.

  • for (начальное значение счётчика; пока значение счётчика согласуется с некоторым условием; изменять счётчик){ выполнять какой-то код }
В первое время при программировании на C++ у начинающих могут возникать некоторые характерные для новичков ошибки.
  • То, что должно циклически выполняться, нужно указать в фигурных скобках (можно забыть их поставить, а потом ломать голову – почему не работает)
Хотя можно и не использовать фигурные скобки в случае единичного выражения, лучше всё-таки не пренебрегать ими и не лениться.
for требует для себя обязательных круглых скобок и кода для повторений. Вам нужно привыкать к таким понятиям, как параметры и операторы. Внутри круглых скобок for происходит своеобразная настройка цикличности. Главная цель этой настройки — задать количество повторений или определить условие прекращения повторений. Программисты называют повторения итерациями. Каждая итерация цикла обозначает очередной повтор, очередной проход.
Внутри круглых скобок у for-цикла указываются параметры. Эти параметры разделяются точкой с запятой. Параметр может быть пустым. В бесконечной программе задано три пустых параметра для for-цикла.

Первый параметр определяет начальное значение счётчика:

Второй параметр определяет критерий прекращения повторений:

Сейчас программа бесконечно выполняется потому, что значение счётчика не изменяется. Т. е. i всегда ноль. Изменяется счётчик третьим параметром:

Таким образом происходит настройка повторений. А то, что нужно повторять, обычно заворачивается вовнутрь фигурных скобок:

  • Будьте внимательны к точке с запятой и её отсутствию. Если поставить точку с запятой до фигурных скобок, то повторения не произойдут. Цикл-for посчитает, что его задача повторять пустое выражение.
Обязательно научитесь писать эту простейшую программу по памяти. Поймите принцип, чтобы было легче. Когда научитесь – начинайте использовать знания, полученные на прошлых уроках.
  • 1. Попробуйте вывести на экран только четные натуральные числа от некоторого указанного вами значения до какого-то другого указанного вами значения по возрастанию.
  • 2. Попробуйте вывести на экран числа, делящиеся на три, по возрастанию.
  • 3. Попробуйте вывести на экран числа от 20 до 1 в порядке убывания.
  • 4. Если справились, напишите одну программу, которая выполняет все 3 задания.
i++ то же, что i=i+1
i+=10 то же, что i=i+10
i*=3 то же, что i=i*3
i/=3 то же, что i=i/3
  • Никогда, вообще никогда не изменяйте одну и ту же переменную сразу и в параметрах for-цикла, и внутри повторямего кода:

Чтобы освоить этот материал C++ для начинающих, может потребоваться время. Кто-то поймет быстро, а кто-то потратит больше времени, чем хотел бы. Главное, не сдавайтесь, постоянно повторяйте несложные упражнения, чтобы руки до автоматизма знали как, где и что нужно писать. Если возникли какие вопросы, то лучше спросите. Я самостоятельно изучаю язык и по себе знаю, какого это, когда абсолютно один. – Приходится очень много искать, читать, и очень много примеров встречается с громоздкими, неудобными и непонятными решениями.
Цикл-for удобно использовать, когда есть чёткий критерий отсчёта повторов.
Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

13 комментариев: Цикл for в С++ для начинающих

  • Anonymous говорит:

    ПОМОГЛИ СПАСИБО




    0



    0
  • Евгений Семикопный говорит:

    Помогите . Научился делать калькулятор , но не знаю как сделать калькулятор который бы после 5 вычислений бы завершал работу Пример //logic if('+'==cOper) dRes=d1+d2; else if ('-'==cOper) dRes=d1-d2; else if ('*'==cOper)2 + 3 = 55 + 5 = 107 * 6 = 411 + 3 = 43 — 2 = 1 << после пятого действия бы он завершил работу . Как всунуть цикл в калькулятор подскажите 🙁 спс большое




    0



    0
  • Бахадир говорит:

    Отличный сайт! Спасибо за все. Можно изучать здесь.




    0



    0
  • Денис говорит:

    (Для тех кто хочет попробовать (А хотеть справиться с заданием должен каждый, кто хочет изучать С++) Подсказка:
    i++ – Это равносильно, что i=i+1 и равносильно i+=1
    Cлагаемое может быть очень разным,
    можно написать for(i==1;i i=101 —> i=301 ))

    У вас стоит двойное равно слева от тысячи, если его вводишь не работает, а с одним работает. Это у Вас ошибка или я что-то не понимаю? Спасибо за сайт!!!!!

    Автор сайта отвечает:
    У меня ошибка.
    i==1 –> (сравнение, а начало отсчета компилятор типа пусть сам угадывает)




    0



    0
  • Иван говорит:

    Помогите, нужно сделать задачу за циклом for
    Вычислить y = sin1(sin1+sin 2)(sin1+sin 2+sin3)…(sin1+sin 2 +sin3+…+sin n)

    Автор сайта отвечает:




    0



    0
  • Дарья говорит:

    Здравствуйте. Отличный у Вас сайт, но в комментарии, когда Вы писали программу на вычисление суммы синусов у Вас ошибка — точнее не дописана часть программы. Для более лучшего понимания уберем sin. Т.е. получается надо вычислить: (1+2)*(3+4)*… Возьмем для сравнения по N=4. По Вашей программе получается: i=1 sum=1 pro=1 — должна быть 0 т.к. еще надо сложить (1+2)…дальше ошибка возрастает с прогрессией и при N=4 pro=180 (а должно быть 21). Правильная программа будет иметь вид:
    int j, N, z, sum=0, pro=1; //lдля суммы можно использовать и целые числа
    //Дальше ввод N с клавиатуры
    for(j=1; j<=N; j++)
    {
    if(!(!(j%2))) z=i;
    if(!(j%2))
    {
    sum=z+i;
    pro=pro*sum;
    cout<<"\n"<<pro; //Чтобы видеть все значения
    }
    }

    Автор сайта отвечает:
    при N=4 должно срабатывать
    1*(1+2)*(1+2+3)*(1+2+3+4)
    все это дело = 180.
    ==============================
    и не понял вообще каким боком ноль). Я на ноль нигде не умножаю.
    Внимательнее будьте. Всмотритесь в формулу которую товарищ просил использовать.
    и зачем вы так сложно пишете?
    ваша программа должна выглядеть как-то так

    Да похоже немного не досмотрела зато потренировалась в написании программы на другой манер. Спасибо!




    0



    0
  • Марина говорит:

    Помогите,пожалуйста,решить задачку на С++
    Дана последовательность из n-целых чисел. Определить каких чисел больше положительных или отрицательных?

    Автор сайта отвечает:
    а что в задаче непонятно?
    давайте то, что пытались делать, даже если стыдно показывать и я помогу.




    0



    0
  • Влад говорит:

    Здравствуйте! Спасибо за сайт, очень полезный! А как все это сделать в Memo?
    {
    Memo1->Lines->Text=»»;
    int i;
    for (i=1; iLines->Text=IntToStr(i)<<IntToStr(i)<Lines->Text=IntToStr(i<1);
    }
    return;
    }
    Не получается!!!

    Автор сайта отвечает:
    Наверное что-то типа:

    Почему-то получилась абракадабра. Повторяю.
    {
    Memo1->Lines->Text=””;
    int i; // переменная для счетчика
    for (i=1; iLines->Text=IntToStr(i)<<IntToStr(i)<Lines->Text=IntToStr(i<1);
    }
    return;
    }
    Упс!

    Автор сайта отвечает:
    А вообще я не очень понял, что вы хотели. Лучше когда саму задачу простыми словами описать и потом к этому показывать как делали кодом. Просто иногда угадывать тяжело, что именно нужно.




    0



    0
  • Саня говорит:

    Объясните пожалуйста глупому идиоту как получаеться 500500 ? Как работает эта формула не пойму




    0



    0
  • Гульназ говорит:
    почему в цикле for (double i=-1; i<=1; i=i+0.1)  0 равен -1.38778e-016
    for(double i=-1; i<=1;i=i+0.1)
    cout<<i<<"\n";

    результат

    -1
    -0.9
    -0.8
    -0.7
    -0.6
    -0.5
    -0.4
    -0.3
    -0.2
    -0.1
    -1.38778e-016
    0.1
    0.2
    0.3
    0.4
    0.5
    0.6
    0.7
    0.8
    0.9
    1



    0



    0
  • Диана говорит:

    Помогите,пожалуйста,решить задачку на С++

    Дана последовательность целых чисел a1, a2, …, an.
    Вывести на печать только те числа, для которых ai >= i.




    1



    0

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Случайная книга в электронном формате

Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

- Я тут котёнка завела. Помоги придумать какое-нибудь компьютерное имя... - Мышка! - Ты чё, это же котик! - Ну, тогда БЛОХ ПИТАНИЕ.

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок