
- •Федеральное государственное учреждение
- •©Российская таможенная академия, 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]
- •Основы программирования
Таймеры, примеры использования
Объект window предоставляет методы для запуска некоторых фрагментов сценария по таймеру. В остальное время другие части сценария работают в обычном режиме (на самом деле в многопроцессной системе, какой является Windows, все процессы, запускаемые по событиям и таймерам, могут работать одновременно – параллельно). Имеется два типа таймеров – таймеры однократного и периодического срабатывания.
Однократный таймер создаётся и запускается методом
setTimeout("операторы_сценария",время_задержки)
Указанные операторы_сценария будут запущены один раз по прошествии времени_задержки, заданного в миллисекундах (1 сек = 1000 миллисек).
Метод выдаёт числовой идентификатор таймера. Его можно присвоить переменной, чтобы иметь возможность досрочно прекратить работу таймера методом
clearTimeout(идентификатор_таймера)
Пример. Нужно успеть за одну секунду щёлкнуть текст мышью. Для повторения нужно перезагрузить страницу.
<html>
<head><title>Таймер</title></head>
<body>
<h1 onclick="clearTimeout(t);
if(t!='a') alert('Молодец!'); t='a'">
Щёлкни меня за 1 секунду</h1>
<script>
t=setTimeout("alert('Опоздал!');t='a'",1000)
</script></body></html>
Периодический таймер создаётся и запускается методом
setIterval("операторы_сценария",время_задержки)
Указанные операторы_сценария будут запускаться каждый раз по прошествии времени_задержки, заданного в миллисекундах. Метод выдаёт числовой идентификатор таймера. Его нужно присвоить переменной, чтобы иметь возможность прекратить работу таймера методом
clearIterval(идентификатор_таймера)
Пример. Происходит троекратное увеличение/уменьшение текста Для простоты программы значения размера берутся из массива.
<html>
<head><title>Таймер</title></head>
<body>
<p align="center"><b>
<font size="5" id=txt>Внимание!</font></b></p>
<script>
i=0; a=[7,3,7,3,7,5];
t=setInterval('fn()',200);
function fn()
{txt.size=a[i]; i+=1;
if (i==6) clearInterval(t)
}</script>/body></html>
Понятие ссылочной структуры данных. Односвязный список. Запись списков с помощью литералов.
Ссылочной структурой называется любая совокупность объектов, содержащих ссылки друг на друга. Ссылки могут быть значениями свойств этих объектов или значениями элементов массивов. Простой пример ссылочной структуры приведен на рис. 5. Объектная модель HTML-документа (DOM) также является примером более сложной ссылочной структуры, которая строится автоматически. Программисту на языке JavaScript для создания своих ссылочных структур удобно использовать массивы и записи, а в случае разработки интерфейса ещё и узлы DOM.
Ссылочные структуры удобно использовать для создания динамических структур данных, состав, содержание и взаимосвязи которых меняются с течением времени. Примером такой динамической структуры является DOM. Примером простых динамических структур, часто используемых в программировании, являются списки (и их разновидности – стеки, очереди, деки), а также деревья (в основе DOM лежит дерево).
Списком называется последовательность элементов. Для разных целей списки могут иметь разное представление, хоть просто массивом. Но ссылочное представление списка даёт больше возможностей, чем массив. Например, позволяет удалить любой элемент или вставить новый в середину. Сначала рассмотрим так называемое односвязное представление списка – односвязный список.
В односвязном списке каждый элемент имеет свойство next, содержащее ссылку на следующий элемент. Только последний элемент содержит «пустую» ссылку null. Первый элемент списка называется его головой, а остальные элементы образуют его хвост. Кроме самих элементов списка, односвязный список содержит запись с полем next, содержащим ссылку на первый элемент или null, если список пуст. Эта запись называется дескриптором списка. Структура односвязного списка представлена на рис. 8 (серым цветом выделен дескриптор списка).
Рис.8. Представление списка (е1, е2, … еn) и пустого списка ( ).
Если элементы списка представлены записями, то изображённые на рис. 8 списки легко записать литералами записей:
{next: {info: E1, next:
{info: E2, next:
…
{info: En, next: null}…}}}
и {next: null}, соответственно. Значением этих литералов является ссылка на дескриптор списка.
Рассмотрим некоторые операции над односвязными списками.
Поиск элемента Е в списке L:
Функция выдаёт ссылку на найденный элемент или null, если его нет в списке. E – это значение свойства info. L – дескриптор списка.
function find(E, L)
{var p = L.next;
while (p != null)
if (p.info == E) return p
else p = p.next;
return null
}
Вставка нового элемента Е за Р:
Функция ничего не выдаёт. E – это вставляемый элемент, значение свойства info. Р – это ссылка на элемент списка, за которым надо вставить E, или на дескриптор списка, если вставка перед первым элементом списка.
function insAfter(E, P)
{P.next = {info:E, next:P.next}
}
Удаление следующего за Р элемента:
Функция выдаёт ссылку на удалённый элемент или null, если такого элемента нет. Р – это объект, содержащий ссылку на удаляемый элемент в поле next.
function delNext(P)
{var r = P.next;
if (P.next != null) P.next = P.next.next;
return r
}
Печать списка:
Функция выдаёт строку, состоящую из элементов списка с заданным разделителем. Р – дескриптор списка, S – строка- разделитель элементов.
function writeList(P, S)
{var r = "";
if (P.next == null) return r;
P = P.next; r += P.info;
while (P.next != null)
{P = P.next; r += S+P.info};
return r
}
Преобразование массива в список:
Функция выдает дескриптор построенного списка. А – исходный массив , элементы которого становятся элементами списка (значениями поля info).
function toList(A)
{var r={next: null}, P=r; //дескриптор пустого списка
for (var i=0; i<A.length; i++)
{insAfter({info:A[i], next: null},P); P = P.next};
return r
}