Как вы заметили в содержании, на главной странице сайта, в языке C применяются несколько видов циклов. Цикл for ми розглянемо першим, так как его легче понять новичкам, с моей точки зрения. А циклы while і do while, рассмотрены в отдельной статье.
Для начала, разберемся с тем, що означає цикл в програмуванні. Цикл – это специальный оператор, с помощью которого происходит повторение определённого участка кода определённое количество раз (какой участок кода повторять и когда цикл должен прерваться – определяет программист). Ще одне визначення запропонував відвідувач нашого сайту rrrFer: цикл – конструкция языка, предназначенная для организации повторного исполнения команд. Наприклад, щоб вивести на екран числа від одиниці до п'ятисот, можно использовать ручной вывод на экран:
Согласитесь – не самое интересное задание и представьте сколько пришлось бы прокручивать колесико мышки, чтобы добраться до конца кода. А можна скористатися циклом for і скоротити, тим самим в десятки разів, час на написання цієї “интересной” программы и сам размер кода. Вот, якомога виконати це завдання із застосуванням for:
1 2 3 4 5 6 7 8 9 10 11 12 | #include <iostream> using namespace std; int main() { for (int i = 0; i < 500; i++) { cout << i + 1 << endl; } return 0; } |
Ми починаємо визначати наш цикл в рядку 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.
1 2 3 4 5 6 7 8 9 10 11 12 | #include <iostream> using namespace std; int main() { for (int i = 500; i > 0; i--) { cout << i << endl; } return 0; } |
Не обязательно использовать постфиксный инкремент или декремент. Изменяем управляющую переменную так, как того требует задача. Це може бути++i, i = 2, i = 20, i -= 15… Наприклад:
управляющая переменная i змінюється від 8 до 88 включительно, при этом шаг изменения равен 8. То есть сначала i = 8, на второй итерации 16 и так далее до 88.
управляющая переменная i змінюється від 3000 до 300 включительно, с уменьшением при каждой итерации на 300 (3000, 2700, 2400…)
управляющая переменнаяi змінюється від 0 до 100 включительно, зі збільшенням при кожній ітерації на 10. (0, 10, 20…100)
управляющая переменнаяi змінюється від 3000 до 3 включительно, з розподілом при кожній ітерації на 10. (3000, 300, 30, 3)
В дополнение ко всему сказанному, хочу добавить, что все три, використовувані в круглих дужках, выражения необязательны. Если сделать такую, наприклад, запись: for( ; ; ) – это будет воспринято компилятором, как запуск так называемого бесконечного цикла. Здесь нет ни управляющей переменной, ни условия продолжения цикла, ні зміни керуючоїзмінної. Тобто цикл буде виконуватися нескінченно. В этом случае, чтобы все-таки как-то работать с таким циклом, керуюча змінна може бути визначена до циклу, её изменение можно добавить в конец тела for, а условие продолжения цикла можно задать используя оператор if і оператор break. Вот как это будет выглядеть:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> using namespace std; int main() { int i = 1; // объявление и инициализация управляющей переменной for (;;) // запуск бесконечного цикла { cout << i << endl; if (i == 5) // условие прерывания бесконечного цикла break; // прервать цикл, если условие - истина i++; // изменение управляющей переменной } return 0; } |
Отмечу, что существует такое понятие, як область видимості змінної. В этом примере область видимости переменной i – тело главной функции main(). А в предыдущих примерах, она ограничивалась телом цикла for і за його межами ця змінна вже була недоступна (к ней уже нельзя было обратиться – вывести её значение на экран, например) Це треба мати на увазі. Так как, если в программе встречаются несколько циклов и управляющие переменные определяются выше в коде, а не в круглых скобках () після операторівfor , для каждой необходимо придумывать уникальное имя. Или каким-то другим образом выходить из этой ситуации. Так що краще користуватися стандартним синтаксисом:
for ( определение управляющей переменной ; умова повторення циклу; зміна керуючоїзмінної)
Так код читається легше, всё необходимое для работы цикла находится в пределах одной строки кода и сколько бы не было циклов в вашем коде, вам не придется утруждаться и придумывать новые имена для управляющих переменных.
Рекомендую посмотреть видео по теме. В нем рассмотрен и цикл while
Практика программирования по этой теме находится здесь – Завдання: Цикл for.
не проходить правильний варіант відповіді ,підкажіть ,помилку не можу знайти: #include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
int digit1 = 0;//числа вводить користувач
int digit2 = 0;//вводить користувач
int result = 0;//змінна зберігає результат множення
cout << "Введите два однозначных числа : " <> digit1;
cin >> digit2;
cout << " digit1 * цифра2 = результат : " << digit1 * digit2 << endl;
system("cls");
int answer = 0;
cout << answer ;//результат множення вгадує користувач
cout << "Угадайте результат умножения введенных вами двух чисел : " << endl;
cout << "Вариант ответа в пределах (от1 до 81)" << endl;
for(результат = 1; result > answer;
cout << result < result)
{
cout << "Вы дали неправильный ответ! Ваш інший варіант : ";
}
else if(answer < result)
{
cout << "Ваш ответ неверный , інші варіанти : " << endl;
}
else
{
відповісти == результат;
break;
cout << "Правильный вариант ответа!" << endl;
}
}
return 0;
Ось код:
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “ru”);
int digit1 = 0;
int digit2 = 0;
int result = 0;
ІНТ відповідь;
cout << "Введите два однозначных числа : " digit1;
cin>> digit2;
if (digit1 >= 10 || digit2 >= 10) //ЯКЩО якесь із двох зазначених змінних більше 10 або навіть 10 програма завершить свою роботу. || АБО
{
cout << "Вы ввели не однозначное число." << endl;
return 0;
}
else
{
результат = цифра1 * digit2;// Помножуємо числа які ми ввели та привласнюємо їх у змінну result;
system("cls");
cout << "Угадайте результат умножения введенных вами двух чисел : " << endl;
cout << "Вариант ответа в пределах (от1 до 81)" answer;
if (!(відповісти == результат)) // ЯКЩО answer НЕ рівна result
{
cout << "К сожалению ответ неверный, правильну відповідь: " << result << endl;
}
else
{
cout << "Вы молодец! ви відгадали число" << endl;
}
}
}
Ось код:
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “RU”);
int digit1 = 0;
int digit2 = 0;
int result = 0;
ІНТ відповідь;
cout << "Введите два однозначных числа : " <> digit1;
cin>> digit2;
if (digit1 >= 10 || digit2 >= 10) //ЯКЩО якесь із двох зазначених змінних більше 10 або навіть 10 програма завершить свою роботу. || АБО
{
cout << "Вы ввели не однозначное число." << endl;
return 0;
}
else
{
результат = цифра1 * digit2;// Помножуємо числа які ми ввели та привласнюємо їх у змінну result;
system("cls");
cout << "Угадайте результат умножения введенных вами двух чисел : " << endl;
cout << "Вариант ответа в пределах (от1 до 81)" <> answer;
if (!(відповісти == результат)) // ЯКЩО answer НЕ рівна result
{
cout << "К сожалению ответ неверный, правильну відповідь: " << result << endl;
}
else
{
cout << "Вы молодец! ви відгадали число" << endl;
}
}
}
cout << + 1 << endl;
як я розумію тіло петлі починає крутитися з 1
якщо є інше число, тоді відповідь почнеться з нього
і 7 включає в себе 1
int main()
{
int a = 0;
INT B = 0;
cout << " згадка про номер " <> a;
cout << a << endl;
cout << endl;
{
for (a = 0; a < 10; A ++)
cout << a + 1 << endl;
}
return 0;
}
"for" ignoring variable after "cin" змінив один ?
for (a ; a < 10; A ++)
cout << a + 1 << endl;
}
return 0;
}
:)