Цель работы
Изучить принципы построения разветвляющихся алгоритмов, освоить работу с условными операторами, научиться создавать программы с множественным выбором, понять логические операции и их применение в условиях.
Задачи лабораторной работы
- Изучить понятие разветвляющегося алгоритма
- Освоить условные операторы if, else, else if
- Научиться использовать оператор switch-case
- Изучить логические операторы И, ИЛИ, НЕ
- Реализовать программы с проверкой условий
- Создать программы с вложенными условиями
Что такое разветвляющийся алгоритм?
Разветвляющийся алгоритм — это алгоритм, в котором выбор направления обработки информации зависит от исходных данных или промежуточных результатов. Каждое направление обработки данных называется ветвью алгоритма.
Условие
Логическое выражение, определяющее путь выполнения
Ветвление
Выбор одного из альтернативных путей
Множественность
Возможность выбора из нескольких вариантов
Вложенность
Условия внутри других условий
Виды ветвлений
📋 Полное ветвление
if-else конструкция с двумя альтернативными путями
if (условие)
{
// Действия при истинном условии
}
else
{
// Действия при ложном условии
}
📝 Неполное ветвление
Только if без else - действие выполняется или пропускается
if (условие)
{
// Действия только при истинном условии
}
// Продолжение программы
🔀 Множественное ветвление
Выбор из нескольких альтернатив
if (условие1)
{
// Вариант 1
}
else if (условие2)
{
// Вариант 2
}
else if (условие3)
{
// Вариант 3
}
else
{
// Вариант по умолчанию
}
Операторы сравнения
| Оператор |
Описание |
Пример (true) |
Пример (false) |
| == |
Равно |
5 == 5 ✅ |
5 == 3 ❌ |
| != |
Не равно |
5 != 3 ✅ |
5 != 5 ❌ |
| < |
Меньше |
3 < 5 ✅ |
5 < 3 ❌ |
| > |
Больше |
5 > 3 ✅ |
3 > 5 ❌ |
| <= |
Меньше или равно |
3 <= 3 ✅ |
5 <= 3 ❌ |
| >= |
Больше или равно |
5 >= 4 ✅ |
3 >= 5 ❌ |
Примеры комбинированных условий
// Разнообразные примеры условий
int x = 10, y = 20, z = 15;
// Простые условия
if (x < y) // 10 < 20 = true ✅
Console.WriteLine("x меньше y");
if (y == z) // 20 == 15 = false ❌
Console.WriteLine("Не выполнится");
// Сложные условия с AND (&&)
if (x < y && y > z) // true && true = true ✅
Console.WriteLine("Оба условия верны");
if (x > y && y > z) // false && true = false ❌
Console.WriteLine("Не выполнится - первое условие false");
// Сложные условия с OR (||)
if (x > 5 || y < 10) // true || false = true ✅
Console.WriteLine("Хотя бы одно условие верно");
if (x > 20 || y < 10) // false || false = false ❌
Console.WriteLine("Не выполнится - оба условия false");
// Условия с NOT (!)
if (!(x == y)) // !(false) = true ✅
Console.WriteLine("x не равен y");
if (!(x < y)) // !(true) = false ❌
Console.WriteLine("Не выполнится");
// Вложенные условия
if (x < y) // true ✅
{
if (y < 30) // true ✅
Console.WriteLine("x < y < 30");
else // false ❌
Console.WriteLine("Не выполнится");
}
Логические операторы
&& (И - AND)
Истина, только если оба условия истинны
true && true = true ✅
true && false = false ❌
false && true = false ❌
false && false = false ❌
int age = 25;
bool hasTicket = false;
// Оба условия должны быть true
if (age >= 18 && hasTicket) // true && false = false ❌
Console.WriteLine("Не выполнится");
else
Console.WriteLine("Нужен билет!");
|| (ИЛИ - OR)
Истина, если хотя бы одно условие истинно
true || true = true ✅
true || false = true ✅
false || true = true ✅
false || false = false ❌
bool isVIP = false;
bool hasPass = false;
// Хотя бы одно условие должно быть true
if (isVIP || hasPass) // false || false = false ❌
Console.WriteLine("Не выполнится");
else
Console.WriteLine("Доступ запрещен!");
! (НЕ - NOT)
Инверсия логического значения
!true = false ❌
!false = true ✅
bool isLoggedIn = false;
// Инверсия значения
if (!isLoggedIn) // !false = true ✅
Console.WriteLine("Требуется авторизация");
if (!true) // false ❌
Console.WriteLine("Не выполнится");
Приоритет логических операций
| Приоритет |
Операция |
Пример |
Результат |
| 1 (высший) |
! (НЕ) |
!false && true |
true && true = true ✅ |
| 2 |
&& (И) |
true || false && false |
true || false = true ✅ |
| 3 (низший) |
|| (ИЛИ) |
false || true && true |
false || true = true ✅ |
// Примеры с разными результатами
bool a = true, b = false, c = true;
// Без скобок (приоритет операций)
if (a || b && c) // true || (false && true) = true || false = true ✅
Console.WriteLine("Выполнится");
if (!b || c && false) // true || (true && false) = true || false = true ✅
Console.WriteLine("Выполнится");
if (b && c || a) // (false && true) || true = false || true = true ✅
Console.WriteLine("Выполнится");
// Со скобками (изменение приоритета)
if ((a || b) && c) // (true || false) && true = true && true = true ✅
Console.WriteLine("Выполнится");
if (!(a && b) || c) // !(true && false) || true = true || true = true ✅
Console.WriteLine("Выполнится");
// Примеры с false результатом
if (b && (c || a)) // false && (true || true) = false && true = false ❌
Console.WriteLine("НЕ выполнится");
if (!a && !b) // false && true = false ❌
Console.WriteLine("НЕ выполнится");
if (b || !c && !a) // false || (false && false) = false || false = false ❌
Console.WriteLine("НЕ выполнится");
Блок-схема разветвляющегося алгоритма
Начало
↓
Ввод данных
↓
Условие?
↓
Вывод результата
↓
Конец
Оператор switch-case
Используется для множественного выбора на основе значения переменной:
int day = 3;
switch (day)
{
case 1:
Console.WriteLine("Понедельник");
break;
case 2:
Console.WriteLine("Вторник");
break;
case 3:
Console.WriteLine("Среда");
break;
case 4:
Console.WriteLine("Четверг");
break;
case 5:
Console.WriteLine("Пятница");
break;
case 6:
case 7:
Console.WriteLine("Выходной");
break;
default:
Console.WriteLine("Неверный день");
break;
}
Примеры типовых задач
🔢 Математические условия
- Проверка четности/нечетности
- Определение знака числа
- Нахождение максимума/минимума
- Попадание в диапазон
📊 Классификация данных
- Определение категории
- Оценка по критериям
- Валидация ввода
- Фильтрация значений
🎯 Логические задачи
- Проверка условий доступа
- Определение состояния
- Принятие решений
- Проверка правил
📐 Геометрические условия
- Тип треугольника
- Принадлежность точки области
- Пересечение фигур
- Проверка существования
Тернарный оператор
Сокращенная запись простого условия:
// Обычная з��пись
string result;
if (age >= 18)
{
result = "Совершеннолетний";
}
else
{
result = "Несовершеннолетний";
}
// Тернарный оператор
string result = age >= 18 ? "Совершеннолетний" : "Несовершеннолетний";
// Синтаксис: условие ? значение_если_истина : значение_если_ложь