Elementor Header #8

8.Композиция операций

8. Композиция операций в C#

1. Введение

Композиция операций — это процесс объединения нескольких операторов в одно выражение. В C# операции могут комбинироваться, следуя правилам приоритета и ассоциативности. Композиция позволяет писать компактный код, но требует внимательности к порядку вычислений.


2. Приоритет и ассоциативность операторов

При композиции операций важно учитывать приоритет (какие операции выполняются первыми) и ассоциативность (в каком порядке операции группируются).

ПриоритетОператорыАссоциативность
1 (высокий)() (скобки)
2++, --, !, ~справа налево
3*, /, %слева направо
4+, -слева направо
5<<, >> (сдвиги)слева направо
6<, <=, >, >=слева направо
7==, !=слева направо
8&слева направо
9^слева направо
10``
11&&слева направо
12` 
13?: (тернарный оператор)справа налево
14=, +=, -=, *=, /=, %=справа налево

📌 Операции с более высоким приоритетом выполняются первыми. Если приоритет одинаковый, порядок выполнения определяется ассоциативностью.


3. Примеры композиции операций

3.1. Комбинированные арифметические операции

				
					int result = 10 + 5 * 2; // 5 * 2 = 10, затем 10 + 10 = 20
Console.WriteLine(result);

				
			

Чтобы изменить порядок выполнения, используйте скобки:

				
					int result = (10 + 5) * 2; // (10 + 5) = 15, затем 15 * 2 = 30
Console.WriteLine(result);

				
			

3.2. Логическая композиция

Комбинирование логических операторов (&&, ||, !):

				
					bool a = true, b = false, c = true;
bool result = a && (b || c); // true && (false || true) → true && true → true
Console.WriteLine(result);

				
			

3.3. Использование тернарного оператора

Тернарный оператор может быть вложенным:

				
					int age = 20;
string category = (age < 18) ? "Несовершеннолетний" : (age < 65) ? "Взрослый" : "Пенсионер";
Console.WriteLine(category);

				
			

📌 Вложенные тернарные операторы могут ухудшить читаемость кода, поэтому используйте их осторожно.


3.4. Композиция побитовых операций

Можно комбинировать побитовые операции:

				
					int x = 5; // 0101
int y = 3; // 0011
int result = (x & y) | (x ^ y); // (0101 & 0011) | (0101 ^ 0011) → 0001 | 0110 → 0111 (7)
Console.WriteLine(result);

				
			

Заключение

Композиция операций — мощный инструмент в программировании, позволяющий писать более краткий и выразительный код. Однако важно:

✔ Учитывать приоритет операторов.
✔ Использовать скобки для явного контроля порядка вычислений.
✔ Следить за читаемостью кода, не усложняя его излишней вложенностью.

Практикуйтесь, чтобы лучше понимать, как составлять сложные выражения и использовать их эффективно! 🚀

4. Тестовое задание

Напишите программу, которая:

  1. Запрашивает у пользователя три числа.
  2. Вычисляет выражение: (a+b)∗c/(a−b)(a + b) * c / (a — b)
  3. Проверяет, является ли результат четным числом.
  4. Если результат четный, выводит "Число четное", иначе "Число нечетное".
Пример кода:
				
					using System;

class Program
{
    static void Main()
    {
        Console.Write("Введите число a: ");
        double a = Convert.ToDouble(Console.ReadLine());

        Console.Write("Введите число b: ");
        double b = Convert.ToDouble(Console.ReadLine());

        Console.Write("Введите число c: ");
        double c = Convert.ToDouble(Console.ReadLine());

        if (a - b == 0)
        {
            Console.WriteLine("Ошибка: деление на ноль!");
            return;
        }

        double result = (a + b) * c / (a - b);
        Console.WriteLine($"Результат: {result}");

        string parity = (result % 2 == 0) ? "Число четное" : "Число нечетное";
        Console.WriteLine(parity);
    }
}

				
			

Попробуйте написать и запустить этот код, чтобы убедиться в правильности выполнения операций и особенностях работы с числами с плавающей точкой.

logo