- •Лекция № 2
 - •Введение
 - •1. Основные синтаксические и семантические правила
 - •1.1. Общая структура программы и данных
 - •1.2. Типы данных, их организация в памяти и литералы
 - •1.3. Ввод и вывод значений
 - •1.4. Литералы значений
 - •Литералы целых чисел
 - •Литералы вещественных чисел
 - •Перевод чисел в системы с другим основанием
 - •Строковые литералы
 - •Литералы массивов
 - •Литералы объектов
 - •1.5. Операции и выражения
 - •Арифметические операции
 - •Строковые операции
 - •Операции сравнения
 - •Компонентные операции
 - •Операции присваивания
 - •Другие операции
 - •Синтаксис и семантика выражений
 - •1.6. Дополнительные понятия и правила синтаксиса Ограничения на идентификаторы
 - •Комментарии
 - •Лексемы, пробельные символы и комментарии
 - •2. Регулярные структуры данных
 - •2.1. Многомерные массивы
 - •2.2. Рекурсивные структуры объектов
 - •Деревья
 
Строковые операции
| 
				 Операция  | 
				 Результат  | 
				 Примеры  | 
| 
				 строка + строка  | 
				 Конкатенация – соединение двух строк в одну  | 
				 "лист" + "5" даёт строку лист5 "лист " + "5" даёт строку лист 5  | 
Эта операция применяется, когда значение хотя бы одного её операнда не является числом, или логическим значением, или null. При этом делается попыткапривестизначения операндов к строкам. Так, выражение"лист" + 5 даёт строкулист5, т.е. число 5 приводится к строке"5". Более сложных случаев лучше избегать.
Операции сравнения
Операции сравнения всегда в качестве результата выдают логическое значение trueилиfalse.
Сравнение чиселпроисходит так же, как в математике. При сравнениистроксравниваются числовые коды символов по порядку слева направо (равными могут быть только одинаковые строки). Порядок (перед,после) строк определяется, как в словаре (он называетсясловарнымилилексикографическим). Коды символов (на самом деле важен лишь порядок символов в алфавите) можно посмотреть в менюВставка/Символлюбой программы изMSOffice. При сравненииобъектов(в том числе и массивов) сравниваются их ссылки, т.е. имеет смысл только сравнениеравно–не равно.
При сравнении значений разных типовнекоторые операции сравнения пытаютсяпривестиоперанды к сравнимым значениям, например, к числу или строке. Так, массив[1]приводится к числу 1 или строке "1". Во избежание лишних проблем не следует слишком надеяться на автоматическое приведение.
| 
			 Операция  | 
			 Результат  | 
			 Примеры, когда выдаётся true  | 
| 
			 знач1 == знач2 (равно)  | 
			 Результат равен true, если операнды равны друг другу. Если значения имеют разные типы, выполняется приведение.  | 
			 3==1+2 3=="3" 3==['3'] 3==[1+2]  | 
| 
			 знач1 === знач2 (тождественно)  | 
			 Результат равен true, если операнды одного типа и равны друг другу. Приведение не выполняется.  | 
			 3===1+2 "31"==="3"+"1" x=[1]; y=x; x===y  | 
| 
			 знач1 != знач2 (не равно)  | 
			 Результат равен true, если операнды не равны друг другу. Если значения имеют разные типы, выполняется приведение.  | 
			 3!=2+2 3 != '1'+2 (правый операнд равен 12) [3] != [3] (у этих массивов разные ссылки)  | 
| 
			 знач1 !== знач2 (не тождественно)  | 
			 Результат равен true, если операнды одного типа и не равны друг другу. Приведение не выполняется.  | 
			 3 !== "3" "3" !== "3"+"1" x=[1]; y=[1]; x!==y  | 
| 
			 знач1 < знач2 (меньше, перед)  | 
			 Результат может быть true только при сравнении чисел и строк. При сравнении строки и числа строка приводится к числу. Для остальных типов делается попытка преобразования к числам.  | 
			 2<3 'ab'<'ba' 'a'<'aa' 'abc'<'ac' 2<"3" "2"<3  | 
| 
			 знач1 > знач2 (больше, после)  | 
			 Результат такой же, как для выражения знач2 < знач1  | 
			 
  | 
| 
			 знач1 <= знач2 (меньше или равно)  | 
			 Результат такой же, как для выражения !(знач1 > знач2)  | 
			 
  | 
| 
			 знач1 >= знач2 (больше или равно)  | 
			 Результат такой же, как для выражения !(знач2 < знач1)  | 
			 
  | 
Логические операции, в основном, используются для задания сложных условий. Если они выполняются над логическими значениями(trueиfalse), то дают в результате логическое значение. Операнды этих операций, не являющиеся логическими значениями,приводятсяк таковым по правилу:
К false приводятся значения 0, "", null, NaN и undefined.
Остальные значения приводятся к true.
Но иногда они выдают значение операнда, даже если он не является логическим значением (см. таблицу).
| 
			 Операция  | 
			 Название  | 
			 Результат  | 
| 
			 ! значение  | 
			 НЕ, NOT (отрицание)  | 
			 Выдаёт значение true, если значение операнда может быть приведено к false. В противном случае выдаётся значение false.  | 
| 
			 знач && знач  | 
			 И, AND (логическое произведение)  | 
			 Выдаёт значение первого операнда, если оно может быть приведено к false. В противном случае выдаётся значение второго операнда.  | 
| 
			 знач || знач  | 
			 ИЛИ, OR (логическая сумма)  | 
			 Выдаёт значение первого операнда, если оно может быть приведено к true. В противном случае выдаётся значение второго операнда.  | 
