
- •Федеральное государственное учреждение
- •©Российская таможенная академия, 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]
- •Основы программирования
Массивы и их организация в памяти. Многомерные массивы, матрицы
Массив является объектом специального типа Array (т.е. массив). Он состоит из элементов, проиндексированных, начиная с 0 (т.е., первый элемент массива имеет индекс 0, второй – индекс 1 и т.д.).
Элементом массива является некоторое значение произвольного типа (в частности, может быть другим массивом). Организация массива обеспечивает одинаково быстрый доступ к любому элементу массива по его индексу (на аппаратном уровне).
Литерал массива содержит в квадратных скобках перечень его элементов (в порядке индексации). Элементы задаются выражениями (см. п.11) и отделяются друг от друга запятой. Запятые определяют количество элементов массива, а выражения – значения элементов. Допускается отсутствие любого количества выражений («пустые места»). Тогда значения соответствующих элементов считаются неопределёнными (значение undefined).
Например, следующий литерал
[1+2,"Чепуха!",,["1+2",],5]
изображает массив, элементы которого перечислены в таблице:
Индекс элемента |
Значение элемента |
0 |
Число 3 (значение выражения 1+2) |
1 |
Строка Чепуха! |
2 |
Значение undefined |
3 |
Массив из двух элементов, заданный литералом ["1+2",]. Его первый элемент – строка1+2(а не число), значение второго элемента не определено (undefined). |
4 |
Число 5 |
Впамяти массив изn
элементов представляется, как показано
на рис. 2.
Рис. 2. Представление массива в памяти
Для обеспечения быстрого доступа к элементам массива по индексу его представление включает массив из n последовательных ячеек одинаковой длины, каждая из которых содержит либо значение соответствующего элемента, либо ссылку на него. Дескриптор массива содержит длину этого массива и ссылку на него. Эта ссылка позволяет динамически добавлять к массиву новые элементы (см. п. 10), создавая новый массив ссылок.
Для каждого литерала массива в памяти создаётся отдельное представление. Поэтому два одинаковых литерала определяют два массива с одинаковыми элементами, но занимающих разные места в памяти. Поэтому они считаются разными массивами. Так, в результате выполнения операторов
x=[1,2]; y=[1,2]
создаётся два разных массива с одинаковыми элементами. Так что значения переменных (ссылки на дескрипторы массивов) будут различны.
В результате же выполнения операторов
x=[1,2]; y=x
создаётся только один массив и ссылка на его дескриптор присваивается обеим переменным, так что обе они имеют одно и то же значение.
На
рис. 3 изображено представление
рассмотренного выше массива[1+2,"Чепуха!",,["1+2",],5].
Рис. 3. Представление в памяти массива [1+2,"Чепуха!",,["1+2",],5]
Многомерный массив – это массив, элементами которого являются массивы. Массив, элементы которого не являются массивами (обычный массив), называется одномерным массивом. Массив, элементы которого – одномерные массивы, называется двумерным массивом. Вообще, массив, элементы которого являются n-мерными массивами, называется (n+1)-мерным массивом.
Элементы двумерного массива называются строками. Если все строки имеют одинаковую длину, массив называется матрицей (вообще говоря, прямоугольной). Если количество строк матрицы совпадает с их длиной, матрица называется квадратной. Двумерный массив, у которого длины строк не одинаковы, называется ступенчатым. Ниже приведены примеры таких массивов (первая цифра элемента массива – номер строки, вторая – номер строки):
Прямоугольная матрица |
Квадратная матрица |
Ступенчатый массив |
[[00, 01, 02, 03], [10, 11, 12, 13], [20, 21, 22, 23]] |
[[00, 01, 02], [10, 11, 12], [20, 21, 22]] |
[[00, 01, 02], [10, 11, 12, 13], [20, 21]] |