WebRazrab

WebRazrab

Ваш помощник в обучении

Array

leafleafleafDocy banner shape 01Docy banner shape 02

Выражения и операторы

Выражения и операторы

Кирилл Юрьевич Жигалов, к.т.н., преподаватель Университета «Синергия»

СОДЕРЖАНИЕ

  • Выражения
  • Операторы
  • 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