Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
яп.doc
Скачиваний:
63
Добавлен:
13.05.2015
Размер:
216.06 Кб
Скачать

9. Типы данных с плавающей точкой. Константы с плавающей точкой.

Константы класса Math. Методы класса Math: прямые трансцендентные, обратные трансцендентные, гиперболические, экспоненциальные. Примеры.

Числа с плавающей точкой, называемые действительными, используются при вычислениях, которые требуют получения результата с точностью до определенного десятичного знака. float (32 бита) и double (64 бита).

Константы с плавающей точкой: Числа с плавающей точкой представляют десятичные значения с дробной частью. Стандартная форма записи десятичного числа состоит из: целого числа; десятичной точки; дробной части. Научная форма записи десятичного числа состоит из: мантиссы; символа E, суффикса,

Константы класса Math типа double:

Math.PI – число π с точностью в 15 десятичных знаков.

Math.E – основание натурального логарифма с точностью в 15 десятичных знаков.

Методы класса Math:

  • Прямые трансцендентные:

double sin(double arg) - Возвращает синус угла arg, переданного в радианах

double cos(double arg) - Возвращает косинус угла arg, переданного в радианах

double tan(double arg) - Возвращает тангенс угла arg, переданного в радианах

  • Обратные трансцендентные:

double asin(double arg) - Возвращает угол, синус которого равен arg.

double acos(double arg) - Возвращает угол, косинус которого равен arg.

double atan(double arg) - Возвращает угол, тангенс которого равен arg.

double atan2(double x, double y) - Возвращает угол, тангенс которого равен x/y.

  • Гиперболические:

double sinh(double arg) - Возвращает гиперболический синус угла arg, переданного в радианах.

double cosh(double arg) - Возвращает гиперболический косинус угла arg, nepeдaннoro в радианах.

double tanh(double arg) - Возвращает гиперболический тангенс угла arg, переданного в радианах.

  • Экспоненциальные:

double ехр(double arg) - Возвращает экспоненту arg.

double log(double arg) - Возвращает натуральный логарифм arg.

double log10(double arg) - Возвращает логарифм по основанию 10 от arg.

double pow(double y, double x) - Возвращает y в степени x.

double sqrt(double arg) - Возвращает квадратный корень из arg.

10. Типы данных с плавающей точкой. Константы с плавающей точкой.

Константы класса Math. Методы класса Math: функции округления.

Генерация псевдослучайных чисел. Генерация целых и вещественных

чисел в заданном интервале. Примеры.

См. 9.

Методы класса Math:

  • Функции округления:

int abs(int arg) - Возвращает абсолютное значение arg.

long abs(long arg) - Возвращает абсолютное значение arg.

float abs(float arg) - Возвращает абсолютное значение arg.

double abs(double arg) - Возвращает абсолютное значение arg.

double ceil(double arg) - Возвращает наименьшее целое число, которое больше arg.

double floor(double arg) - Возвращает наибольшее целое число, которое меньше или равно arg.

int round(float arg) - Возвращает arg, округленное до ближайшего int.

long round(double arg) - Возвращает arg, округленное до ближайшего long.

int max(int x, int y) - Возвращает большее из двух чисел х и у.

long max(long x, long y) - Возвращает большее из двух чисел х и у.

float max(float x, float y) - Возвращает большее из двух чисел х и у.

double max(double x, double y) - Возвращает большее из двух чисел х и у.

int min(int x, int y) - Возвращает меньшее из двух чисел х и у.

long min(long x, long y) - Возвращает меньшее из двух чисел х и у

float min(float x, float y) - Возвращает меньшее из двух чисел х и у.

double min(double x, double y) - Возвращает меньшее из двух чисел х и у.

  • Генерация псевдослучайных чисел:

Метод Math.random() возвращает псевдослучайное вещественное число из промежутка [0;1).

  • Генерация целых и вещественных чисел в заданном интервале:

x = (int)(Math.random ()*(b – a + 1)) + a; // [a,b]

11. Форматный вывод. Спецификаторы формата. Форматирование целых чисел. Форматирование вещественных чисел. Указание минимальной ширины поля.

Форматный вывод – вывод в различные потоки значений разных типов, отформатированных согласно заданному формату (шаблону).

Спецификатор формата начинается со знака процента с последующим спецификатором преобразования.

Форматирование целых чисел: System.out.printf ("Результат: %d", c);

Форматирование вещественных чисел: System.out.printf ("%f", x);

Спецификатор минимальной ширины – целое число, помещенное между символом % и кодом преобразования формата.

Спецификатор минимальной ширины дополняет вывод пробелами, обеспечивая заданную минимальную длину.

12. Форматный вывод. Спецификаторы формата. Указание точности.

Флаги формата. Использование индекса аргументов.

См. 11.

Указание точности: Спецификатор точности может быть применен к спецификаторам формата %f, %e, %g и %s. Спецификатор точности следует за спецификатором минимальной ширины поля (если таковой имеется) и состоит из точки с последующим целым числом.

Флаги формата: позволяют управлять различными аспектами преобразования. Все флаги формата – одиночные символы, которые следуют за знаком % в спецификаторе формата.

- - выравнивание влево

0 – вывод дополняется нулями вместо пробелов

Пробел – положительным числам предшествует пробел

+ - положительным числам предшествует знак +

, - числовые значения, включающие групповые разделители

( - отрицательные числовые значения заключены в скобки

Использование индекса аргументов: Обычно порядок аргументов и спецификаторов совпадает (слева направо), т.е. первый спецификатор относится к первому аргументу, второй – ко второму и т.д. Индекс аргумента следует за % в спецификаторе формата и имеет вид n$, где n – индекс нужного аргумента, начиная с 1.

13. Разветвляющиеся алгоритмы. Условный оператор и его особенности.

Пример программы с блок-схемой.

Разветвляющиеся алгоритмы – алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий.

Условный оператор:

if (<условие>) {

<что делать, если условие верно>

}

else {

<что делать, если условие неверно>

}

Особенности:

  • вторая часть (else …) может отсутствовать (неполная форма)

  • если в блоке один оператор, можно убрать фигурные скобки

14. Сложные условия. Порядок выполнения логических операций. При-

мер программы с блок-схемой.

Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций:

  • ! – НЕ (отрицание, инверсия)

  • && – И (логическое умножение, конъюнкция, одновременное выполнение условий)

  • || – ИЛИ (логическое сложение, дизъюнкция, выполнение хотя бы одного из условий)

Порядок выполнения (приоритет = старшинство)

  • выражения в скобках

  • ! (НЕ, отрицание)

  • <, <=, >, >=,

  • ==, !=

  • && (И)

  • || (ИЛИ)

15. Оператор выбора и его особенности. Выполнение оператора выбора.

Вложенные операторы выбора.

Операторы выбора.

В языке Java существует всего 2 оператора выбора: оператор if и оператор switch. Они позволяют управлять выполнением той или иной программы в зависимости от некоторых условий. В этом уроке мы рассмотрим оператор If.

Оператор if.

Оператор if позволяет направить выполнение программы по одному из 2-х возможных путей в зависимости от какого-либо условия. Конструкция с этим оператором имеет вид:

if (условие) оператор_1;

else оператор_2;

В этой конструкции "условие" – это значение типа "boolean". Если вы помните, то значение типа "boolean" является результатом операций сравнения или логических операций. Чаще всего, оператор "if" используется именно в операциях сравнения.

"Оператор_*" в данной конструкции – это любой из операторов, которые присутствуют в языке Java. Причем они могут быть одиночным, а могут быть составным (несколько операторов). Составной оператор необходимо заключать в фигурные скобки. После ключевого слова "if" записывается условие и оператор(ы), которые выполняются, если условие верно. После "else" записывается оператор(ы), которые выполняются, если условие ложно.

Всю конструкцию можно расшифровать следующим образом: Если (if) условие истинно, то выполняется "оператор_1", если же оно "ложно", то (else) выполняется "оператор_2". Вторая строка в данной конструкции не обязательна. Если ее не будет, то в случае если условие ложно, ни один из операторов не будет выполнен.

Рассмотрим пример.

class prog_10{

public static void main(String[] args){

int a=30;

int b=20;

if (a>b) {

System.out.println("Переменная a больше переменной b");

}

}

}

Строка №3-№4. Объявляем 2 целочисленные переменные "a" и "b" и присваиваем им значения.

Строка №5. Записываем конструкцию с оператором выбора if. В круглых скобках записывается условие (a>b). Если это условие верно, то будут выполняться операторы, находящиеся в фигурных скобках {}. У нас в фигурных скобках стоит один оператор " System.out.println", который выводит на экран сообщение.

Пример написан так, что условие (a>b) окажется верным (30>20), поэтому сработает оператор вывода на экран.

Операторы выбора в Java.

Теперь изменим пример, поменяв условие в строке №5.

class prog_10{

public static void main(String[] args){

int a=30;

int b=20;

if (a<b) {

System.out.println("Переменная a больше переменной b");

}

}

}

Строка №5. Теперь условие (a<b). Это условие ложно, так как 30 не меньше 20. Учитывая тот факт, что условие ложно, оператор "System.out.println" не будет выполнен и сообщение на экран не будет выведено.

Оператор if в Java.

Следующий пример демонстрирует действие оператора "if" с оператором "else".

class prog_10{

public static void main(String[] args){

int a=30;

int b=20;

if (a<b) {

System.out.println("Переменная a больше переменной b");

}

else {

System.out.println("b меньше a");

}

}

}

В данном примере условие ложно, поэтому оператор в строке №6 не будет выполнен. Но, здесь также присутствует оператор "else"(строка №8). После него записываются альтернативные операторы, которые выполняются только в тех случаях, если условие является ложным.

Оператор выбора if...else.

Обратите внимание, что операторы заключаются в фигурные скобки, хотя здесь это не обязательно, ведь фигурные скобки нужны при использовании составного оператора. Однако это не является ошибкой, более того, многие программисты заключают в фигурные скобки даже один оператор, чтобы исключить возможные ошибки, например, при добавлении еще одного или нескольких операторов.

Например, посмотрим на следующий пример.

class prog_10{

public static void main(String[] args){

int a=30;

int b=20;

if (a>b) {

System.out.println("Переменная a больше переменной b");

}

else

System.out.println("b меньше a");

int c=a+b;

System.out.println("Сумма чисел="+c);

}

}

После оператора "else" мы добавили еще 2 оператора:

Строка №10. Оператор присваивания, который записывает в переменную "c" значение суммы переменных "a" и "b".

Строка №11. Выводим эту сумму на экран.

В этой программе условие является истинным, т.е. выполнится оператор в строке №6, а операторы после "else" (строка №9-№11) не выполниться. Однако если посмотрим на результат, то увидим, что операторы в строке №10 и №11 тоже выполнились.

Использование составных операторов.

Переменная "c" была создана и ее значение выведено на экран. Почему так произошло?

Все дело как раз в фигурных скобках. Операторы после "else" не заключены в фигурные скобки, поэтому компилятор считает, что к "else" относится только один оператор в строке №9. Поэтому он не будет выполняться, а остальные выполняются. Чтобы компилятор считал, что все 3 оператора относятся к "else" необходимо заключить их в фигурные скобки.

class prog_10{

public static void main(String[] args){

int a=30;

int b=20;

if (a>b) {

System.out.println("Переменная a больше переменной b");

}

else {

System.out.println("b меньше a");

int c=a+b;

System.out.println("Сумма чисел="+c);

}

}

}

Вложенные операторы if.

Иногда после оператора "if" или "else" может быть записан еще один (или несколько) операторов "if", либо конструкций "if…else".

class prog_10{

public static void main(String[] args){

int a=30;

int b=20;

if (a>b) {

if (a==30) {

System.out.println("Переменная a="+a);

}

}

else {

System.out.println("a меньше b");

}

}

}

Строка №6. Здесь используется вложенный оператор "if". Фактически, он добавляет к программе еще одно условие. Сначала проверяется первое условие в строке №5 (a больше b). Если оно истинно, то проверяется второе условие в строке №6 (a равно 30). Если оно тоже истинно, то выполняется оператор в строке №7.

Вложенный оператор if.

Важно помнить: Оператор "else" всегда относится к ближайшему оператору "if", который находится с ним в одном блоке и не связан с другим оператором "if".

Пример:

class prog_10{

public static void main(String[] args){

int a=30;

int b=20;

if (a==30) {

if (b>a){

System.out.println("a меньше b");

}

if (b<a){

System.out.println("a больше b");

}

else {

System.out.println("Переменная a="+a);

}

}

else {

System.out.println("a меньше b");

}

}

}

Фигурная скобка в строке №5 открывает блок, который заканчивается в строке №15. Если кликнуть мышкой в редакторе NetBeans по любой фигурной скобке он подсветит 2-ую фигурную скобку, относящуюся к этому блоку.

Вложенный оператор if...else.

Оператор "else" внутри этого блока (строка №12) относится к ближайшему оператору "if" (строка №9).

Оператор "else" в строке №16 не может быть связан с "if" в строке №6 или №9, поскольку не находится с ними в одном блоке. Он связан с оператором "if" в строке №5.

Тернарный оператор??? (пр.12-13)