Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЯП-Лекция 02.docx
Скачиваний:
41
Добавлен:
11.06.2015
Размер:
349 Кб
Скачать
☆

Введение

В этой лекции мы рассмотрим основные понятия языка JavaScript. Наша цель – разобраться, как устроена программа на этом языке, как и какие данные она обрабатывает, то есть понять и усвоить синтаксис и семантику языка. Синтаксические и семантические правила могут формулироваться на естественном (неформальном) языке, на формальном (искусственном) языке, с помощью графических представлений, но в любом случае они должны даватьточноеопределение языка. При этом обычно исходят из принципа «Запрещено всё, что не разрешено», то есть, правила описываютвседопустимые и обязательные варианты.

Поскольку JavaScript– объектно-ориентированный язык высокого уровня, структура программ и данных радикально отличается от архитектуры практически всех ЭВМ, и от принципов фон Неймана – тоже. В частности, не используются принципы хранимой (в памяти) программы и возможности её изменения в процессе исполнения, а также двоичности информации (правда, в языках, использующих операции над битами данных, двоичность подразумевается). Да и понятие памяти значительно более абстрактное ­ это просто хранилище данных, где вместо адресов используются абстрактные ссылки. Более абстрактны и структуры данных – это произвольные структуры, образованные абстрактными объектами с помощью ссылок.

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

1. Основные синтаксические и семантические правила

Как уже говорилось, синтаксис– этоправила записи текстапрограммы и её элементов, асемантика–правила выполненияпрограммы и её элементов. Некоторые понятия имеют и синтаксический, и семантический смысл (например, программа, оператор), а некоторые – только синтаксический (например, идентификатор, имя) или только семантический (например, ссылка, структура данных) смысл.

Синтаксис конструкций языка будем описывать как неформально, так и с помощью формальных синтаксических правил – синтаксических формул, которые имеют следующий вид:

Конструкция→ вариант_1 │ вариант_2 │ … │ вариант_n

Здесь Конструкция– это название определяемой конструкции,вариант– вариант вида конструкции, он представляет собой последовательность названий конструкций и символов языка. Символы языка печатаются шрифтомCourier New. Знак → читается, как «– это», а знак │ – как «или». Эти знаки называютсяметасимволами, т.е. символамиметаязыка(языка, используемого для описания языков). В качестве метасимволов используются также «скобки»и. Они выделяютнеобязательную частьварианта. Все метасимволы заметно отличаются от символов языка.

Семантику конструкций языка будем описывать неформально как словесно, так и с помощью диаграмм.

1.1. Общая структура программы и данных

С семантической точки зрения программа– это заданнаяпоследовательность операторов.Выполнениепрограммы начинается с выполнения первого оператора последовательности и заканчивается выполнением её последнего оператора. После завершения выполнение каждого оператора начинается выполнение следующего за ним оператора. Сказанное выражается блок-схемой, представленной на рисунке 1.1. На ней блоки (овалы и прямоугольники) обозначают то, что на них написано, а стрелками указан порядок выполнения операторов –поток управления. Операторы, в свою очередь, могут состоять из других операторов, их блок-схемы могут уже не иметь такой простой линейный вид (они будут рассмотрены дальше).

Рисунок 2.1. Блок-схема программы.

С точки зрениясинтаксиса,программа(записанная между тегами <SCRIPT> и </SCRIPT>) – это текст, представляющий собой последовательность текстов её операторов, разделённых символами «точка с запятой» (;) или «новая строка» (вводится при нажатии клавишиEnter)1. Так что текст программы, соответствующий рисунку 1.1, может иметь вид

оператор1;оператор2;…;операторn

или

оператор1

оператор2;

…

операторn

Формальный синтаксис:

Программа→ ПоследовательностьОператоров

ПоследовательностьОператоров→ ОператорРазделительОператоров ПоследовательностьОператоров

РазделительОператоров→; │ НоваяСтрока

Отметим важную особенность формальных синтаксических определений – их рекурсивность.Рекурсивное определение(от лат.recursio– возвращение) – это частичное определение объектачерез самого себяи набор частных случаев, которые не определяются через этот объект и тем самым обеспечивают завершение рекурсии2. В данном случае рекурсивным является определение конструкцииПоследовательностьОператоров. Раскручивая эту рекурсию, мы можем её заверить, воспользовавшись необязательностью той последовательности конструкций, которая взята в скобкии.

Некоторые детали синтаксиса не могут быть определены подобными формальными правилами (или их определение слишком сложно) и должны оговариваться неформально. В данном случае нужно добавить следующее:

Слева и справа от разделителя операторов можно вставлять любое количество пробельных символов: «пробел» (клавиша ПРОБЕЛ), «табуляция» (клавишаTab), «новая строка» (клавишаEnter). Тогда можно представить текст программы, состоящей из трёх операторов, в таком виде:

оператор1 ; оператор2;

оператор3

Более подробно эти и другие несущественные вставки будут рассмотрены позже.

Текст программы набирается на клавиатуре с использованием всех символьных и цифровых клавиш (в верхнем и нижнем регистрах3) и клавиш ПРОБЕЛ,TabиEnter. Никакие другие приёмы форматирования текста программы не допускаются. Набирая программу, следует иметь в виду, чтоJavaScript–регистрозависимыйязык. Это означает, что буква в нижнем регистре (строчная) и та же буква в верхнем регистре (прописная) считаются разными буквами.

Рассмотрим теперь семантические понятия, связанные с обработкой данных.

Программы обрабатывают данные, поступающие впамять программынепосредственно из текста самой программы, или в процессе выполнения программойвычислений(промежуточные и окончательные результаты), или с внешних устройств (клавиатура, мышь, диски, сеть). Кроме того, программе доступны данные, находящиеся впамяти системы, исполняющей программу. В нашем случае этоWeb-браузер. Результаты программа может выводить на внешние устройства или возвращать системе.