Б). Дополните строки программы, введенные согласно п.1.2а, строчными комментариями

ПЗ-4

Исследование операторов Java.

Операторы присваивания и арифметические операторы

Подготовка к занятию

1. Операторы присваивания

2. Арифметические операторы

3. Отчет о занятии

 

На занятии рассматривается порядок применения операторов присваивания и арифметических операторов языка Java при разработке приложений для Java SE в среде IDE NetBeans.

 

Для выполнения заданий этого занятия требуются программное обеспечение и ресурсы, перечисленные ниже:

Программное обеспечение Ресурс для загрузки
Комплект для разработчика на языке Java (JDK) с IDE NetBeans JDK 7u7 with NetBeans 7.2 http://www.oracle.com/technetwork/java/javase/downloads/jdk-7-netbeans-download-432126.html
Тестовый редактор TextPad 6 http://www.textpad.com/download/

Перед началом работы создайте на личном флеш-диске каталоги типа:

E:\NBprojectsFIO\pz4_FIO –для записи результатов работы – проектов NetBeans IDE.

E:\JavaFIO\pz4_FIO –- для записи результатов работы, полученных в TextPad.

Примечание: FIO – аббревиатура от фамилии, имени, отчества студента. Например, для Павленко Сергея Леонидовича FIO = PSL.

 

Подготовка к занятию

П1. Создание и настройка проекта

Используя методку, рассмотренную на пз2, создайте и настройте в NetBeans IDE проект с именем MyApp4_FIO.

П.2. Добавление кода к автоматически созданному исходному файлу

К коду главного класса добавьте вывод сообщения "Исследование операторов Java" путем замены строки

// TODO code application logic here

строкой

System.out.println("Исследование операторов Java");

Сохраните изменения путем выбора команды"Файл" > "Сохранить".

П3. Компиляция и выполнение проекта

Для запуска программы выполните следующие действия:

Выберите команду "Выполнить" > "Запустить главный проект" (F6).

 

На экране окно NetBeans IDE должно принять вид, подобный приведенному на рис.1.

Рис. 1

Если все получилось – то Вы готовы к выполнению заданий занятия.

Операторы присваивания

 

Справочная информация

 

Переменная – это именованная ячейка памяти, содержимое которой может изменяться. Перед тем, как использовать какую-либо переменную, она должна быть задана в области программы, предшествующей месту, где эта переменная используется. При объявлении переменной сначала указывается тип переменной, а затем идентификатор задаваемой переменной. Указание типа позволяет компилятору задавать размер ячейки (объем памяти, выделяемой под переменную или значение данного типа), а также допустимые правила действий с переменными и значениями этого типа. В Java существует ряд предопределенных типов: int – целое число, float – вещественное число, boolean – логическое значение, Object – самый простой объектный тип (класс) Java, и т.д. Также имеется возможность задавать собственные объектные типы (классы), о чем будет рассказано позже.

Объявление переменных a1 и b1, имеющих некий тип MyType1, осуществляется так:

MyType1 a1,b1;

При этом MyType1 – имя типа этих переменных.

Другой пример – объявление переменной j типа int:

Int j;

 

Объявление переменных может сопровождаться их инициализацией - присваиванием начальных значений. Приведем пример такого объявления целочисленных переменных i1 и i2:

int i1=5;

int i2=-78;

либо

int i1=5,i2=-78;

Напомним, что символ "=" используется в Java и многих других языках в качестве символа присваивания, а не символа равенства, как это принято в математике.

Он означает, что значение, стоящее с правой стороны от этого символа, копируется в переменную, стоящую в левой части. То есть, например, присваивание b=a означает, что в переменную (ячейку) с именем b надо скопировать значение из переменной (ячейки) с именем a. Поэтому неправильное с точки зрения математики выражение

x=x+1

в программировании вполне корректно. Оно означает, что надо взять значение, хранящееся в ячейке с именем x, прибавить к нему 1 (это будет происходить где-то вне ячейки x ), после чего получившийся результат записать в ячейку x, заменив им прежнее значение.

 

После объявления переменных они могут быть использованы в выражениях и присваиваниях:

переменная = значение;

переменная = выражение;

переменная1 = переменная2;

Точка с запятой в конце любой операции присваивания превращает ее в оператор присваивания. Побочное действие операции — присваивание — становится в операторе основным.

Разница между операцией и оператором присваивания носит лишь теоретический характер. Присваивание чаще используется как оператор, а не операция.

 

Выражения

Из констант и переменных, операций над ними, вызовов методов и скобок составляются выражения (expressions). Разумеется, все элементы выражения должны быть совместимы, нельзя написать, например, 2 + true. При вычислении выражения выполняются четыре правила:

1. Операции одного приоритета вычисляются слева направо: х + у + zвычисляется как (х + у) + z. Исключение: операции присваивания вычисляются справа налево: х = у = z вычисляется как х = (у = z).

2. Левый операнд вычисляется раньше правого.

3. Операнды полностью вычисляются перед выполнением операции.

4. Перед выполнением составной операции присваивания значение левой части сохраняется для использования в правой части.

Следующие примеры показывает особенности применения первых трех правил. Пусть

int а = 3, b = 5;

Тогда результатом выражения b+(Ь=3) будет число 8; но результатом выражения (Ь=3)+b будет число 6. Выражение b+=(b = 3) даст в результате 8, потому что вычисляется как первое из приведенных выше выражений.

Четвертое правило можно продемонстрировать так. При тех же определениях а и ь в результате вычисления выражения b+=а+=b+= 7 получим 20. Хотя операции присваивания выполняются справа налево и после первой, правой, операции значение ь становится равным 12, но в последнем, левом, присваивании участвует старое значение ь, равное 5. А в результате двух последовательных вычислений а+=b+=7; b+=а; получим 27, поскольку во втором выражении участвует уже новое значение переменной ь, равное 12.

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

Порядок вычисления выражения всегда можно отрегулировать скобками, их можно вставить сколько угодно. Но здесь важно соблюдать "золотую середину". При большом количестве скобок снижается наглядность выражения и легко ошибиться в расстановке скобок. Если выражение со скобками корректно, то компилятор может отследить только парность скобок, но не правильность их расстановки.

Приоритет операций

Операции перечислены в порядке убывания приоритета. Операции на одной строке имеют одинаковый приоритет.

1. Постфиксные операции ++ и --

2. Префиксные операции ++ и --, дополнение ~ и отрицание !.

3. Приведение типа (тип).

4. Умножение *, деление / и взятие остатка %.

5. Сложение + и вычитание -.

6. Сдвиги <<, >>, >>>.

7. Сравнения >, <, >=, <=.

8. Сравнения ==, !=.

9. Побитовая конъюнкция &.

10. Побитовое исключающее ИЛИ ^.

11. Побитовая дизъюнкция | .

12. Конъюнкция &&.

13. Дизъюнкция | | .

14. Условная операция ?: .

15. Присваивания =, +=, -=, *=, /=, %=, &=, ^=, |=, <<, >>, >>>.

 

Примечание:

Дополнительные сведения по данному вопросу можно получить из документов:

· Приложение 4.1пз.doc

· Таблица 2.4. Простые специальные символы.doc

· Таблица 2.5. Составные специальные символы.doc

 

Задание для практической работы

а) Дополните код главного класса проекта строками 18-24 с рис.2, после чего выполните приложение. Если все сделано правильно, то в окне «Вывод» должны появиться сообщения, как на рис.3.

 

Рис. 2

 

Рис. 3

 

б). Дополните строки программы, введенные согласно п.1.2а, строчными комментариями.

 

 

Арифметические операторы

 

Справочная информация

К арифметическим операциям относятся:

· сложение + (плюс);

· вычитание - (дефис);

· умножение * (звездочка);

· деление / (наклонная черта — слэш);

· взятие остатка от деления (деление по модулю) % (процент);

· инкремент (увеличение на единицу) ++;

· декремент (уменьшение на единицу) –

 

Примечание.

Первые 5 операций из приведенного списка также могут быть реализованы с помощью операторов, представляющих собой составные специальные символы (см. табл. 2.5).

 

Между сдвоенными плюсами и минусами нельзя оставлять пробелы. Сложение, вычитание и умножение целых значений выполняются как обычно, а вот деление целых значений в результате дает опять целое (так называемое "целое деление"), например, 5/2 даст в результате 2, а не 2.5, а 5/(-3) даст -1. Дробная часть попросту отбрасывается, происходит усечение частного. Это поначалу обескураживает, но потом оказывается удобным для усечения чисел.

Примечание:

В Java принято целочисленное деление.

Это странное для математики правило естественно для программирования: если оба операнда имеют один и тот же тип, то и результат имеет тот же тип. Достаточно написать 5/2.0 или 5.0/2 или 5.0/2.0 и получим 2.5 как результат деления вещественных чисел.

Операция деление по модулю определяется так: а % b = а - (а / b) * b; например, 5%2 даст в результате 1, а 5% (-3) даст, 2, т.к. 5 = (-3) * (-1) + 2, но (-5)%3 даст -2, поскольку -5 = 3 * (-1) - 2.

Операции инкремент и декремент означают увеличение или уменьшение значения переменной на единицу и применяются только к переменным, но не к константам или выражениям, нельзя написать 5++ или (а + b)++.

Например, после приведенных выше описаний i++ даст -99, a j—- даст 99.

Интересно, что эти операции 'можно записать?и перед переменной: ++i, — j. Разница проявится только в выражениях: при первой формe записи (постфиксной) в выражении участвует старое значение переменной и только потом происходит увеличение или уменьшение ее значения. При второй форме записи (префиксной) сначала изменится переменная и ее новое значение будет участвовать в выражении.

Например, после приведенных выше описаний, (k++) + 5 даст в результате 10004, а переменная k примет значение 10000. Но в той же исходной ситуации (++k) + 5 даст 10005, а переменная k станет равной 10000.

 

Примечание:

Дополнительные сведения по данному вопросу можно получить из документов:

· Приложение 4.1пз.doc

· Таблица 2.4. Простые специальные символы.doc

· Таблица 2.5. Составные специальные символы.doc

 

Задание для практической работы

а). Разместите строки кода программы, введенные согласно п.1.2, в блочном комментарии.

 

б). Дополните код главного класса проекта строками, выполнение которых в приложении позволит пояснить особенности работы остальных арифметических операторов .

 

в). Для каждого арифметического оператора получите скрины окон кода и вывода по примеру рис.2 и рис.3.

Примечание: