Выражения и операторы
Выражения и операторы
Кирилл Юрьевич Жигалов, к.т.н., преподаватель Университета «Синергия»
СОДЕРЖАНИЕ
- Выражения
- Операторы
- If
- Операторы break и continue
Выражения
Любая комбинация переменных и операций, которая может быть вычислена интерпретатором для получения значения, называется выражением.
Примеры:
- gamma + 10
- (omega – 17)*alpha/5
Результатом выполнения всех операций, входящих в состав выражения, является значение.
Разница между выражениями и операторами
Не надо путать Выражения и операторы – это не одно и то же.
Операторы являются указанием совершить какое-либо действие и завершаются точкой с запятой.
Выражения же определяют некоторую совокупность вычислений.
В одном операторе может присутствовать несколько выражений.
Операции
Операция представляет собой символ, благодаря которому производятся некоторые виды вычислений, сравнений или присваиваний с участием одного или нескольких значений. Типы операций: арифметические, присваивания, сравнения, логические, поразрядные (побитовые). Значения, расположенные по сторонам операции, называются операндами.
Операция присваивания выглядит как знак равенства =, она присваивает значение, стоящее с правой стороны от нее, переменной, стоящей с левой стороны.
Пример:
var x = 20;
var y = x + 32.
Арифметические операции
Арифметические операторы используются для вычислений так же как в алгебре (см. таблицу со сводкой арифметических операторов ниже). Допустимые операнды должны иметь числовые типы. Например, использовать эти операторы для работы с логическими типами нельзя, а для работы с типом char можно, поскольку в Java тип char—это подмножество типа int.
Оператор |
Результат |
Оператор |
Результат |
+ |
Сложение |
+ = |
сложение с присваиванием |
– |
вычитание (также унарный минус) |
-= |
вычитание с присваиванием |
* |
Умножение |
*= |
умножение с присваиванием |
/ |
Деление |
/= |
деление с присваиванием |
% |
деление по модулю |
%= |
деление по модулю с присваиванием |
++ |
Инкремент |
— |
декремент |
Инкремент и декремент
var count = count + 1; или
count += 1; или ++count;
Операция ++ инкрементирует – увеличивает на единицу.
class OpEquals {
public static void main(String args[]) {
int a = 1; int b = 2; int с = 3; a += 5;
b *= 4;
c += a * b; с %= 6; System.out.println(“a = ” + a); System.out.println(“b = ” + b); System.out.println(“c = ” + c);
}
}
А вот и результат, полученный при запуске этой программы:
С:> Java OpEquals
а = 6
b = 8
с = 3
var count = count + 1; или
count += 1; или ++count;
Операция ++ инкрементирует – увеличивает на единицу.
Знак операции инкремента
Знак операции инкремента бывает:
- в префиксной форме, когда он расположен перед своим операндом,
- в постфиксной форме, когда операнд записан перед знаком ++.
totalWeight = avg * ++count;
totalWeight = avg *count ++;
Составные операции присваивания
var x = 5; x = x + 30;
Эквивалентно
x += 30;
Составные операции присваивания записываются более кратко, чем их несоставные эквиваленты.
+= -= *= /= %=
Операции отношения
Для того, чтобы можно было сравнивать два значения, в Java имеется набор операторов, описывающих отношение и равенство. Список таких операторов приведен в таблице.
Оператор |
Результат |
== |
равно |
!= |
не равно |
> |
больше |
< |
меньше |
>= |
больше или равно |
<= |
меньше или равно |
Логические операции
Логические операции позволяют сравнивать результаты работы двух условных операндов с целью определения факта возвращения одним из них или обоими значения true и выбора соответствующего продолжения выполнения сценария. Логические операции можно применять при необходимости одновременной проверки более одного условия и использования результатов этой проверки.
Оператор |
Результат |
Оператор |
Результат |
& |
логическое И (AND) |
&= |
И (AND) с присваиванием |
| |
логическое ИЛИ (OR) |
= |
ИЛИ (OR) с присваиванием |
^ |
логическое исключающее ИЛИ (XOR) |
^= |
исключающее ИЛИ (XOR) с присваиванием |
|| |
оператор OR быстрой оценки выражений (short circuit OR) |
== |
равно |
&& |
оператор AND быстрой оценки выражений (short circuit AND) |
!= |
не равно |
! |
логическое унарное отрицание (NOT) |
?: |
тернарный оператор if-then-else |
Логические операторы
Результаты воздействия логических операторов на различные комбинации значений операндов показаны в таблице
А |
В |
OR |
AND |
XOR |
NOT A |
false |
false |
false |
false |
false |
true |
true |
false |
true |
false |
true |
false |
false |
true |
true |
false |
true |
true |
true |
true |
true |
true |
false |
false |
Операторы быстрой оценки логических выражений
Существуют два интересных дополнения к набору логических операторов. Это — альтернативные версии операторов AND и OR, служащие для быстрой оценки логических выражений. Вы знаете, что если первый операнд оператора OR имеет значение true, то независимо от значения второго операнда результатом операции будет величина true. Аналогично в случае оператора AND, если первый операнд—false, то значение второго операнда на результат не влияет—он всегда будет равен false.
Если вы в используете операторы && и || вместо обычных форм & и |, то Java не производит оценку правого операнда логического выражения, если ответ ясен из значения левого операнда. Общепринятой практикой является использование операторов && и || практически во всех случаях оценки булевых логических выражений. Версии этих операторов & и | применяются только в битовой арифметике.
Оператор if (если)
Оператор if (если) Оператор if позволяет интерпретатору JavaScript выполнять те или иные действия в зависимости от условия.
В операторе if сначала вычисляется выражение.
Если полученный результат условия равен true или может быть преобразован в true, то оператор, расположенный в теле if, выполняется.
Если результат условия равен false или преобразуется в false, то оператор не выполнится.
Круглые скобки вокруг выражения являются обязательной частью синтаксиса оператора if.
Если тело содержит нескольких операторов в одном блоке (тело), то они заключаются в фигурные скобки. Таким образом строки кода рассматриваются как один оператор. Фигурные скобки рекомендуется использовать всегда, даже когда оператор один. Это улучшает читаемость кода.
Пример
var num = prompt(“Введите любое число”,””); if(num > 5){
document.write(“Число: “, num, ” больше 5″);
}
Оператор if else
Используется, если необходимо совершить одно действие в случае выполнения условия и другое действие в случае невыполнения этого условия.
Пример
var num = prompt(“Введите любое число”,””); if(num >= 5){
document.write(“Число: “, num, ” больше или равно 5″);
}
else {
document.write(“Число: “, num, ” меньше 5″);
}
Вложенный оператор if
Оператор if является вложенным, если он находится внутри другого оператора if или else.
if(i) {
if(a) оператор 1;
if(b) оператор 2;
else оператор 3; //этот else ассоциирован с if(b) } else оператор 4; //этот else ассоциирован с if(i)
Последний оператор else не относится к if(a) потому, что он находится не во внутреннем блоке, этот else ассоциирован с if(i). Внутренний else ассоциирован с if(b), потому что этот if — ближайший к нему.
Конструкция if-else-if
Используется при необходимости проверки нескольких условий и выборе правильного.
if(условие){ оператор;
} else if(условие){ оператор;
} else if(условие){ оператор;
} else оператор;
В приведенной ниже программе этот оператор используется для проверки делителя перед выполнением операции деления. В случае нулевого делителя возвращается значение 0.
class Ternary {
public static void main(String args[]) {
int a = 42; int b = 2; int c = 99; i nt d = 0;
int e = (b == 0) ? 0 : (a / b);
int f = (d == 0) ? 0 : (c / d); System.out.println(“a = ” + a); System.out.println(“b = ” + b); System.out.println(“c = ” + c); System.out.println(“d = ” + d); System.out.println(“a / b = ” + e); System.out.println(“c / d = ” + f);
}
}
При выполнении этой программы исключительной ситуации деления на нуль не возникает и выводятся следующие результаты:
С: \>java Ternary а = 42
b = 2
с = 99 d = 0 a / b = 21 с / d = 0
Условные выражения в такой конструкции вычисляются сверху вниз. Как только обнаружится истинное условие, выполняется связанный с ним оператор, а все остальные операторы в многоступенчатой конструкции игнорируются. Если ни одно из условий не является истинным, то выполняется последний оператор else, который зачастую служит в качестве условия, устанавливаемого по умолчанию. Когда же последний оператор else отсутствует, а все остальные проверки по условию дают ложный результат, то никаких действий вообще не выполняется.
Тернарный оператор
Условный оператор
if (a < b)
x = a;
else x = b;
Тернарный оператор – это оператор, использующий более двух операндов. С помощью условного оператора предыдущий код можно записать следующим образом:
x = (a < b) ? a : b;
Оператор switch
Используется, если в программе присутствует большое дерево ветвлений и все ветвления зависят от значения какой-либо одной переменной.
Оператор switch сравнивает значение переменной с различными вариантами. При сравнении используется операция строгого равенства “===”.
Пример
var x = 3; switch(x){
case 1: //if(x === 1)
document.write(“x равен 1”); break;
case 2: //if(x === 2) document.write(“x равен 2”); break;
case 3: //if(x === 3) document.write(“x равен 3”); break; }
Оператор Break
Программа выводит одно из трех сообщений в зависимости от того, какое из чисел находится в переменной x.
Оператор break Завершает выполнение ветвления switch. Управление в этом случае передается первому оператору, следующему за конструкцией switch. Если значение переменной в операторе switch не совпадает ни с одним из значений констант, указанных внутри ветвления, то управление будет передано в конец switch без выполнения каких-либо других действий.
Пример
Без использования оператора break. var x = 1+1;
switch(x){
case 1: document.write(“x равен 1”);
case 2: document.write(“x равен 2”);
case 3: document.write(“x равен 3”);
}
Ключевое слово default
Ключевое слово default предназначено для того, чтобы программа могла выполнить некоторую последовательность действий в том случае, если ни одно из значений констант не совпало со значением переменной в операторе switch
Пример
var x = 3+3; switch(x){
case 1: document.write(“x равен 1”); break;
case 2: document.write(“x равен 2”); break;
case 3: document.write(“x равен 3”); break;
default: document.write(“С такими значениями не работаю”);
}
Рекомендуемая литература
- Нотон П.JAVA:Справ.руководство:Пер.с англ./Под ред.А.Тихонова.- М.:БИНОМ:Восточ.Кн.Компания,1996:Восточ.Кн.Компания.-447с..-(Club Computer)
- Патрик Нотон, Герберт Шилдт Полный справочник по Java.- McGraw- Hill,1997, Издательство “Диалектика”,1997
- Дэвид Флэнэген Java in a Nutshell.- O’Reilly & Associates, Inc., 1997, Издательская группа BHV, Киев, 1998
- Ренеган Э.Дж.(мл.)1001 адрес WEB для программистов:Новейший путеводитель программиста по ресурсам World Wide Web:Пер.с англ..- Минск:Попурри,1997.-512с.ил.
- Сокольский М.В.Все об Intranet и Internet.-М.:Элиот,1998.-254с.ил.
- Чен М.С. и др.Программирование на JAVA:1001 совет:Наиболее полное руководство по Java и Visual J++: Пер.с англ./Чен М.С.,Грифис С.В.,Изи Э.Ф..- Минск:Попурри,1997.-640с.ил.+ Прил.(1диск.)
- Майкл Эферган Java: справочник.- QUE Corporation, 1997, Издательство “Питер Ком”, 1998
- Джо Вебер Технология Java в подлиннике.- QUE Corporation, 1996, “BHV-Санкт-Петербург”,1997
- Джейсон Мейнджер Java: Основы программирования.- McGraw- Hill,Inc.,1996, Издательская группа BHV, Киев,1997
- И.Ю.Баженова Язык программирования Java.- АО “Диалог-МИФИ”, 1997
- Джон Родли Создание Java-апплетов.- The Coriolis Group,Inc.,1996, Издательство НИПФ “ДиаСофт Лтд.”,1996
- Майкл Томас, Пратик Пател, Алан Хадсон, Доналд Болл(мл.) Секреты программирования для Internet на Java.- Ventana Press, Ventana Communications Group, U.S.A.,1996, Издательство “Питер Пресс”, 1997
- Аарон И.Волш Основы программирования на Java для World Wide Web.-IDG Books Worldwide,Inc.,1996, Издательство “Диалектика”,1996
- Кен Арнольд, Джеймс Гослинг Язык программирования Java.- Addison-Wesley Longman,U.S.A.,1996, Издательство “Питер-Пресс”, 1997
- Нейл Бартлетт, Алекс Лесли, Стив Симкин Программирование на Java. Путеводитель.- The Coriolis Group,Inc.,1996, Издательство НИПФ “ДиаСофт Лтд.”,1996
- Крис Джамса Библиотека программиста Java.- Jamsa Press, 1996, ООО “Попурри”, 1996