- •Федеральное государственное учреждение
- •©Российская таможенная академия, 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]
- •Основы программирования
Типы значений в языкеJavaScript
Программы процедурных языков описывают действия над ячейками памяти машины. Ячейки хранят значения, представленные в двоичной форме, т.е. последовательностью битов (0 и 1). Номер ячейки называется её адресом. Машинная команда может рассматривать содержимое ячейки как число (целое или вещественное), текстовые символы, адрес другой ячейки, пиксел изображения, звуковую выборку и т.д., в зависимости от типа команды. Если требуется в машинной программе указать некоторое значение, нужно знать его двоичное представление.
В языках программирования высокого уровня можно оперировать с более сложными видами значений, занимающих в памяти машины не одну ячейку, а сложно организованные структуры ячеек. При этом в программе значения описываются не в двоичной, а в более привычной для людей символьной, литеральной форме. Типы значений и их литеральное представление в разных языках программирования могут различаться. Пользуясь каким-то языком, нужно строго следовать его правилам.
В языке JavaScript используются следующие типы значений:
Простые значения
целые числа,
вещественные числа,
логические значения,
строки,
специальные значения null, undefined, Infinity и NaN (так записываются их литералы, их же двоичное представление скрыто от пользователя-программиста).
Сложные объекты
массивы,
записи,
другие объекты.
В языке JavaScript простые значения и объекты имеют разное представление в памяти. Простые значения хранятся непосредственно в ячейке, указанной в программе. Для объектов в памяти автоматически создаётся дескриптор, хранящий некоторые характеристики объекта и само значение или адреса ячеек, хранящих его составных части. Адрес дескриптора называется ссылкой на объект. Если в программе указано, что значением ячейки является объект, это означает, что эта ячейка хранит ссылку на дескриптор объекта. Важно, что дескриптор после создания всегда имеет постоянный адрес в памяти.
Графически это представляется следующим образом (рис. 1). Ссылки изображаются стрелками с точкой.

Рис. 1. Способы представления значения в памяти: а) простого значения; б) объекта
Числовые литералы и значения и их организация в памяти Литералы целых чисел
Целые числа в языке JavaScript могут быть записаны в десятичной (10-й), восьмеричной (8-й) и шестнадцатеричной (16-й) системе. Литерал числа указывает и систему, и само число.
Во всех системах литерал числа может начинаться знаком + или – (т.е. знаком числа). Знак числа может и отсутствовать.
В 10-й системе после возможного знака идут десятичные цифры (0 – 9) этого числа, но если среди цифр нет 8 или 9, то 0 не может быть первой цифрой, т.е. первые нули в этом случае обязательно опускаются, чтобы не спутать его с восьмеричным числом.
В 8-й системе после возможного знака первой цифрой обязательно записывается 0, а потом идут восьмеричные цифры (0 – 7) числа.
В 16-й системе после возможного знака обязательно стоит цифра 0, а за ней латинская буква x или Х, а следом – любые шестнадцатеричные цифры числа (0 – 9, и A, B, C, D, E, F или a, b, c, d, e, f).
Например, десятичное число –16 в виде литерала может быть записано так:
-16 (10-й литерал), или
-020 (8-й литерал), или
-0x10 (16-й литерал).
Если же мы напишем -016, то это будет восьмеричное число, равное десятичному числу -14.
Все эти литералы внутри компьютера переводятся в двоичную форму числа, а на экран при печати выдаются в десятичной форме.
