- Писать
if,else ifиelseс операторами сравнения и логическими операторами - Выбирать один из нескольких вариантов с помощью
switch - Повторять действия с помощью циклов
for,whileиdo-while - Управлять циклами с помощью
breakиcontinue
В игре надпись «Game over» появляется, когда здоровье персонажа падает до нуля, а экран перерисовывается в каждом кадре. Первое — это условие: программа принимает решение в зависимости от ситуации. Второе — цикл: одна и та же работа повторяется снова и снова. Без этих двух инструментов не обходится ни одна серьёзная программа.
if, else if и else
После ключевого слова if в скобках записывается условие. Если оно истинно (true), выполняется блок в фигурных скобках. else if проверяет следующее условие, а else срабатывает, когда ни одно условие не выполнено. Условия проверяются сверху вниз, и выполняется только блок первого истинного условия.
#include <iostream>
int main() {
int score = 78;
if (score >= 90) {
std::cout << "Excellent\n";
} else if (score >= 70) {
std::cout << "Good\n";
} else if (score >= 50) {
std::cout << "Satisfactory\n";
} else {
std::cout << "Try again\n";
}
return 0;
}Good
score равно 78: первое условие (78 >= 90) ложно, второе (78 >= 70) истинно — выводится Good, а остальные условия уже не проверяются.
Операторы сравнения и логические операторы
| Оператор | Значение | Истинный пример |
|---|---|---|
== | равно | 5 == 5 |
!= | не равно | 5 != 3 |
< > | меньше, больше | 3 < 5 |
<= >= | меньше или равно, больше или равно | 5 >= 5 |
&& | И: оба условия истинны | 4 > 0 && 4 < 10 |
|| | ИЛИ: истинно хотя бы одно | 4 < 0 || 4 > 2 |
! | НЕ: меняет значение на противоположное | !false |
#include <iostream>
int main() {
int age = 15;
bool hasTicket = true;
if (age >= 12 && hasTicket) {
std::cout << "Welcome to the cinema!\n";
}
if (age < 7 || age > 65) {
std::cout << "Free entry\n";
} else {
std::cout << "Standard price\n";
}
if (!hasTicket) {
std::cout << "Please buy a ticket\n";
}
return 0;
}Welcome to the cinema! Standard price
&& работает как логический элемент И: на выходе 1, только когда оба входа равны 1.switch: выбор из нескольких вариантов
Когда одну переменную нужно сравнить со множеством конкретных значений, удобен switch. Каждый case проверяет одно значение, а break выходит из switch. Если забыть break, выполнение «проваливается» в следующий case — иногда так делают намеренно: ниже 6 и 7 дают одинаковый результат. default срабатывает, если не подошёл ни один case.
#include <iostream>
int main() {
int day = 6;
switch (day) {
case 6:
case 7:
std::cout << "Weekend\n";
break;
case 5:
std::cout << "Almost weekend\n";
break;
default:
std::cout << "Working day\n";
}
return 0;
}Weekend
Циклы for и while
Цикл for используют, когда число повторений известно заранее. В его заголовке три части, разделённые точкой с запятой:
int i = 1— начало: переменная-счётчик создаётся один раз.i <= 5— условие: проверяется перед каждым повторением; когда оно ложно, цикл завершается.i++— шаг: выполняется после каждого повторения.
#include <iostream>
int main() {
for (int i = 1; i <= 5; i++) {
std::cout << i << " x 3 = " << i * 3 << '\n';
}
return 0;
}1 x 3 = 3 2 x 3 = 6 3 x 3 = 9 4 x 3 = 12 5 x 3 = 15
Цикл while работает, пока условие истинно, и удобен, когда число повторений заранее неизвестно. Например: у Лейлы 50 манатов, и каждый месяц она откладывает 40 манатов. Через сколько месяцев у неё будет не меньше 200 манатов?
#include <iostream>
int main() {
int savings = 50;
int months = 0;
while (savings < 200) {
savings += 40;
months++;
}
std::cout << "Months: " << months << '\n';
std::cout << "Savings: " << savings << " AZN\n";
return 0;
}Months: 4 Savings: 210 AZN
Есть и цикл do { ... } while (условие);: он проверяет условие после выполнения блока, поэтому тело выполняется хотя бы один раз. Это удобно, например, чтобы показать пользователю меню хотя бы однажды.
break и continue
break немедленно прекращает цикл, а continue пропускает остаток текущего повторения и переходит к следующему. Программа ниже пропускает чётные числа и завершает цикл, дойдя до числа больше 7:
#include <iostream>
int main() {
for (int n = 1; n <= 10; n++) {
if (n % 2 == 0) {
continue;
}
if (n > 7) {
break;
}
std::cout << n << '\n';
}
return 0;
}1 3 5 7
Главное
if,else ifиelseпроверяют условия сверху вниз и выполняют блок первого истинного.==сравнивает,=присваивает;&&,||и!объединяют условия.switchсравнивает переменную с конкретными значениями; не забывайbreakв конце каждогоcase.forподходит для известного числа повторений,whileработает, пока условие истинно, аdo-whileвыполняется хотя бы раз.breakпрекращает цикл, аcontinueпереходит к следующему повторению.
Проверь себя
Вопросов: 10. Каждый правильный ответ приносит XP.
int t = 25;? if (t > 30) { std::cout << "Hot"; } else if (t > 20) { std::cout << "Warm"; } else { std::cout << "Cold"; }