Наиболее распространенные проверки

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 градусов



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: