Условия и циклы в C/C++
В этом уроке вы познакомитесь с условными операторами if, else, тернарным оператором и циклами while, do while, for в C++. В конце вас ждут практические задачи с решениями и чек-лист для самопроверки.
Главная мысль урока: условные операторы помогают программе принимать решения, а циклы позволяют повторять действия нужное число раз. Например, if (age >= 18) проверяет условие, а for (int i = 0; i < 5; i++) повторяет код несколько раз.
Содержание
1. Цели урока
- Понять, как работают операторы
if,else,else if. - Научиться использовать тернарный оператор для простого выбора из двух значений.
- Освоить циклы
while,do whileиfor.
2. Что такое условия и циклы в C++
Программа редко выполняет все команды подряд без изменений. Обычно ей нужно проверять значения переменных, выбирать один из вариантов действий и иногда повторять один и тот же код несколько раз. Для этого в C++ используются условные операторы и циклы.
Условный оператор проверяет выражение и решает, какой блок кода выполнить. Цикл повторяет блок кода, пока выполняется условие или пока не будет достигнут предел повторений.
#include <iostream>
using namespace std;
int main()
{
int age = 20;
if (age >= 18)
{
cout << "Dostup razreshen" << endl;
}
return 0;
}
Частая путаница
3. Условные операторы if, else, else if
База
Оператор if выполняет код только тогда, когда условие истинно. Если нужно выполнить другой код при ложном условии, добавляют else. Если вариантов несколько, используют цепочку else if.
#include <iostream>
using namespace std;
int main()
{
int temperature = -5;
if (temperature > 0)
{
cout << "Na ulitse teplo" << endl;
}
else
{
cout << "Na ulitse holodno" << endl;
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int score = 82;
if (score >= 90)
{
cout << "Otlichno" << endl;
}
else if (score >= 75)
{
cout << "Horosho" << endl;
}
else if (score >= 60)
{
cout << "Udovletvoritelno" << endl;
}
else
{
cout << "Nuzhno podtyanut znaniya" << endl;
}
return 0;
}
Типовые задачи
Проверка знака числа
Нужно определить, число положительное, отрицательное или равно нулю.
int number = -3;
if (number > 0)
{
cout << "Polozhitelnoe" << endl;
}
else if (number < 0)
{
cout << "Otricatelnoe" << endl;
}
else
{
cout << "Nol" << endl;
}
Проверка доступа
Нужно разрешить вход только совершеннолетнему пользователю.
int age = 17;
if (age >= 18)
{
cout << "Vhod razreshen" << endl;
}
else
{
cout << "Vhod zapreshen" << endl;
}
Типичные ошибки
Ошибка 1: путаница между = и ==
int x = 5;
// if (x = 10) // oshibka po smyslu: zdes prisvaivanie, a ne sravnenie
if (x == 10)
{
cout << "x ravno 10" << endl;
}
Ошибка 2: неправильный порядок условий
int score = 95;
// Nepravilno
if (score >= 60)
{
cout << "Sdano" << endl;
}
else if (score >= 90)
{
cout << "Otlichno" << endl;
}
// Pravilno: snachala bolee strogoe uslovie
if (score >= 90)
{
cout << "Otlichno" << endl;
}
else if (score >= 60)
{
cout << "Sdano" << endl;
}
4. Тернарный оператор
Синтаксис и правила
Тернарный оператор - это короткая запись простого выбора между двумя значениями. Он удобен, когда нужно присвоить переменной одно из двух значений по условию.
uslovie ? znachenie1 : znachenie2;
#include <iostream>
#include <string>
using namespace std;
int main()
{
int number = 7;
string result = (number % 2 == 0) ? "Chetnoe" : "Nechetnoe";
cout << result << endl;
return 0;
}
if и else.Типовые рецепты
Выбор большего числа
int a = 10;
int b = 20;
int maxValue = (a > b) ? a : b;
cout << maxValue << endl;
Преобразование условия в текст
int age = 19;
string message = (age >= 18) ? "Sovershennoletniy" : "Nesovershennoletniy";
cout << message << endl;
Ошибки
Ошибка 1: слишком сложное выражение
int score = 80;
// Takoy kod huzhe chitaetsya
string result = (score >= 90) ? "Otlichno" : (score >= 75) ? "Horosho" : "Nuzhno uchit";
// Dlya novichka luchshe obychnyy if / else if / else
Ошибка 2: ожидание выполнения нескольких команд
int x = 5;
// Ternarnyy operator vybiraet vyrazhenie, a ne udoben dlya dlinnyh blokov koda
string text = (x > 0) ? "Polozhitelnoe" : "Ne polozhitelnoe";
cout << text << endl;
5. Циклы while, do while, for
Циклы нужны для повторения кода. Выбор конкретного цикла зависит от задачи. while проверяет условие перед выполнением, do while сначала выполняет код, а потом проверяет условие, а for удобен, когда число повторений известно заранее.
#include <iostream>
using namespace std;
int main()
{
int i = 1;
while (i <= 5)
{
cout << i << endl;
i++;
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int i = 1;
do
{
cout << i << endl;
i++;
}
while (i <= 5);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
for (int i = 1; i <= 5; i++)
{
cout << i << endl;
}
return 0;
}
for.Типичные ошибки
Ошибка 1: бесконечный цикл
int i = 1;
// Oshibka: i ne menyaetsya, uslovie vsegda istinno
// while (i <= 5)
// {
// cout << i << endl;
// }
while (i <= 5)
{
cout << i << endl;
i++;
}
Ошибка 2: забытая точка с запятой после while в do while
int i = 1;
do
{
cout << i << endl;
i++;
}
while (i <= 3);
Ошибка 3: неправильная граница цикла
// Vyvod ot 1 do 5 vklyuchitelno
for (int i = 1; i <= 5; i++)
{
cout << i << endl;
}
6. Когда какой цикл и оператор выбирать
Сравнение подходов
if используют, когда нужно принять решение. Тернарный оператор выбирают, когда требуется коротко присвоить одно из двух значений. while подходит, когда количество повторений заранее неизвестно. do while нужен, когда код должен выполниться хотя бы один раз. for удобен для счетчика и известного количества шагов.
// if
if (number > 0)
{
cout << "Polozhitelnoe" << endl;
}
// Ternarnyy operator
string text = (number > 0) ? "Plyus" : "Ne plyus";
// while
while (number > 0)
{
number--;
}
// for
for (int i = 0; i < 10; i++)
{
cout << i << endl;
}
Типичные ошибки
Ошибка 1: использование while там, где удобнее for
// Rabotaet, no menee udobno
int i = 0;
while (i < 5)
{
cout << i << endl;
i++;
}
// Dlya schetchika luchshe for
for (int j = 0; j < 5; j++)
{
cout << j << endl;
}
Ошибка 2: использование тернарного оператора вместо понятного if
// Dlya slozhnoy logiki luchshe obychnyy if
int score = 88;
if (score >= 90)
{
cout << "Otlichno" << endl;
}
else if (score >= 75)
{
cout << "Horosho" << endl;
}
else
{
cout << "Nuzhno podtyanut znaniya" << endl;
}
7. Практика: типовые задачи (с решениями)
Базовые задачи
Задача 1: Определить, четное число или нечетное
Программа получает число и выводит результат проверки.
#include <iostream>
#include <string>
using namespace std;
int main()
{
int number;
cin >> number;
string result = (number % 2 == 0) ? "Chetnoe" : "Nechetnoe";
cout << result << endl;
return 0;
}
Задача 2: Проверить знак числа
Нужно вывести, положительное число, отрицательное или ноль.
#include <iostream>
using namespace std;
int main()
{
int number;
cin >> number;
if (number > 0)
{
cout << "Polozhitelnoe" << endl;
}
else if (number < 0)
{
cout << "Otricatelnoe" << endl;
}
else
{
cout << "Nol" << endl;
}
return 0;
}
Задачи на циклы и условия
Задача 3: Вывести числа от 1 до N
Используйте цикл for.
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cout << i << " ";
}
return 0;
}
Задача 4: Вывести только четные числа от 2 до 10
#include <iostream>
using namespace std;
int main()
{
for (int i = 2; i <= 10; i += 2)
{
cout << i << endl;
}
return 0;
}
Задача 5: Запрашивать пароль, пока он не станет правильным
#include <iostream>
#include <string>
using namespace std;
int main()
{
string password;
do
{
cout << "Vvedite parol: ";
cin >> password;
}
while (password != "12345");
cout << "Parol vernyy" << endl;
return 0;
}
8. Чек-лист самопроверки знаний
Отметьте пункты, которые вы действительно понимаете и можете применить без подсказок.
| ✓ | Навык | Проверка |
|---|---|---|
| Оператор if | Могу написать условие с if для проверки значения переменной. |
|
| Оператор else | Могу добавить ветку else для случая, когда условие ложно. |
|
| Цепочка else if | Могу проверить несколько вариантов подряд через else if. |
|
| Сравнение | Могу объяснить разницу между = и ==. |
|
| Тернарный оператор | Могу использовать условие ? значение1 : значение2 для простого выбора. |
|
| Цикл while | Могу написать цикл while и изменить переменную так, чтобы цикл завершился. |
|
| Цикл do while | Могу объяснить, почему do while выполняется хотя бы один раз. |
|
| Цикл for | Могу использовать for для повторения кода заданное количество раз. |
|
| Выбор конструкции | Могу выбрать между if, тернарным оператором, while и for в простой задаче. |