Надеюсь, прошлые темы был неоднократно повторены, вы поупражнялись и с легкостью можете написать простой калькулятор на C++. Теперь речь пойдет о первом цикле. Как первый, нам вполне подойдёт цикл for.
Суть любого цикла в программировании в том, что выполняется какое-то действие определенное число раз. Вам постоянно придётся встречаться с задачами, в которых некоторое однотипное действие нужно выполнить большое число раз. Чтобы заставит программу выполнять какой-то участок кода многократно, можно использовать циклы.
В языке C++ есть два прямых способа зацикливания: for и while, зацикливание с помощью рекурсии. Способов зацикливания несколько, я же буду знакомить сейчас только с одним, с зацикливанием for.
Пример простой учебной задачи: Напишите программу, которая выведет на экран числа по порядку. Например, от 1 до 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Borland C++ 3.1 Цикл for Листинг #1
#include <iostream.h>
#include <conio.h>
intmain()
{
clrscr();
inti;// переменная для счетчика
for(i=1;i<=10;i++)
{
cout<<i<<" ";
}
cin.get();//Ждем нажатия клавиши Enter
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//clang Цикл for Листинг #1
#include <iostream>
usingnamespacestd;
intmain()
{
for(inti=1;i<=10;i++)
{
cout<<i<<" ";
}
cin.get();//Ждем нажатия клавиши Enter
}
Вот элементарная и наглядная программа для начинающих, написанная в C++.
Наиболее важная для вас здесь только одна строчка for (i=1; i<=10; i++)
Давайте разберём эту самую строчку.
Вовнутрь цикла for передаётся три параметра, которые разделяются точкой с запятой:
C++
1
for(i=1;i<10;i++);
C++
1
for(inti=1;i<10;i++);
Первый параметр — начало отсчёта.
Второй параметр — конец отсчёта.
Третий параметр — шаг отсчёта.
Чтобы циклы не выполнялись бесконечно, им нужен некоторый опознавательный признак, который сможет дать понять циклу, что пора завершаться, таким опознавательным признаком служит так называемый счётчик цикла. В примерах выше счётчиком цикла выступает переменная i. Эта переменная в показанных примерах принимает начальное значение единицу (смотрите на однострочные коды). Признак выхода из цикла сработает тогда, когда в i окажется значение, равное или большее 10 (второй параметр внутри круглых скобок цикла). Какое значение окажется внутри i после очередного выполненного повторения — определяется шагом цикла: i++ обозначает, что после каждого повторения значение в i увеличивается на единицу, это то же, что i=i+1. Можно использовать разный шаг: i+=10, i+=20, i+=100, i*=2 и т. п.
C++
1
2
3
4
5
6
7
8
//Borland C++ 3.1 Цикл for Листинг #2
#include <iostream.h>
intmain(){
inti=0;
for(i=0;i<100;i++){//Выводим числа от нуля до 99
cout<<i<<" ";
}
}
for (начальное значение счётчика; пока значение счётчика согласуется с некоторым условием; изменять счётчик){ выполнять какой-то код }
В первое время при программировании на C++ у начинающих могут возникать некоторые характерные для новичков ошибки.
То, что должно циклически выполняться, нужно указать в фигурных скобках (можно забыть их поставить, а потом ломать голову – почему не работает)
Хотя можно и не использовать фигурные скобки в случае единичного выражения, лучше всё-таки не пренебрегать ими и не лениться.
for требует для себя обязательных круглых скобок и кода для повторений. Вам нужно привыкать к таким понятиям, как параметры и операторы. Внутри круглых скобок for происходит своеобразная настройка цикличности. Главная цель этой настройки — задать количество повторений или определить условие прекращения повторений. Программисты называют повторения итерациями. Каждая итерация цикла обозначает очередной повтор, очередной проход.
Внутри круглых скобок у for-цикла указываются параметры. Эти параметры разделяются точкой с запятой. Параметр может быть пустым. В бесконечной программе задано три пустых параметра для for-цикла.
C++
1
2
3
4
//Бесконечная программа
intmain(){
for(;;);
}
Первый параметр определяет начальное значение счётчика:
C++
1
2
3
4
//Бесконечная программа
intmain(){
for(inti=0;;);//Начало отсчёта с нуля
}
Второй параметр определяет критерий прекращения повторений:
C++
1
2
3
4
5
//Бесконечная программа
intmain(){
for(inti=0;i<100;);//Начало отсчёта с нуля, повторения будут происходить
//пока значение счётчика меньше ста
}
Сейчас программа бесконечно выполняется потому, что значение счётчика не изменяется. Т. е. i всегда ноль. Изменяется счётчик третьим параметром:
C++
1
2
3
4
5
//Количество повторений определено, счётчик изменяется, программа не бесконечна
intmain(){
for(inti=0;i<100;i++);//Начало отсчёта с нуля, повторения будут происходить
//пока значение счётчика меньше ста
}
Таким образом происходит настройка повторений. А то, что нужно повторять, обычно заворачивается вовнутрь фигурных скобок:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
usingnamespacestd;
intmain(){
for(inti=0;i<100;i++){
cout<<i<<'\n';
}
}
Будьте внимательны к точке с запятой и её отсутствию. Если поставить точку с запятой до фигурных скобок, то повторения не произойдут. Цикл-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++
1
for(inti=0;i<10;i++){i=i+1;}//НЕЛЬЗЯ!
Чтобы освоить этот материал C++ для начинающих, может потребоваться время. Кто-то поймет быстро, а кто-то потратит больше времени, чем хотел бы. Главное, не сдавайтесь, постоянно повторяйте несложные упражнения, чтобы руки до автоматизма знали как, где и что нужно писать. Если возникли какие вопросы, то лучше спросите. Я самостоятельно изучаю язык и по себе знаю, какого это, когда абсолютно один. – Приходится очень много искать, читать, и очень много примеров встречается с громоздкими, неудобными и непонятными решениями.
Цикл-for удобно использовать, когда есть чёткий критерий отсчёта повторов.
16 комментариев на «“Цикл for в С++ для начинающих”»
Помогите . Научился делать калькулятор , но не знаю как сделать калькулятор который бы после 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 << после пятого действия бы он завершил работу . Как всунуть цикл в калькулятор подскажите 🙁 спс большое
Здравствуйте. Отличный у Вас сайт, но в комментарии, когда Вы писали программу на вычисление суммы синусов у Вас ошибка — точнее не дописана часть программы. Для более лучшего понимания уберем 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.
==============================
и не понял вообще каким боком ноль). Я на ноль нигде не умножаю.
Внимательнее будьте. Всмотритесь в формулу которую товарищ просил использовать.
и зачем вы так сложно пишете?
ваша программа должна выглядеть как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
intmain()
{
intN=4;
doublesum=0;
doublepro=1;
for(inti=1;i<=N;i=i+2)
{
sum=i+(i+1);//Ну скобки я для вас поставил.
pro=pro*sum;
}
std::cout<<pro<<"\t";
return0;
}
Да похоже немного не досмотрела зато потренировалась в написании программы на другой манер. Спасибо!
Здравствуйте. Подскажите, пожалуйста, как с помощью оператора for вывести на экран одно и тоже слово несколько раз. Например, задача: Дано натуральное число N (1<=N<=100). Вывести свое имя N раз.
Спасибо
ПОМОГЛИ СПАСИБО
Помогите . Научился делать калькулятор , но не знаю как сделать калькулятор который бы после 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 << после пятого действия бы он завершил работу . Как всунуть цикл в калькулятор подскажите 🙁 спс большое
Отличный сайт! Спасибо за все. Можно изучать здесь.
Помогите, нужно сделать задачу за циклом for
Вычислить y = sin1(sin1+sin 2)(sin1+sin 2+sin3)…(sin1+sin 2 +sin3+…+sin n)
Здравствуйте. Отличный у Вас сайт, но в комментарии, когда Вы писали программу на вычисление суммы синусов у Вас ошибка — точнее не дописана часть программы. Для более лучшего понимания уберем 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; //Чтобы видеть все значения
}
}
Да похоже немного не досмотрела зато потренировалась в написании программы на другой манер. Спасибо!
Объясните пожалуйста глупому идиоту как получаеться 500500 ? Как работает эта формула не пойму
sum=0;
i=1; sum=0+1; 1
i=2; sum=1+2; 3
i=3; sum=3+3; 6
i=4; sum=6+4; 10
результат
Потому что в машинном представлении точного нуля в не целых числах нет.
Помогите,пожалуйста,решить задачку на С++
Дана последовательность целых чисел a1, a2, …, an.
Вывести на печать только те числа, для которых ai >= i.
сайт гавно
😛
Добрий день!Поможіть,будь ласка, зробити завдання.
Исправить?
Добрий день!Допоможіть,будь ласка,виконати завдання:
#include»stdafx.h»
#include
using namespace std;
int main()
{int i;s;
s=0;
for (i=1;i<=5;i++){s=s+i;}
cout<<s<<endl;
return 0;
}
Здравствуйте. Подскажите, пожалуйста, как с помощью оператора for вывести на экран одно и тоже слово несколько раз. Например, задача: Дано натуральное число N (1<=N<=100). Вывести свое имя N раз.
Спасибо