
Урок 4: Управляющие Структуры — Как Принимать Решения (И Указывать Программе, Что Делать!)
С возвращением, смелый исследователь мира кода! 🗺️
До этого момента ты уже научился хранить числа, выполнять некоторые вычисления и даже заставил свои переменные выполнять что-то полезное. Но теперь настало время поднять ставки и контролировать поток своей программы. Потому что, давай честно, если твой код не может принимать решения или повторять задачи, это как GPS, который не умеет перестроиться — полная дезориентация!
Готов погрузиться в загадочный мир управляющих структур? От условий if до циклов — ты скоро будешь держать бразды правления и решать, что твоя программа должна делать и когда. Так что пристегни ремни, захвати чашечку кофе (сегодня точно двойной!), и поехали!
Условия If — Учим Твой Код Думать
Начнём с основ: условие if. Представь его как охранника в ночном клубе — пропускает только тех, кто соответствует условиям.
Синтаксис простой:
if (условие) {
    // код для выполнения, если условие истинно
}
Представь, что у тебя есть программа, которая проверяет, есть ли у тебя достаточно кофе в чашке:
#include <stdio.h>
int main() {
    int koffee = 3;
    if (koffee > 0) {
        printf("Программируй дальше, кофе ещё есть!\n");
    }
    return 0;
}
Объяснение: Если значение koffee больше 0, программа выводит “Программируй дальше, кофе ещё есть!”. В противном случае — полная тишина, как бариста, который молчит, когда у тебя закончился кофеин.
Инструкция else — Обработка Сценариев “Эх, Ну и Ладно”
А что делать, если кофе закончился? Твоя программа не должна просто сидеть и смотреть на тебя. В дело вступает инструкция else:
if (koffee > 0) {
    printf("Программируй дальше, кофе ещё есть!\n");
} else {
    printf("Кофе кончился! Пора за новой порцией.\n");
}
С else твоя программа теперь знает, как справляться с обоими сценариями. Это как план “Б” — потому что никто не хочет программировать на сухую.
Инструкция else if — Добавляем Больше Условий
А что если у тебя слишком много кофе? (Да, это возможно!) Добавим ещё одно условие с помощью else if:
if (koffee > 5) {
    printf("Эй, полегче с кофе! Пора сбавить обороты.\n");
} else if (koffee > 0) {
    printf("Программируй дальше, кофе ещё есть!\n");
} else {
    printf("Кофе кончился! Пора за новой порцией.\n");
}
Теперь твоя программа охватывает три сценария:
- Если у тебя больше 5 чашек — тебе предлагают притормозить.
 - Если немного осталось, она подбадривает тебя продолжать.
 - Если кофе нет — посылает к кофемашине.
 
Инструкция switch — Когда Много Опций
Если if, else и else if — это как дорожные знаки, то switch больше похож на светофор — несколько путей и одно условие. Используй switch, когда у тебя одно значение и много возможных исходов.
Представь, что ты хочешь проверить день недели:
#include <stdio.h>
int main() {
    int den = 4; // Пусть 4 — это четверг
    switch (den) {
        case 1:
            printf("Понедельник… эх.\n");
            break;
        case 2:
            printf("Вторник… держимся!\n");
            break;
        case 3:
            printf("Среда, половина недели позади!\n");
            break;
        case 4:
            printf("Четверг, почти конец недели!\n");
            break;
        case 5:
            printf("Пятница, время праздновать!\n");
            break;
        case 6:
        case 7:
            printf("Выходные! Время для отдыха.\n");
            break;
        default:
            printf("Неверный день...\n");
    }
    return 0;
}
Объяснение: В зависимости от значения den, программа выводит разное сообщение. switch идеально подходит, когда у тебя много вариантов и ты не хочешь нагромождать код кучей if.
Циклы — Заставь Код Работать Без Перерыва
Теперь, когда мы разобрались с условиями, давай поговорим о том, как заставить твою программу повторять действия снова и снова. Это работа для циклов. Циклы — как беговая дорожка для кода: продолжают крутиться, пока ты не скажешь “стоп”.
- Цикл 
for— Идеально, когда точно знаешь, сколько раз нужно повторить. 
for (int i = 0; i < 5; i++) {
    printf("Итерация %d\n", i);
}
- Цикл 
while— Отлично, когда не знаешь, сколько раз повторить. 
int koffee = 3;
while (koffee > 0) {
    printf("У тебя ещё %d чашек кофе.\n", koffee);
    koffee--; // Выпиваешь одну чашку
}
- Цикл 
do-while— Какwhile, но выполняется хотя бы один раз. 
int koffee = 0;
do {
    printf("Пора пополнить запасы кофе!\n");
} while (koffee > 0);
Типичные Ошибки в Циклах
Бесконечные Циклы: Забыл обновить значение переменной — поздравляю, программа зависла! Всегда продумывай выход из цикла.
Ошибки на одну итерацию (Off-By-One):
for (int i = 0; i <= 5; i++)запустится 6 раз, а не 5. Внимательно проверяй условия!Break и Continue: Используй
break, чтобы досрочно выйти из цикла, иcontinue, чтобы сразу перейти к следующей итерации.
Домашнее Задание: Создай Свою Игру-Угадайку!
Проверь свои новые навыки, создав игру. Вот что она должна делать:
- Выбери случайное число от 1 до 10.
 - Попроси пользователя угадать число.
 - Используй 
ifиwhile, чтобы подсказывать и продолжать, пока он не угадает. 
Бонусные Баллы: Добавь счётчик попыток. Посмотри, сможешь ли побить свой собственный рекорд!
Заключительные Мысли
Сегодня ты освоил управляющие структуры — настоящую основу для любого сложного кода. Но не спеши вешать свой программистский плащ! Присоединяйся ко мне на Уроке 5, где мы окунёмся в удивительный мир функций. Готовься организовать код, избежать дублирования и стать настоящим мастером функций! 🧙♂️✨
Смотрите также
- Урок 8: Указатели и Память – Как Управлять Адресами (И Не Заблудиться!)
 - Урок 7: Строки – Превращаем Символы в Слова (И Придаем Им Смысл)
 - Урок 6: Массивы – Организуем Данные Как Настоящий Про
 - Урок 5: Функции – Как Навести Порядок в Хаосе (И Избежать Повторения Кода!)
 - Урок 3: Арифметические Операции – Заставь Свои Переменные Работать на Тебя!