3.5. Операции, операторы и выражения
Содержание
3.5.1. Оператор присваивания
3.5.2. Арифметические операции и выражения
3.5.3. Операции сравнения
3.5.4. Логические операции и выражения
3.5.5. Операции над строками
3.5.6. Упражнения
3.5.7. Контрольные вопросы
3.5.8. Источники
3.5.1. Оператор присваивания.
Вы научились пользоваться переменными (обычными и массивами) для сохранения их в памяти.
Сохранение в памяти осуществляется с помощью оператора присваивания, который конструируется с помощью операции присваивания (=). В левой части от операции присваивания должна находиться переменная, а в правой — то, что присваивается (запоминается). В правой части может находиться константа или переменная, которой уже что-то присвоено, а также выражение. Выражения будут рассматриваться далее в этом подразделе.
Что такое операторы? По своему смыслу оператор подобен завершенному предложению в английском языке (и других языках тоже). Вы их уже вовсю используете. Все программы на языке JavaScript, независимо от их размеров и сложности, представляют собой последовательность операторов. Например, когда вы вызываете в сценарии метод alert(x) для вывода на экран значения переменной x то это – оператор. Пример другого оператора - строка x=x+10, в которой значение x увеличивается на 10 с помощью выражения в правой части и это значение с помощью операции присваивания помещается в переменную x, в которой до этого хранилось предыдущее значение. Как уже упоминалось, в конце каждого оператора необходимо ставить точку с запятой (;), разделяющую операторы. Если оператор размещается в отдельной строке, то разделитель можно опустить.
Итак, ещё раз о переменных, константах и операторе присваивания.
Переменная – это имя, присваиваемое группе ячеек памяти компьютера, в которой могут содержаться данные во время исполнения программы. Имена переменных не могут начинаться с цифры, содержать пробелы, точки, слэджи и ещё некоторые символы. В данном пособии мы будем использовать лишь латиницу и символ подчёркивания.
Чтобы создать переменную в языке JavaScript используется оператор var, вслед за которым указывается имя, которое вы хотите присвоить переменной, например:
var a1, a_1, b;. В этом примере созданы три переменные без присвоения значений.
Переменной при создании можно присвоить начальное значение:
var а1=314, a_1=3.14, b='Crimea'. В этом примере созданы три переменные и им присвоены значения: первым двум переменным — числа, переменной b — строка.
Знак «=» называется операцией присваивания. С помощью операции присваивания создаются операторы присваивания: в левой части — переменная, в правой — то, что заносится в эту переменную.
Переменную можно образовать и без ключевого слова var, простым присваиванием: а1=314;.
На этом этапе вам следует знать о переменных также следующее:
•.в именах переменных можно использовать символы верхнего и нижнего регистра, при этом «регистр имеет значение»;
•.до объявления переменной ее значение имеет неопределенный тип (undefined);
•.имя переменой не может начинаться с цифры;
•.в именах переменных недопустимы пробелы; если необходим разделитель, используйте символ подчеркивания «_» (n_var) или разные регистры (nVar);
•.в качестве имен переменных нельзя использовать зарезервированные слова JavaScript (например: var, const).
Константы определяются при помощи ключевого слова const, например:
const pi=3.141592653589, e=2.718281828459045;
Отличие константы от переменной состоит в том, что переменной можно присваивать данные много раз и каждый раз прежнее значение в переменной будет заменяться новым, а значение константы изменить невозможно.
3.5.2. Арифметические операции и выражения.
Арифметические операции – это элементарные математические действия: сложение (+), вычитание (-), деление (/), умножение (*), остаток от деления (%).
Арифметические выражения строятся с использованием арифметических операций, переменных, констант и математических функций.
Выше перечисленные операции служат для построения выражений с двумя с двумя операндами. Операции с двумя операндами называют бинарными операциями. Есть ещё арифметические операции с одним операндом — унарные. С унарными операциями вы сможете разобраться самостоятельно по справочнику, например этому - http://javascript.ru/manual .
Все арифметические операции известны вам из арифметики и алгебры. Единственная операция, нуждающаяся в пояснении, - остаток от деления нацело. Например, 9 делится на 5 с остатком 4. Иногда эту операцию также называют взятием по модулю. При использовании в качестве операндов целых чисел – результат также будет представлять целое число. Но если операндами будут не целые, а вещественные числа (с плавающей точкой), в результате также получится вещественное число, например: 5.5 % 2.2 = 1.1.
Выше упоминались математические функции, которые можно использовать в арифметических выражениях. Далее мы научимся самостоятельно создавать необходимые функции. Однако в языке Javascript имеются наиболее употребимые математические функции, принадлежащие объекту Math. Функции, встроенные в объект, называются методами. Обращение к методам любого объекта осуществляется с использованием следующего синтаксиса:
имя_объекта.имя_метода(параметры)
Обращение к методам объекта Math выполняется, соответственно, так:
Math.имя_метода(параметры)
Например, a1=Math.sqrt(2) приведёт к вычислению корня квадратного из двух. Если параметров несколько, то они разделяются запятой, например, выполнение оператора a1=Math.pow(a1,5), приведёт к возведению в пятую степень, числа, находящегося до этого в переменной a1.
Свойства объекта Math — это константы, в которых хранятся наиболее употребимые математические постоянные, например, в Math.PI хранится число π, а свойство Math.EXP — это число e (неперово число или основание натурального логарифма).
Принципы использования объектов и свойств объекта Math очень просты. Обо всех объектах и методах этого объекта, предусмотренных в языке Javascript, можно узнать в справочниках, например в этом - http://javascript.ru/manual.
Чтобы убедиться в том, что вы владеете арифметическими операциями и умеете строить арифметические выражения, повторите следующий пример:
Листинг 3.5.1
<html><head>
<title>Пример 3.5.1.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h2>Пример 3.5.1. Арифметические операции и выражения</h2>
<h3>Вычисление значений синусоиды на интервале от 0 до 90 градусов с шагом 45 градусов)</h3>
<script type="text/javascript">
h_grad=45.0; // шаг в градусах
h_rad=h_grad*Math.PI/180.0; // шаг в радианах
//
//вычисляем первое значение аргумента и функции
//
i=0;
x_grad=0.0+i*h_grad;;
x_rad=x_grad*Math.PI/180.0;;
y=Math.sin(x_rad);
document.write("<p>угол в градусах = "+x_grad+"; угол в радианах = "+x_rad+"; sin("+x_grad+") = "+y+"</p>")
//
//вычисляем второе значение аргумента и функции
//
i=1;
x_grad=0.0+i*h_grad;;
x_rad=x_grad*Math.PI/180.0;;
y=Math.sin(x_rad);
document.write("<p>угол в градусах = "+x_grad+"; угол в радианах = "+x_rad+"; sin("+x_grad+") = "+y+"</p>")
//
//вычисляем третье значение аргумента и функции
//
i=2;
x_grad=0.0+i*h_grad;;
x_rad=x_grad*Math.PI/180.0;;
y=Math.sin(x_rad);
document.write("<p>угол в градусах = "+x_grad+"; угол в радианах = "+x_rad+"; sin("+x_grad+") = "+y+"</p>")
</script>
</body></html>
3.5.3. Операции сравнения
Операции сравнения используются для построения логических выражений. В Javascript предусмотрены следующие операции сравнения: меньше (<), меньше или равно (<=), больше (>), больше или равно (>=), равно (==), не равно (!=). Это – операции с двумя операндами.
Сравниваться могут как числовые данные, так и строки. Единственное условие состоит в том, что нужно сопоставлять значения, относящиеся к одному и тому же типу. В противном случае JavaScript попытается перевести данные из одного типа в другой, что не всегда удается. Чтобы избежать ошибок сравнивайте данные только одного типа.
Результатом выполнения выражения с использованием операции сравнения является данное логического типа. Например, после выполнения оператора а = 2<3 в переменную а будет занесено значение, равное true, а при выполнении оператора b = 2>3 в переменную b занесётся false.
3.5.4. Логические операции и выражения.
В Javascript предусмотрены три логические операции: логическое И (&&), логическое ИЛИ (||), логическое НЕ (!). Первые две - операции с двумя операндами, а логическое НЕ – операция с одним операндом.
Логическое И означает, что обе части выражения должны быть истинны.
Логическое ИЛИ означает, что, по крайней мере, одна часть выражения должна быть истинной.
Логическое НЕ изменяет значение истина/ложь на обратное.
Логические операции позволяют свести воедино результаты сравнений нескольких переменных. Например, после выполнения оператора a = (2<3)&&(3<5) в переменную а будет занесено true, а после выполнения a = (2<3)&&(3>5) — false.
Чтобы убедиться в том, что вы владеете построением логических выражений с помощью операций сравнения и логических операций, повторите следующий пример:
Листинг 3.5.2.
<html><head>
<title>Пример 3.5.2.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h2>Пример 3.5.2. Логические операции и выражения</h2>
<h3>Вычисление значений функции y=(x>=0)&&(x%2==0)<br>
для значений аргумента x на интервале от -2 до +2<br>
с шагом h = 1</h3>
<script type="text/javascript">
var x = new Array(); y = new Array()
x_0=-2;
h=1;
//
//вычисляем первое значение аргумента и функции
//
i=0;
x[i]=x_0+i*h;
y[i]=(x[i]>=0)&&(x[i]%2.0==0)
document.write("<p>x = "+x[i]+"; y = "+y[i]+"</p>")
//
//вычисляем второе значение аргумента и функции
//
i=1;
x[i]=x_0+i*h;
y[i]=(x[i]>=0)&&(x[i]%2.0==0)
document.write("<p>x = "+x[i]+"; y = "+y[i]+"</p>")
//
//вычисляем третье значение аргумента и функции
//
i=2;
x[i]=x_0+i*h;
y[i]=(x[i]>=0)&&(x[i]%2.0==0)
document.write("<p>x = "+x[i]+"; y = "+y[i]+"</p>")
//
//вычисляем четвёртое значение аргумента и функции
//
i=3;
x[i]=x_0+i*h;
y[i]=(x[i]>=0)&&(x[i]%2.0==0)
document.write("<p>x = "+x[i]+"; y = "+y[i]+"</p>")
//
//вычисляем пятое значение аргумента и функции
//
i=4;
x[i]=x_0+i*h;
y[i]=(x[i]>=0)&&(x[i]%2.0==0)
document.write("<p>x = "+x[i]+"; y = "+y[i]+"</p>")
</script>
</body></html>
3.5.5. Операции над строками
В приведённых выше примерах использовался метод write() объекта document для вывода на экран результатов, получаемых в программе. В качестве входных данных метода (в круглых скобках) формировались строки из переменных и строковых констант (то, что в кавычках). Для формирования нужного текста использовалась операция конкатенации, которая выглядит также, как и арифметическая операция суммирования - «+».
В Javascript предусмотрено много средств для работы со строками. Под строками понимаются строковые переменные и константы. Набор методов и свойств для работы со строками хранится в объекте String. Так, для определения длины строки (количества символов, составляющих строку) можно использовать свойство length. Например, в результате срабатывания операторов: str="АР Крым"; document.write(str.length) на экран будет выведено число 7 (учитывая, что пробел также является символом).
Описания и примеры использования всех методов объекта String вы можете взять в справочниках, например в этом - http://javascript.ru/manual.
Далее кратко опишем несложные правила применения и примеры использования операции конкатенации, которым вам обязательно необходимо уметь пользоваться. Рассмотрим следующий пример.
Листинг 3.5.3.
<html><head>
<title>Пример 3.5.3.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h2>Пример 3.5.3. Операции со строками: операция конкатенации</h2>
<script type="text/javascript">
stroka_1="студент";
stroka_2=prompt("Введите имя","Иван");
stroka_3=prompt("Введите фамилию","Петров");
stroka_1=stroka_1+" "+stroka_2+"_"+stroka_3;
document.write("<h2>"+stroka_1+"</h2>");
</script>
</body></html>
При запуске в браузере скрипт из листинга 3.5.3 сначала занесёт в переменную stroka_1 текст студент. Затем в переменную stroka_2 пользователю необходимо ввести имя, иначе будет введено имя по умолчанию (Иван). Тем же способом вводится фамилия. С помощью оператора конкатенации формируется строка и присваивается переменной stroka_1. Для того, чтобы слова не сливались, при формировании строки в качестве разделителей вставлены пробелы. Далее сформированная строка выводится на экран с помощью метода write(). Входной параметр метода сформирован также с помощью оператора конкатенации — слева и справа от переменной, содержащей сформированную строку, добавлены html-тэги заголовка.
Необходимо учесть, что при использовании операции конкатенации происходит автоматическое изменение типа переменной. Например, оператор x=2+"3" приведёт к тому, что переменной x будет присвоено строковое значение «23», так как если один из операндов является строкой, даже если эта строка содержит цифры, то второй операнд автоматически преобразуется в строку и выполняется конкатенация строк. Все остальные арифметические операции (-, *, /, %), наоборот: пытаются преобразовать строку в число.
Для закрепления материала настоящего подраздела вам необходимо перейти к пункту 3.5.6 и выполнить два упражнения (упражнение 3.5.1 и 3.5.2).
3.5.6. Упражнения
Упражнение 3.5.1. Повторите пример из листинга 3.5.1, изменив его таким образом, чтобы рассчитывались значения тангенса для значений угла от 0 до 90 градусов с шагом 30 градусов.
В этом же html-документе поместите ответы на первые пять контрольных вопроса (с 1-го по 5-й).
Упражнение необходимо сохранить в файле exercise_3_5_1.html и оформить его отображение на своём сайте так, как это вы делали с предыдущими упражнениями.
Упражнение 3.5.2. Повторите пример из листинга 3.5.2, изменив его таким образом, чтобы рассчитывались значения функции для аргумента на интервале от -3 до +3, причём значения функции были бы истинными лишь для положительных и нечётных значений аргумента.
В этом же html-документе поместите ответы на последние пять контрольных вопроса (с 6-го по 10-й).
Упражнение необходимо сохранить в файле exercise_3_5_2.html и оформить его отображение на своём сайте так, как это вы делали с предыдущими упражнениями.
3.5.7. Контрольные вопросы
1.Оператор для вычисления котангенса?
2.Значение последнего тангенса в упражнении 3.5.1?
3.Значение тангенса для угла 45 градусов в упражнении 3.5.1?
4.Значение котангенса для угла 90 градусов?
5.Значение тангенса для угла в 135 градусов?
6.Число истинных значений, полученных при выполнении упражнения 3.5.2?
7.Число ложных значений, полученных при выполнении упражнения 3.5.2?
8.Число истинных значений, которое могло бы быть получено при замене логического И на логическое ИЛИ в упражнении 3.5.2?
9.Число ложных значений, которое могло бы быть получено при замене логического ИЛИ на логическое И в упражнении 3.5.2?
10.Число истинных значений, которое могло бы получиться при выполнении упражнения 3.5.2, в котором для получения значения функции использовался бы оператор
y[i]=!((x[i]>=0)||(x[i]%2.0==0))?
3.5.8. Источники
•.Справочник по языку Javascript - http://javascript.ru/manual