🔷 C#

Операторы сравнения и логические операторы в C#

Что это и зачем?

Представь, что ты играешь в компьютерную игру. Чтобы пройти уровень, тебе нужно проверять разные условия: "Если у героя меньше 10 жизней, то включи защиту" или "Если игрок нажал кнопку И собрал все монеты, открой дверь".

В программировании такие проверки делают операторы сравнения и логические операторы. Они помогают программе "думать" и принимать решения. Без них код был бы просто списком команд, которые выполняются всегда одинаково, а так программа может реагировать на разные ситуации.

Например, ты пишешь калькулятор оценок. Если ученик набрал больше 90 баллов — "Отлично", если меньше 50 — "Плохо". Или проверяешь, может ли пользователь войти в систему: если пароль правильный И аккаунт не заблокирован — пускай.

Операторы сравнения сравнивают числа или текст. Логические операторы соединяют несколько условий в одно. Вместе они — основа любого "умного" кода.

Синтаксис и примеры кода

В C# операторы сравнения выглядят так:

  • == — равно (внимание: два знака равно, не один!)
  • != — не равно
  • > — больше
  • < — меньше
  • >= — больше или равно
  • <= — меньше или равно

Логические операторы:

  • && — И (оба условия должны быть истинны)
  • || — ИЛИ (хотя бы одно условие истинно)
  • ! — НЕ (меняет истину на ложь и наоборот)

Результат сравнения — это всегда true (истина) или false (ложь).

Пример 1: Проверка возраста

int age = 14;
bool canDrive = age >= 18; // false, потому что 14 меньше 18

if (canDrive)
{
    Console.WriteLine("Можешь водить машину!");
}
else
{
    Console.WriteLine("Подрасти ещё."); // Выполнится это
}

// Объяснение:
// age >= 18 — это сравнение. Оно даёт false.
// if проверяет true/false. Если true — выполняет первый блок, если false — второй.

Пример 2: Проверка логина и пароля

string login = "user123";
string password = "qwerty";

// Проверяем, что логин равен "admin" И пароль равен "12345"
if (login == "admin" && password == "12345")
{
    Console.WriteLine("Добро пожаловать, админ!");
}
else
{
    Console.WriteLine("Неверный логин или пароль.");
}

// Объяснение:
// && означает "И". Оба условия должны быть true.
// login == "admin" — false (потому что login = "user123")
// Значит всё условие false — идём в else.

Пример 3: Скидка для студентов или пенсионеров

int age = 20;
bool isStudent = true;

// Скидка, если возраст меньше 18 ИЛИ человек студент
if (age < 18 || isStudent)
{
    Console.WriteLine("Скидка 50%!");
}
else
{
    Console.WriteLine("Полная цена.");
}

// Объяснение:
// || означает "ИЛИ". Достаточно одного true.
// age < 18 — false (20 не меньше 18)
// isStudent — true
// Значит условие true — скидка даётся.

Пример 4: Проверка, что число не равно нулю

int number = 7;

if (number != 0)
{
    Console.WriteLine("Число не ноль, можно делить.");
}
else
{
    Console.WriteLine("На ноль делить нельзя!");
}

// Объяснение:
// != проверяет "не равно".
// 7 != 0 — это true, поэтому выполняется первый блок.

Пример 5: Сложное условие с НЕ

bool isRaining = false;
bool hasUmbrella = true;

// Если НЕ идёт дождь ИЛИ есть зонт — можно гулять
if (!isRaining || hasUmbrella)
{
    Console.WriteLine("Идём гулять!");
}
else
{
    Console.WriteLine("Сидим дома.");
}

// Объяснение:
// !isRaining — это "НЕ isRaining". isRaining = false, значит !false = true.
// true || true = true — гуляем.
// Если бы isRaining = true и hasUmbrella = false, то !true = false, false || false = false — сидим дома.

Сравнение с Python

В Python те же операторы выглядят почти так же, но есть пара отличий:

  • Вместо && пишут and
  • Вместо || пишут or
  • Вместо ! пишут not
  • Операторы сравнения такие же: ==, !=, >, <, >=, <=

Пример на Python (тот же, что и в C#):

age = 14
can_drive = age >= 18  # False

if can_drive:
    print("Можешь водить машину!")
else:
    print("Подрасти ещё.")

# Логические операторы:
login = "user123"
password = "qwerty"

if login == "admin" and password == "12345":
    print("Добро пожаловать, админ!")
else:
    print("Неверный логин или пароль.")

Главное отличие: в C# логические операторы — это символы (&&, ||, !), а в Python — слова (and, or, not). В остальном логика одинаковая.

Типичные ошибки новичков

  1. Путают = и ==
    = — это присваивание (положить значение в переменную).
    == — это сравнение (проверить, равны ли значения).
    Ошибка: if (age = 18) — так нельзя! Надо if (age == 18).
  2. Забывают про приоритет операций
    Сначала выполняются сравнения, потом логические операторы. Но лучше использовать скобки для ясности.
    Пример: if (age > 18 && name == "Tom" || score > 100) — непонятно, что имелось в виду. Правильно: if ((age > 18 && name == "Tom") || score > 100).
  3. Путают && и ||
    && требует, чтобы все условия были истинны.
    || требует хотя бы одного истинного.
    Ошибка: проверяют "если возраст больше 18 ИЛИ имя 'Tom'", а нужно "И".
  4. Сравнивают строки неправильно
    Строки сравниваются посимвольно. "apple" > "banana" — это false, потому что 'a' меньше 'b'.
    Для сравнения строк без учёта регистра используют специальные методы, но это уже сложнее.
  5. Забывают, что результат сравнения — true/false
    Можно записать результат в переменную: bool isAdult = age >= 18; — это работает. Но новички иногда пишут if (age >= 18 == true) — это лишнее, достаточно if (age >= 18).

Итог

Операторы сравнения и логические операторы — это как "мозг" программы. Они позволяют коду реагировать на разные ситуации: проверять возраст, сравнивать пароли, решать, давать скидку или нет.

Запомни главное:

  • Сравнения дают true или false.
  • && — всё должно быть правдой.
  • || — хотя бы одно правда.
  • ! — переворачивает правду в ложь.
  • Не путай = и ==.
  • Используй скобки для сложных условий.

Попробуй написать свою программу: спроси у пользователя возраст и скажи, может ли он смотреть фильм с рейтингом 18+. Или проверь, ввел ли он правильный пароль. Чем больше практики, тем быстрее запомнишь!