Java: Коммутативная операция
Мы все помним со школы фразу "от перемены мест слагаемых сумма не меняется". Это один из базовых принципов арифметики, он называется коммутативным законом.
Что такое коммутативность
Операцию называют коммутативной, когда порядок операндов не влияет на результат. Поменяли значения местами и получили тот же ответ. Сложение коммутативно:
System.out.println(3 + 2); // 5
System.out.println(2 + 3); // 5Одинаковый результат подтверждает коммутативность.
2 + 3 = 5 3 + 2 = 5
└──────────┬─────────┘
одинаковый результат
2 - 3 = -1 3 - 2 = 1
└──────────┬─────────┘
разный результатНекоммутативные операции
Не все операции так устроены. Вычитание меняет результат, когда операнды меняются местами:
System.out.println(2 - 3); // -1
System.out.println(3 - 2); // 1Деление тоже некоммутативно, и в Java это видно особенно ярко:
System.out.println(8 / 2); // 4
System.out.println(2 / 8); // 0В первом случае восьмерка делится на двойку и дает 4. Во втором двойка делится на восьмерку. Целых восьмерок в двойке не помещается ни одной, поэтому при делении целых чисел получается 0.
В программировании так же, как в арифметике
Java следует тем же математическим правилам, что и школьная арифметика. А раз большинство операций некоммутативны, порядок операндов всегда важен. Обращайте на него внимание, особенно с незнакомой операцией, и проверяйте порядок на примере вместо догадок.
Задание
Это задание напрямую не связано с темой урока. Но будет полезным попрактиковаться с арифметическими операциями и выводом на экран.
Напишите программу, которая считает и последовательно выводит на экран значения следующих математических выражений: «3 умножить на 5» и «-8 разделить на -4».
15
2Полезное
Java: Коммутативная операция
Мы все помним со школы фразу "от перемены мест слагаемых сумма не меняется". Это один из базовых принципов арифметики, он называется коммутативным законом.
Что такое коммутативность
Операцию называют коммутативной, когда порядок операндов не влияет на результат. Поменяли значения местами и получили тот же ответ. Сложение коммутативно:
System.out.println(3 + 2); // 5
System.out.println(2 + 3); // 5Одинаковый результат подтверждает коммутативность.
2 + 3 = 5 3 + 2 = 5
└──────────┬─────────┘
одинаковый результат
2 - 3 = -1 3 - 2 = 1
└──────────┬─────────┘
разный результатНекоммутативные операции
Не все операции так устроены. Вычитание меняет результат, когда операнды меняются местами:
System.out.println(2 - 3); // -1
System.out.println(3 - 2); // 1Деление тоже некоммутативно, и в Java это видно особенно ярко:
System.out.println(8 / 2); // 4
System.out.println(2 / 8); // 0В первом случае восьмерка делится на двойку и дает 4. Во втором двойка делится на восьмерку. Целых восьмерок в двойке не помещается ни одной, поэтому при делении целых чисел получается 0.
В программировании так же, как в арифметике
Java следует тем же математическим правилам, что и школьная арифметика. А раз большинство операций некоммутативны, порядок операндов всегда важен. Обращайте на него внимание, особенно с незнакомой операцией, и проверяйте порядок на примере вместо догадок.
Задание
Это задание напрямую не связано с темой урока. Но будет полезным попрактиковаться с арифметическими операциями и выводом на экран.
Напишите программу, которая считает и последовательно выводит на экран значения следующих математических выражений: «3 умножить на 5» и «-8 разделить на -4».
15
2Полезное
Ваше упражнение проверяется по этим тестам
import static org.assertj.core.api.Assertions.assertThat;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
class AppTest {
public static void main(String[] args) {
final var expected = "15\n2";
App.main(null);
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setOut(new PrintStream(out));
App.main(null);
final var actual = out.toString().trim();
assertThat(actual).isEqualTo(expected);
}
}Решение учителя откроется через:
20:00
