if (x>0)…if (x<0)… if (x>=0)… или if (x>0 || x==0)... | х – положительное, отрицательное, неотрицательное |
if (x>9 && x<100)… | Целое число х – двузначное положительное |
if (x>-10 && x<10)… | Целое число x - однозначное |
if (x %2==0)… | Целое число x - четное |
if (x %10==y)… | y равно последней цифре в x |
if (x/10 %10==y)… | y равно числу десятков в x |
if (x<=y && y<=z)… | x, y, z – упорядочены по возрастанию |
if (x % y ==0)… | x делится на y без остатка |
if (x==(int) x)… | У положительного вещественного числа x нет десятичной части |
Вы наверняка заметили, что мы постоянно использовали фразу "значение логического выражения" – рассчитывая на то, что смысл ее будет в общем смысле достаточно понятен.
Но, на самом деле, в математике существует целый раздел, занимающийся не числовой алгеброй, а алгеброй логических значений и выражений – и он не менее сложен, чем любой другой раздел математики.
Именно поэтому мы считаем важным включить в число рассматриваемых тем в нашем курсе и небольшой раздел, посвященный использованию логических значений и выражений в компьютерной сфере. Важность этой темы демонстрируется еще и тем, что в языке Java, как и в практически всех современных языках, существует специальный логический тип значений и переменных.
Раздел №13.
Булевы значения и переменные
Мы уже познакомились с несколькими типами значений и переменных: целыми числами, дробными, символьными и строковыми. Кроме того, при изучении команды выбора (ветвления) if, разбирая условия, которые в этой команде используются, мы упоминали два логических "результата", которые "образуются" в результате проверки условий – false и true.
Эти результаты "сигнализируют" о том, каким оказывается результат проверки условия:
· в случае, если условие не выполняется – результатом будет значение false; по-русски часто говорят, что результатом будет значение ложь;
· в случае, если условие выполняется – результатом будет значение true; по-русски часто говорят, что результатом будет значение истина.
Поскольку логические значения и выражения имеют очень широкое применение в программировании, в языке Java для них введен отдельный тип: boolean. У этого типа есть всего два значения – уже упомянутые нами true и false. Соответственно переменные этого типа могут принимать одно из этих двух значений.
Кстати, название этого типа связано с английским математиком (и учителем математики) Джорджем Булем (1815-1864), которого по праву считают создателем такого направления науки, как "математическая логика".
Приведем несколько примеров объявления и инициализации переменных этого типа.
boolean x, y;
x=false;
y=x;
boolean x=true, y=true;
Кроме таких способов "прямой инициализации", переменные этого типа могут получать значения в результате проверки на истинность каких-либо математических или логических выражений.
Приведем пример:
boolean x, y;
x=(a>b);
y=!x;
исполняется приведенный фрагмент следующим образом: в случае, если значение переменной а будет больше значения переменной b, переменная х получит значение true, а затем переменная y получит значение false. Дело в том, что выражение в третьей строке нашего примера имеет смысл "значение переменной y равно иному (противоположному) значению, по отношению к тому, какое значение имеется в переменной х ".
При этом следует иметь в виду, что в логике:
· "иное значение" по отношению к значению истина – это значение ложь;
· "иное значение" по отношению к значению ложь – это значение истина.
Переменные булевого типа (логические переменные, как их еще называют) позволяют записывать некоторые выражения в сокращенном виде, особенно в командах выбора (ветвления).
Приведем пример:
boolean flag=(a!=b);
if (flag) System.out.print("Переменные не равны");
В приведенном примере переменная flag получает значение true в случае, если значения переменных а и b – различны. В случае, если значения этих переменных равны, логическая переменная flag получает значение false.
Затем, если значение переменной flag оказалось равно true, то на экран выводится сообщение Переменные не равны. В случае же, если значение этой переменной окажется равным false, приведенное в нашем фрагменте сообщение не будет выводиться на экран.
Раздел №14.
Наиболее используемые функции библиотеки Math.
Использование функции random – работа со случайными числами
В языке Java имеется набор "готовых к употреблению" математических функций (команд), которые позволяют упростить выполнение некоторых важных вычислений, операций и действий.
Ниже приведена таблица наиболее часто используемых таких функций.
Функция | Краткое описание | Примеры применения и результат |
Math.abs(x) | Абсолютное значение х | Math.abs(10) à10 Math.abs(-10) à10 |
Math.pow(a,b) | а в степени b (ab) | Math.pow(2,3) à 8.0 Math.pow(-2,3) à -8.0 Math.pow(5.5,2) à 30.25 Math.pow(2,2.5) à 5.66 |
Math.sqrt(x) | Квадратный корень (положительный) | Math.sqrt(16) à 4.0 |
Math.round(x) | Округленное число | Math.round(6.7) à 7 Math.round(6.3) à 6 Math.round(-6.7) à -7 Math.round(-6.3) à -6 |
Math.floor(x) | Ближайшее слева число с нулевой дробной частью | Math.floor(15.2) à 15.0 Math.floor(0.98) à 0.0 Math.floor(-9.8) à -10.0 Math.floor(-9.2) à -10.0 |
Math.ceil(x) | Ближайшее справа число с нулевой дробной частью | Math.ceil(15.2) à 16.0 Math.ceil(0.98) à 1.0 Math.ceil(-9.8) à -9.0 Math.ceil(-9.2) à -9.0 |
Math.min(a,b) | Наименьшее из двух значений | Math.min(5,9) à 5 Math.min(5.2,1.1) à 1.1 |
Math.max(a,b) | Наибольшее из двух значений | Math.max(5,9) à 9 Math.max(5.2,1.1) à 5.2 |
Math.random() | Случайная десятичная дробь из диапазона от 0 (включая) до 1 (не включая) |
Дополним таблицу несколькими важными пояснениями:
· Все перечисленные в таблице функции принимают в качестве параметров переменные всех типов (int, long, double, float). Исключение составляет функция Math.round(x), которая выполняет округление параметра, и потому параметр должен быть или типа double, или типа float
· Обратите внимание, что функция Math.random(), создающая случайные дроби, вообще не имеет параметра.
· Функции Math.pow(a,b), Math.sqrt(x), Math.floor(x), Math.ceil(x), Math.random() – обязательно возвращают значение типа double
· Функция Math.round(x) преобразует параметр типа float в значение типа int, а параметр типа double в значение типа long
· Функции Мath.abs(x), Math.min(a,b), Math.max(a,b) возвращают тип значения в соответствии с используемыми в каждом конкретном случае типами параметров.
Кроме этих функций, в классе (библиотеке) Math имеются еще несколько, которые могут оказаться полезными при программировании задач, связанных, например, с математикой и физикой.
Среди них, в частности:
· Math.cos(n), Math.sin(n), Math.tan(n) — тригонометрические функции синус, косинус и тангенс, вычисляемые от аргумента n, указанного в радианах
· Math.acos(n), Math.asin(n), Math.atan(n) — обратные тригонометрические функции (арккосинус, арксинус и арктангенс), возвращают значение угла в радианах
· Math.toDegrees(n) — возвращает градусную меру угла в n радианов (пересчитывает величину угла, выраженную в радианах, в величину того же угла, но выраженную в угловых градусах)
· Math.toRadians(n) — возвращает радианную меру угла в n градусов (пересчитывает величину угла, выраженную в угловых градусах, в величину того же угла, но выраженную в радианах)
· Math.log(n) — возвращает значение натурального логарифма числа n.
· Math.log10(n) — возвращает значение десятичного логарифма числа n.
Все перечисленные функции принимают вещественные аргументы, а тип возвращаемого значения зависит от типа аргумента и от самой функции.
Кроме функций в рассматриваемом классе имеются две часто используемых константы:
· Math.PI — число «пи», с точностью в 15 десятичных знаков.
· Math.E — число Непера (основание экспоненциальной функции), с точностью в 15 десятичных знаков.
Примеры использования функций этой библиотеки:
· System.out.println(Math.abs(-2.33)); // выведет на экран 2.33
· System.out.println(Math.round(Math.PI)); // выведет на экран значение числа "пи"
· System.out.println(Math.round(9.5)); // выведет на экран 10
· System.out.println(Math.round(9.5-0.001)); // выведет на экран 9
· System.out.println(Math.ceil(9.4)); // выведет на экран 10.0
· double c = Math.sqrt(3*3 + 4*4);
System.out.println(c); // выведет на экран значение длины гипотенузы прямоугольного треугольника с катетами 3 и 4
· double s1 = Math.cos(Math.toRadians(60));
System.out.println(s1); // выведет на экран косинус угла в 60 градусов