Elementor Header #8

7. Коммутативная операция

1. Введение

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

2. Что такое коммутативность?

Операция называется коммутативной, если изменение порядка операндов не влияет на результат выполнения операции. В математике это часто встречается, например, в сложении и умножении:

  • Сложение: a+b=b+aa + b = b + a
  • Умножение: a×b=b×aa \times b = b \times a

Это свойство позволяет упростить многие вычисления и оптимизировать код.

3. Коммутативные операции в C++

В языке C++ коммутативными являются следующие бинарные операции:

  1. Сложение (+)
  2. Умножение (*)
  3. Побитовое ИЛИ (|)
  4. Побитовое И (&)
Пример 1: Сложение
				
					#include <iostream>

int main() {
    int a = 5;
    int b = 10;

    // Операция сложения
    int sum1 = a + b;
    int sum2 = b + a;

    std::cout << "a + b = " << sum1 << std::endl;
    std::cout << "b + a = " << sum2 << std::endl;

    return 0;
}

				
			

Результат:

				
					a + b = 15
b + a = 15

				
			

В этом примере результат сложения двух чисел не изменяется, независимо от порядка их сложения.

Пример 2: Умножение
				
					#include <iostream>

int main() {
    int a = 3;
    int b = 7;

    // Операция умножения
    int product1 = a * b;
    int product2 = b * a;

    std::cout << "a * b = " << product1 << std::endl;
    std::cout << "b * a = " << product2 << std::endl;

    return 0;
}

				
			

Результат:

				
					a * b = 21
b * a = 21

				
			

Здесь результат умножения чисел также не изменяется в зависимости от порядка переменных.

Пример 3: Побитовое ИЛИ
				
					#include <iostream>

int main() {
    int a = 6; // 0110 в двоичной системе
    int b = 9; // 1001 в двоичной системе

    // Операция побитового ИЛИ
    int result1 = a | b;
    int result2 = b | a;

    std::cout << "a | b = " << result1 << std::endl;
    std::cout << "b | a = " << result2 << std::endl;

    return 0;
}

				
			

Результат:

				
					a | b = 15
b | a = 15

				
			

Побитовое ИЛИ также является коммутативной операцией.

Пример 4: Побитовое И
				
					#include <iostream>

int main() {
    int a = 12; // 1100 в двоичной системе
    int b = 7;  // 0111 в двоичной системе

    // Операция побитового И
    int result1 = a & b;
    int result2 = b & a;

    std::cout << "a & b = " << result1 << std::endl;
    std::cout << "b & a = " << result2 << std::endl;

    return 0;
}

				
			

Результат:

				
					a & b = 4
b & a = 4

				
			

Побитовое И также является коммутативной операцией.

4. Не коммутативные операции

Некоторые операции не являются коммутативными. Например, вычитание и деление:

  • Вычитание: a−b≠b−aa — b \neq b — a
  • Деление: a/b≠b/aa / b \neq b / a
Пример: Вычитание
				
					#include <iostream>

int main() {
    int a = 10;
    int b = 5;

    // Операция вычитания
    int result1 = a - b;
    int result2 = b - a;

    std::cout << "a - b = " << result1 << std::endl;
    std::cout << "b - a = " << result2 << std::endl;

    return 0;
}

				
			

Результат:

				
					a - b = 5
b - a = -5

				
			

В этом примере порядок операндов меняет результат.

Заключение

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

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

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

  1. Запрашивает у пользователя два числа.
  2. Выполняет и выводит результаты следующих операций: сложение, умножение, побитовое И и побитовое ИЛИ.
  3. Выводит результаты в двух вариантах: в порядке ввода и в обратном порядке.

Примерный код:

				
					#include <iostream>

int main() {
    int a, b;

    std::cout << "Введите первое число: ";
    std::cin >> a;
    std::cout << "Введите второе число: ";
    std::cin >> b;

    // Операции в порядке ввода
    std::cout << "a + b = " << a + b << std::endl;
    std::cout << "a * b = " << a * b << std::endl;
    std::cout << "a & b = " << (a & b) << std::endl;
    std::cout << "a | b = " << (a | b) << std::endl;

    // Операции в обратном порядке
    std::cout << "b + a = " << b + a << std::endl;
    std::cout << "b * a = " << b * a << std::endl;
    std::cout << "b & a = " << (b & a) << std::endl;
    std::cout << "b | a = " << (b | a) << std::endl;

    return 0;
}

				
			

Этот пример поможет вам лучше понять работу коммутативных операций и их влияние на результаты вычислений.

logo