- •Федеральное государственное учреждение
- •©Российская таможенная академия, 2008
- •Ростовский филиал
- •© Крицкий с.П.
- •Содержание
- •Введение
- •Основные понятия программирования
- •Классификация языков программирования
- •Характеристика систем программирования на языкахJavaScript/Jscript
- •Типы значений в языкеJavaScript
- •Числовые литералы и значения и их организация в памяти Литералы целых чисел
- •Литералы вещественных чисел (чисел с плавающей точкой)
- •Логические литералы и значения и их организация в памяти
- •Строковые литералы, значения и их организация в памяти
- •Массивы и их организация в памяти. Многомерные массивы, матрицы
- •Записи и их организация в памяти
- •Операции над различными типами данных
- •Арифметические операции
- •Строковые операции
- •Логические операции
- •Операции сравнения
- •Операции выборки
- •Переменные, выражения, условия Переменные
- •Выражения
- •Вызовы функций и методов
- •Порядок вычисления выражения
- •Операции присваивания
- •Автоматическое преобразование типов значений. Функции преобразования и проверки типов
- •Ввод и вывод значений
- •Понятие оператора. Простые и составные операторы. Блок-схемы программ и модулей Операторы и модули
- •Блок-схемы
- •Составные операторы (последовательность, условные). Их синтаксис, блок-схемы и правила выполнения Последовательность операторов
- •Условный операторif … else
- •Операторы цикла (while, do-while и for). Их синтаксис, блок-схемы и правила выполнения. Операторыbreakиcontinue Оператор циклаwhile
- •Операторbreak
- •Операторcontinue
- •Оператор циклаdo…while
- •Оператор циклаfor
- •Функции. Определение и вызов. Выход из функцииreturn. Массив аргументовarguments Определение функции – операторfunction
- •Выход из функции – операторreturn
- •Определение переменной – операторvar
- •Отладка программ. Трассировка, отладочная печать. Тестирование программы
- •Основные понятия объектного подхода
- •ОбъектMath, назначение, свойства, методы. Значения NaN, Infinity, null, undefined.
- •Свойства объектаMath– константы:
- •Методы объекта Math
- •Специальные константы
- •Массивы как объекты в языкеJavaScript. Конструкторы, свойства и методы массивов. Задача копирования массива вJavaScript
- •Конструктор объектов типаArray
- •Свойство объектов типаArray
- •Методы объектов типаArray
- •Типичные задачи с массивами: линейная алгебра
- •Скалярное произведение векторов
- •Произведение матриц
- •Транспонирование квадратной матрицы
- •Типичные задачи с массивами: сортировка. Сортировка вставками. Методsort
- •Сортировка вставками
- •Методsort
- •Типичные задачи с массивами: поиск. Двоичный поиск в упорядоченном массиве
- •Обработка строк. Конструкторы, свойства, методы строк
- •Конструктор объектов типаString
- •Свойство объектов типаString
- •Методы объектов типаString
- •Шаблоны и регулярные выражения. Их использование методами строк.
- •Простые шаблоны
- •Составные шаблоны
- •Пользовательский интерфейс программ. Общее понятие
- •Html-страница как средство интерфейса для программ на языкеJavaScript. Тэги и атрибутыHtml
- •ОбъектыHtml-страниц иWeb-браузера, их свойства и методы. События и их обработка Объектные модели
- •Объекты страницы
- •Объекты браузера
- •СтилиHtml-объектов. Свойства позиционирования объектов страницы
- •Таймеры, примеры использования
- •Понятие ссылочной структуры данных. Односвязный список. Запись списков с помощью литералов.
- •Понятие стека. Функции для стека
- •Двухсвязный список, его структура
- •Понятие очереди и дека, их организация
- •Понятие дерева как ссылочной структуры. Бинарные деревья. Представление дерева литералом
- •Обработка деревьев. Рекурсия
- •Обход дерева «в глубину»
- •Обход дерева «в ширину»
- •Файлы и файловая система
- •Работа с текстовыми файлами
- •Объекты типа TextStream
- •Управление файлами и папками
- •Коллекции дисков, папок и файлов
- •Технология и методология создания программ
- •Жизненный цикл программы
- •Организация процесса разработки
- •Методологии проектирования программ
- •Заключение
- •Приложение 1. Теги, атрибуты и соответствующие свойства Общая структура html-документа
- •Форматирование текста
- •Вставка графики
- •Гиперссылки и карты
- •Приложение 2. События вHtmLи их источники
- •Приложение 3. Атрибуты и свойства стилейCss
- •Приложение 4. Работа с файловой системой вJScript
- •Свойства, методы и коллекции объектов файловой системы
- •Список литературы
- •Словарь терминов
- •If (условие) оператор1 [else оператор2]
- •Основы программирования
Записи и их организация в памяти
Запись предназначена для фиксации информации о каком-то объекте путём перечисления набора его свойств. Чтобы не путаться с термином «объект», будем называть запись программным объектом, а объект, свойства которого в ней перечислены, – информационным объектом.
Литерал записи – это заключённый в фигурные скобки список пар свойство: выражение, разделённых запятыми Свойство указывается своим именем, а его значением в литерале становится значение указанного после двоеточия выражения. Вообще, значением свойства может быть любое значение (в том числе и undefined). Порядок свойств в литерале не существенен.
Пример: литерал
{num: "F12C75",
person: {family:"Иванов", name:"Иван"},
age: Age,
cats: ["Рыжик", "Толстый", "Жу-Жу"]}
изображает информационный объект «Член общества любителей кошек», значения и смысл свойств которого перечислены в таблице.
Свойство |
Значение |
Смысл |
num |
Строка F12C75 |
Регистрационный номер |
person |
Ссылка на запись, изображённую литералом {family:"Иванов",name:"Иван"} |
Фамилия и имя (удобно объединить их в одну запись) |
age |
Значение переменной Age. Если переменная не была определена ранее, то литерал неправильно написан. |
Возраст лица |
cats |
Массив из трёх строк. |
Список его котов |
Как и у массивов, два одинаковых литерала описанного выше типа создают два разных программных объекта с одинаковыми свойствами и их значениями, но с разными адресами в памяти. Поэтому для каждого информационного объекта следует использовать только один литерал записи. На рис. 4 изображено представление записи в памяти.
Рис. 4. Представление записи в памяти.
Здесь, как и в массиве, дескриптор записи ссылается на массив свойств, содержащий имена свойств и ссылки на их значения (или сами значения). Это позволяет динамически добавлять новые свойства.
На рис. 5 изображено представление записи из приведённого выше примера.
Рис 5. Представление в памяти сложной записи.
Операции над различными типами данных
Как и в математике, в языках программирования используются операции, которые, будучи применены к значениям своих операндов, выдают определённое значение – результат. В программировании очень важно знать, для каких типов операндов применима данная операция и каков будет тип её результата. В JavaScript, если операция неприменима к данным значениям, она выдаёт undefined, или Infinity или NaN.
Рассмотрим следующие группы операций языка JavaScript:
арифметические,
строковые,
логические,
сравнения,
операции выборки.
В п. 11 будут рассмотрены операции присваивания.
Арифметические операции
Операция |
Результат |
Примеры |
число1+число2 |
Суммачисел |
|
число1–число2 |
Разностьчисел |
|
число1 *число2 |
Произведениечисел |
|
число1/число2 |
Точное частноеот деления |
5/3даст1.66…67 |
число1%число2 |
Остатокот деления целых чисел |
5%3даст2 |
+число |
То же число |
|
-число |
То же число, но с противоположным знаком |
|
Операция сложения вычисляет сумму только тогда, когда значения операндов являются числами, или логическими значениями, или null (которые преобразуются в числа 1 или 0). В противном случае она исполняется, как конкатенация строк (если это возможно, см. ниже). Остальные арифметические операции значения операндов, не являющиеся числами, пытаются привести к числам по определённым правилам. Например, строка "123" и массивы [123] и ["123"] приводится к числу 123. Правила приведения очень сложны, поэтому лучше, по возможности, избегать подобных ситуаций.
При получении в результате слишком большого числа или при делении на 0 операции выдают значение Infinity (бесконечность). При делении 0 на 0 или при невозможности привести операнды к числам выдаётся значение NaN («не число»).