Java: Композиция операций
А что, если понадобится вычислить такое выражение: 3 + 5 - 2? Именно так мы и запишем:
System.out.println(3 + 5 - 2); // 3 + 5 - 2 => 8 - 2 => 6Обратите внимание, что компьютер производит арифметические вычисления в правильном порядке: сначала деление и умножение, потом сложение и вычитание. Иногда этот порядок нужно изменить — об этом немного далее.
Или другой пример:
System.out.println(2 * 4 * 5 * 10); // 2 * 4 * 5 * 10 => 8 * 5 * 10 => 40 * 10 => 400Как видно, операции можно соединять друг с другом и таким образом вычислять все более сложные составные выражения. Чтобы представить себе то, как происходят вычисления внутри интерпретатора, давайте разберем пример:
2 * 4 * 5 * 10В этом примере:
- Сначала вычисляем 2 * 4 и получаем выражение 8 * 5 * 10
- Затем умножаем 8 * 5. В итоге имеем 40 * 10
- В конце концов происходит последнее умножение, и получается результат 400
Задание
Реализуйте программу, которая вычисляет значение выражения 8 / 2 + 5 - -3 / 2 и выводит результат на экран. Не вычисляйте ничего самостоятельно, ваша программа должна производить все вычисления сама.
10Обратите внимание, что интерпретатор производит арифметические вычисления в правильном порядке: сначала деление и умножение, потом сложение и вычитание. Иногда этот порядок нужно изменить — об этом следующий урок.
Также обратите внимание на то, что в java по умолчанию используется целочисленное деление, 3 / 2 будет 1.
Java: Композиция операций
А что, если понадобится вычислить такое выражение: 3 + 5 - 2? Именно так мы и запишем:
System.out.println(3 + 5 - 2); // 3 + 5 - 2 => 8 - 2 => 6Обратите внимание, что компьютер производит арифметические вычисления в правильном порядке: сначала деление и умножение, потом сложение и вычитание. Иногда этот порядок нужно изменить — об этом немного далее.
Или другой пример:
System.out.println(2 * 4 * 5 * 10); // 2 * 4 * 5 * 10 => 8 * 5 * 10 => 40 * 10 => 400Как видно, операции можно соединять друг с другом и таким образом вычислять все более сложные составные выражения. Чтобы представить себе то, как происходят вычисления внутри интерпретатора, давайте разберем пример:
2 * 4 * 5 * 10В этом примере:
- Сначала вычисляем 2 * 4 и получаем выражение 8 * 5 * 10
- Затем умножаем 8 * 5. В итоге имеем 40 * 10
- В конце концов происходит последнее умножение, и получается результат 400
Задание
Реализуйте программу, которая вычисляет значение выражения 8 / 2 + 5 - -3 / 2 и выводит результат на экран. Не вычисляйте ничего самостоятельно, ваша программа должна производить все вычисления сама.
10Обратите внимание, что интерпретатор производит арифметические вычисления в правильном порядке: сначала деление и умножение, потом сложение и вычитание. Иногда этот порядок нужно изменить — об этом следующий урок.
Также обратите внимание на то, что в java по умолчанию используется целочисленное деление, 3 / 2 будет 1.
Ваше упражнение проверяется по этим тестам
import java.io.ByteArrayOutputStream;
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.PrintStream;
import static org.assertj.core.api.Assertions.assertThat;
class Test {
public static void main(String[] args) {
final var expected = "10";
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setOut(new PrintStream(out));
App.main(null);
final var actual = out.toString().trim();
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
System.out.println(actual);
assertThat(actual).isEqualTo(expected);
}
}Решение учителя откроется через:
20:00
