Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП Технология программирования.doc
Скачиваний:
20
Добавлен:
11.06.2015
Размер:
1.69 Mб
Скачать

Список литературы

  1. Гудман Д. JavaScript и DHTML. Сборник рецептов для профессионалов. – СПб.: Питер, 2004.

  2. Информатика: Учебник / Соболь Б.В., Галин А.Б., Панов Ю.В. и др. – 2‑е изд., доп. и перераб . – Ростов н/Д : Феникс, 2006.

  3. Кингсли-Хью Э., Кингсли-Хью К. JavaScript 1.5: Учебный курс. – СПб.: Питер, 2002.

  4. Матросов А., Сергеев А., Чаунин М. HTML 4.0. – СПб.: «БХВ-Петер­бург», 2007.

  5. Молчанов А.Ю. Системное программное обеспечение: Учебник. – СПб.: Питер, 2003.

  6. Орлов С.А. Технология разработки программного обеспечения. Учебное пособие. – СПб.: Питер, 2003.

  7. Пауэл Т.А., Уитворт Д. – HTML: Справочник программиста. – М.: АСТ, Мн.: Харвест, 2001.

  8. Пышкин Е.В. Основные концепции и механизмы объектно-ориентиро­ван­ного программирования: Учеб. пособие. – СПб.: БХВ-Петербург, 2005.

  9. Робертсон Л.А. Программирование – это просто. Пошаговый подход. – М.: БИНОМ. Лаборатория знаний, 2008.

  10. Хоумер А., Улмен К. Dynamic HTML: справочник. – СПб.: Питер, 2000.

  11. DHTML, HTML & CSS / Электронное справочное пособие (англ.). – Microsoft Corp., 1999.

  12. JScript / Электронное справочное пособие (англ.). – Microsoft Corp., 2000.

Словарь терминов

Адрес ячейки – номер первого байта ячейки в памяти компьютера.

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

Алгоритми­­ческий язык – язык, специально созданный для описания алгоритмов, полностью или почти полностью формализованный.

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

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

Байт – наименьшая группа битов, имеющая собственный адрес. В памяти компьютера состоит из восьми битов. Байтом называют также последовательность из 8 (или 7 – при передаче данных по сети Интернет) двоичных цифр.

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

Бит – минимальная единица памяти компьютера, хранящая одну двоичную цифру 0 или 1. Не имеет собственного адреса. Битом называют также саму двоичную цифру (bitbinary digit, двоичная цифра).

Блок-схема – описание алгоритма, использующее графическую форму для представления действий и последовательности их выполнения.

Булевское значение – см. логическое значение.

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

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

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

Вызов методавыражение вида

выражение_объекта.имя_метода([аргументы])

Здесь выражение_объекта – выражение, вычисляющее объект (точнее, адрес его дескриптора), имя – имя некоторого метода этого объекта. Вычисленное методом значение и является результатом вызова, Аргументы могут все или частично отсутствовать, но скобки должны всегда присутствовать.

Вызов функциивыражение вида имя_функции([аргументы]). Вычисленное функцией значение и является результатом вызова. Аргументы могут все или частично отсутствовать, но скобки должны всегда присутствовать.

Выражение – позволяет по одним значениям вычислять другие с помощью операций, функций и методов. Выражение в языке JavaScript состоит из переменных, литералов, операций, вызовов функций и методов, а так же круглых скобок ( ), определяющих порядок вычисления выражения. Для уменьшения количества скобок используются правила старшинства операций. Литералы массивов и записей, а также вызовы функций и методов в свою очередь включают выражения.

Дек – последовательность, для которой удаление и вставка элементов возможна с обоих концов (deque – double-ended queue, очередь с двумя концами). Как и очередь, дек хорошо реализуется двухсвязным списком.

Декомпозиция – разбиение целого на части с целью выяснения структуры целого и взаимосвязи его частей. В программировании это понятие связано с методологией нисходящего проектирования программ и систем.

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

Дескрипторячейка или группа ячеек, хранящая некоторые характеристики объекта, в частности, его тип и адреса ячеек, хранящих его составных части. Дескриптор объекта после его создания всегда имеет постоянный адрес в памяти, хотя структура, свойства и расположение самого объекта могут изменяться в процессе выполнения программы.

­Жизненный цикл программы – ключевое понятие технологии программирования. ЖЦП имеет следующие этапы:

  1. Постановка задачи.

    1. Формулировка целей и предмета автоматизации.

    2. Обследование и формулирование требований.

Результатом этапа является техническое задание (ТЗ), календарный план работ и примерная смета расходов.

  1. Проектирование системы.

    1. Эскизное (предварительное) проектирование. На этом этапе происходит декомпозиция поставленной задачи на подзадачи и разработка архитектуры программной системы. Результатом является спецификация программы.

    2. Техническое (детальное) проектирование – рекурсивная декомпозиция програм­мной подсистемы на функциональные модули в соответствии с выбранным алгоритмом. Каждый модуль получает спецификацию. Алгоритм каждого модуля подвергается верификации.

  2. Конструирование системы.

    1. Кодирование на языке программирования и отладка отдельных модулей.

    2. Сборка и тестирование системы. Успешное тестирование служит основанием для начала эксплуатации в реальной среде заказчика.

  3. Эксплуатация реальными пользователями, в их производственных условиях.

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

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

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

Значение – результат вычисления выражения. В языке JavaScript значением может быть число, строка, логическое значение, специальные значения null, undefined, Infinity и NaN, а также произвольный объект (точнее, ссылка на объект). С помощью операции присваивания значение можно присвоить переменной, элементу массива, полю записи или свойству объекта. С помощью функций вывода значение можно вывести на экран или в файл. С помощью функций ввода значение можно ввести с клавиатуры или из файла.

Идентификатор – см. имя.

Имя – непустая последовательность латинских букв, цифр и знаков подчёркивания «_», которая не может начинаться с цифры. Буквы могут быть большие и маленькие, причём JavaScript их различает. Имена используются для обозначения переменных, функций, объектов, свойств, методов и некоторых значений – true, false, null, undefined, NaN, Infinity.

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

Интерпретаторпрограмма, которая сама исполняет исходную программу на языке высокого уровня, не преобразуя её в машинный код. Интерпретатор часто называют программной или виртуальной машиной. Сам интерпретатор представляет собой машинную программу, исполняемую аппаратно.

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

Интерпретируемый язык программирования – язык (VBScript, Java, JavaScript, Лисп, Пролог и др.), тексты программ на котором исполняются не непосредственно процессором машины, а другой программой, называемой интерпретатором или виртуальной машиной для данного языка. Текст программы на интерпретируемом языке может без изменения исполняться на любой машине, где есть интерпретатор для этого языка.

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

Компилируемый язык программирования – язык (Паскаль, Delphi, С и С++, Visual Basic и др.), текст программы на котором с помощью компилятора автоматически переводится на машинный язык; для переноса программы на другую машину её необходимо перекомпилировать (обычно другим компилятором).

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

Композиция – процесс и результат построения чего-то целого из хорошо подогнанных заранее подготовленных частей. В программировании это понятие связано с методологией восходящего проектирования программ и систем.

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

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

Литерал – символьное изображение значения. В языке JavaScript литералом может задать число, строку, логическое значение, специальные значения null, undefined, Infinity и NaN, а также массив и запись.

Логическое значение – значение, изображаемое литералом true или false, обозначает величину ИСТИНА или ЛОЖЬ, соответственно. Логические значения появляются, в основном, при проверке условий, влияющих на выбор следующего шага алгоритма.

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

Массивобъект встроенного типа Array (т.е. Массив). Он состоит из элементов, проиндексированных, начиная с 0 (т.е., первый элемент массива имеет индекс 0, второй – индекс 1 и т.д.). Элемент массива имеет некоторое значение произвольного типа (в частности, может быть другим массивом). Организация массива обеспечивает одинаково быстрый доступ к любому элементу массива по его индексу. Литерал массива содержит в квадратных скобках перечень значений его элементов (в порядке индексации). Эти значения задаются выражениями и отделяются друг от друга запятой. Допускается отсутствие в литерале любого количества выражений («пустые места»). Тогда значения соответствующих элементов считаются неопределёнными (значение undefined). В языке JavaScript можно в процессе выполнения программы добавлять новые элементы в конец массива, присваивая им значения и тем самым увеличивая длину массива.

Машинная командамашинное слово, представляющее одно элементарное действие, которое может выполнить процессор. Состоит из кода операции и адресов ячеек и регистров, над которыми эта операция должна быть выполнена.

Машинное слово – последовательность битов, хранящаяся в ячейке памяти.

Машинный языкязык программирования, программа на котором состоит из машинных команд, которые записываются в цифровой форме (двоичной или шестнадцатеричной) и непосредственно исполняются процессором компьютера, т.е. реальной машиной или аппаратно.

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

this.имя_метода = выражение_для_функции

Методология проектирования – совокупность принципов и методов проектирования и конструирования программ (см. жизненный цикл программ), нацеленных на уменьшение сложности, запутанности программного кода. Широко известны методологии модульного, нисходящего, структурного, восходящего и объектно-ориентированного программирования и проектирования.

Модуль – фрагмент программы, выполняющий чётко определенную задачу и имеющий достаточно простые связи с остальной программой. В языке JavaScript нет понятия «модуль». Оно появляется на этапе проектирования программы. Разбиение программы на модули и определение связей между ними называется декомпозицией программы. Для больших модулей также применяется декомпозиция на более мелкие модули. Функция и объект являются важными примерами модулей.

Модульное программирование – исторически первая методология проектирования, основанная на понятиях модуля и декомпозиции модулей и нашедшая отражение в языках и системах программирования. На ней базируются другие методологии проектирования.

Многомерный массив – массив, элементами которого являются массивы. Массив, элементы которого не являются массивами, называется одномерным массивом. Массив, элементы которого – одномерные массивы, называется двумерным массивом. Вообще, массив, элементы которого являются n-мерными массивами, называется (n+1)-мерным массивом. Двумерный массив, у которого длины элементов не одинаковы, называется ступенчатым. Если все элементы двумерного массива имеют одинаковую длину, массив называется матрицей (вообще говоря, прямоугольной). Такие массивы используются для представления математических матриц.

Непроцедурный язык программирования – язык, на котором описывают саму задачу таким образом, чтобы «умная» система программирования сама нашла алгоритм решения (функциональные языки – Лисп, логические – Пролог и др.).

Нисходящее проектирование и программирование – последовательный процесс декомпозиции программы на модули и затем модулей на всё более мелкие модули, пока не получатся конечные модули, кодирование которых на выбранном языке программирования становится тривиальной задачей. К недостаткам нисходящего проектирования относят то, что оно не регламентирует способы связывания модулей, а также слишком низкий уровень конечных модулей.

Обработчик событияпоследовательность операторов на языке Java­Script (или другом языке программирования сценариев), включённая в тег вместе с именем обрабатываемого события (см. объекты HTML-страни­цы). Обработчик события может использовать свойства и методы объектов страницы и браузера, а также изменять доступные свойства и структуру объектной модели документа. Для этого он может ссылаться на объекты-теги страницы либо по их имени (значение атрибута name), либо по их идентификатору (значение атрибута id), либо, если нужно сослаться на тег, содержащий данный обработчик, посредством слова this (этот). На объекты браузера можно ссылаться непосредственно по их стандартному имени. сделанные изменения немедленно будут отображены браузером.

Объект – см. программный объект.

Объектная модель документа – в языке HTML иерархическая структура программных объектов, представляющих свойства браузера и загруженного в него HTML–документа, доступных в сценариях. Объекты модели называются узлами. Они образуют дерево по отношению подчинения. Главным является объект window, представляющий окно, в котором отображён документ. Ему непосредственно подчинены другие объекты окна, в том числе объект document, которому подчинены все объекты HTML-документа – объекты HTML-страницы.

Объектно-ориентированный язык программирования (Smalltalk, Delphi, C++, Java, JavaScript, Visual Basic и др.) – язык, который расширяет возможности процедурных языков, вводя понятия объект (или класс) и событие. Языки объектно-ориентированного программирования (ООП) практически полностью сменили поколение алгоритмических языков.

Объекты браузера – доступные в сценариях HTML-документа программные объекты, представляющие свойства браузера и окна, в котором открыт этот документ. Все объекты браузера имеют собственные имена, по которым к ним и обращается сценарий: window, document, event, external, history, location, navigator, screen. Главным из них является window, а все остальные являются его свойствами.

Объекты HTML-страницыпрограммные объекты, согласно DOM, доступные в сценарии и представляющие теги HTML-документа (узлы тегов) и его фрагменты текста, не содержащие тегов (текстовые узлы). Свойствами узлов тегов являются все атрибуты этих тегов. Кроме них есть другие свойства узлов, отражающие «родственные» отношения: «родитель» (parent), «дитя» (child), «брат или сестра» (sibling) – в соответствии с порядком в HTML-тексте страницы. Эти отношения отражены в навигационных свойствах узлов, с помощью которых от одного узла можно переместиться к любому другому узлу. Среди прочих свойств можно отметить два полезных свойства, которые можно изменять обычным присваиванием: innerText – внутренний текст без вложенных тегов, innerHTML – весь внутренний HTML-текст. Узлы тегов могут реагировать на события, происходящих из разных источников, таких как мышь, клавиатура, загрузка-выгрузка в браузер страницы или другого объекта, выделение фрагмента страницы, заполнение и отправка формы, печать страницы, работа с удалёнными базами данных и др. Для обработки события принятого тегом, в список атрибутов этого или охватывающего тега нужно включить выражение вида

имя_события ="обработчик_события".

В один тег можно включать обработчики нескольких событий. Методы объектов страницы позволяют добавлять узлы, добавлять и удалять события и их обработчики, заменять узлы, удалять узлы и их атрибуты, вставлять и удалять строки и ячейки таблицы.

Объектно-ориентированное проектирование – современная разновидность модульного проектирования, в которой модулем может быть не только фрагмент кода или процедура (функция), но и целый программный объект со своими свойствами и методами, используемыми для взаимодействия с другими модулями. Объектно-ориентированная методология нашла выражение в объектно-ориентированных языках программирования, к которым относятся, например, языки Java, C# и, с некоторыми оговорками, JavaScript. Методология объектно-ориентированного проектирования реализована также в языке спецификаций UML.

Оператор – описание действий, выполняемых программой. Все операторы являются либо простыми, либо составными. Простые операторы: присваивание и, вообще, любое выражение, находящееся в позиции оператора, вызов функции или метода, определение переменной (оператор var), выход из тела цикла (операторы break и continue), выход из функции (оператор return), «пустой» оператор (пустой оператор не изображается и не выполняет никаких действий; он используется только иногда для удобства написания программ). Составные операторы: последовательности операторов, условный оператор, операторы цикла, определение функции (оператор function) и некоторые другие. Составные операторы построены из других операторов (в конечном счёте – из простых операторов), т.е. являются их композицией.

Операция – способ получения нового значения по значениям операндов операции. В языках программирования высокого уровня операнды операции являются выражениями. Каждый язык программирования имеет свой набор стандартных операций. В JavaScript имеются арифметические операции над числами: сложение (+), вычитание (-), умножение (*), деление без остатка (/), получение остатка от деления (%), изменение и сохранение знака (унарные – и +); логические операции: ИЛИ (||), И (&&) и НЕ (!); операция соединения строк (+), операции сравнения, присваивания, операции выборки элемента массива ([]) и свойства объекта (.), а также ещё несколько более специфических операций. Операции применимы к операндам определённого типа. Если операнды оказались других типов, делается попытка автоматического преобразования их в значения требуемого типа.

Отладка – это поиск и исправление ошибок в программе, делающих её неработоспособной или работающей неверно. Ошибки в программе бывают трёх видов: синтаксические, семантические и логические. Синтаксические и семантические ошибки – это нарушение общих правил синтаксиса и семантики данного языка программирования. Логические ошибки – это неправильная реализация логики, замысла данной программы. Синтаксические ошибки обнаруживаются первыми, т.к. они не позволяют системе приступить к выполнению программы. Семантические ошибки обнаруживаются уже в синтаксически правильной программе в ходе её выполнения, когда программа не может выполнить какое-то запрограммированное действие. В обоих этих случаях система выдаёт довольно точное сообщение о месте обнаружения ошибки и её характере. Однако часто ошибка находится не там, где она обнаружена. Задача локализации ошибки трудна и требует хорошего знания правил языка и тщательного анализа программы. Иногда приходится модифицировать программу, чтобы убедиться, что какие-то её участки не содержат указанной ошибки. Некоторые семантические ошибки не проявляют себя на тех входных данных, на которых ведется отладка программы. О логических ошибках система не сообщает, т.к. ей не известен замысел программы. Обнаружение логических и семантических ошибок ­– задача программиста, которую он решает с помощью тестирования.

Отладчик – компонент системы программирования, позволяющий автоматизировать многие процессы отладки программ.

Очередь (англ. Queue) – последовательность, удалять из которой можно только первый элемент, а добавлять только после последнего. Эта хорошо известная во многих областях жизни структура имеет специальную аббревиатуру FIFO (First In – First Out, Первый войдёшь – первый выйдешь). Очередь хорошо реализуется двухсвязным списком.

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

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

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

Последовательность операторов – последовательная запись операторов, отделенных друг от друга символом ; или «конец строки». Они выполняются один за другим в указанной последовательности. Последовательность операторов в таком виде не является одним составным оператором. Чтобы синтаксически она стала одним оператором, необходимо взять её в фигурные скобки {}. Их необходимо использовать там, где синтаксис требует наличие одного оператора, но этот оператор является последовательностью.

Правила старшинства операций – определяют порядок выполнения операций в выражениях при отсутствии скобок:

  1. Старшие операции выполняются раньше младших.

  2. Операции одного старшинства выполняются слева направо.

Для разных языков определения старшинства операций несколько различаются, но порядок арифметических операций всегда традиционен.

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

имя_переменной,

выражение_объекта.свойство или

выражение_массива[выражение].

Основная операция присваивания имеет вид

получатель=выражение

и означает, что получателю присваивается значение указанного выражения. Кроме того, имеются соединённые операции +=, -=, *= и т.д., а также унарные операции ++ и --. Все операции присваивания, том числе ++х и --х, выдают в качестве результата присвоенное значение. Только х++ и х-- выдают предыдущее значение получателя.

Программа – описание алгоритма или задачи, которое полностью может быть выполнено компьютером, и структур данных, которые обрабатываются алгоритмом. Такое описание должно быть полностью формализованным. Программа на языке JavaScript состоит из операторов. Интерфейс программы на языке JavaScript использует язык HTML.

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

Прототипирование – см. Макетирование.

Процедурный язык программирования – язык, на котором описывают последовательность шагов (процедур, действий), необходимых для решения задачи, т.е. алгоритм (Паскаль, С и С++, Visual Basic и др.).

Псевдокод – неформализованное описание алгоритма в текстовой форме с использованием естественно языка и с соблюдением некоторых заранее оговоренных правил и видов действий (условных, циклических, процедур). Средства такого описания алгоритмов также называются псевдокодом.

Путь – это запись, указывающая расположение диска, каталога (папки, директории) или файла в компьютере или локальной сети. Путь диска – это буква диска, за которой следует двоеточие, например «D:». Путь корневой папки – это путь диска, за которым следует обратный слэш, например, «D:\». Путь папки – это путь родительской папки, за которым следует имя папки и обратный слэш (последний слэш обычно не пишут). Путь файла – это путь родительской папки, за которым следует имя файла.

Разряд – см. бит.

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

Сборочное программирование – см. восходящее программирование.

Свойство объекта – характеристика программного объекта, имеющая имя и значение. Набор имён свойств и тип их значений определяется типом объекта. Свойства могут быть «только для чтения» или «для чтения и записи». В языке JavaScript значение свойства читается с помощью операции выборки выражение_для_объекта.имя_свойства, а записывается присваиванием. Если программист определяет свой тип объектов, то в конструкторе этого типа он определяет свойства с помощью специального присваивания, имеющего вид this.имя_свойства = выражение. В отличие от других языков в JavaScript уже созданному объекту можно добавлять новые свойства оператором присваивания. Свойства, определённые программистом, доступны для чтения и записи.

Свойства позиционирования – свойства стиля объекта, определяющие его положение на Web-странице при её отображении в браузере: position, left, top, bottom, right, z-index, clip. Изменяя в сценарии эти свойства, можно добиться эффектов анимации.

Синтаксис – правила написания текстов на каком-то языке. Синтаксис языков программирования очень строгий, малейшее отклонение от правил делает программу неработоспособной.

Система программирования – программный комплекс, предназначенный для создания и исполнения программ на языке высокого уровня. В минимальном варианте система программирования состоит только из компилятора или интерпретатора. Обычно же она ещё содержит специализированный текстовый редактор для написания программ, библиотеки подпрограмм (функций), которые могут подключаться к создаваемой или исполняемой программе, отладчик программ, а также учебники, справочники и многое другое.

Событие – понятие программирования, обозначающее сигнал, сообщение о реальном событии, происходящем в компьютерной системе и её окружении, доходящее до программы, которая может или должна на него отреагировать. Фрагмент программы, запускаемый событием, называется обработчиком события. Интерфейс программ часто управляется событиями. В объектно-ориентированных языках программирования на события реагируют объекты, для которых эти события определены. В языке JavaScript такими объектами являются объекты HTML-страницы, в которой содержится программа (сценарии), а также объекты Web-браузера window и document. Каждое событие имеет имя и характеристики, представленные свойствами объекта event («событие»).

Сортировка – перестановка элементов массива или списка в порядке возрастания или убывания. Является типичной и очень важной задачей программирования. В языке JavaScript у массивов есть специальный метод сортировки sort.

Специализированный язык программирования – язык, ориентированные на решение задач только в одной или нескольких близких областях и совсем не приспособленные к другим областям (языки команд контроллеров, языки функциональных схем для программирования контроллеров, язык управления базами данных SQL и др.).

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

Список – последовательность элементов. Ссылочное представление списка даёт больше возможностей, чем массив. Например, позволяет удалить любой элемент или вставить новый в середину. Широко используются односвязные и двухсвязные списки. В односвязном списке каждый элемент содержит ссылку только на следующий элемент. Так обычно представляют стеки. В двухсвязном списке каждый элемент содержит ссылку на следующий элемент и ссылку на предыдущий элемент. Так обычно представляют очереди и деки.

Сравнение – операция, проверяющая выполнение между двумя значениями одного из отношений «равно», «не равно», «больше», «не больше», «меньше», «не меньше» и выдающая соответствующее логическое значение. Операции ==, !=, >, >=, <, <= выполняются с автоматическим преобразованием операндов к одному типу, а операции === и !== выполняются без автоматического преобразования. Для сравнения строк используется лексикографический порядок (как в словарях), при котором порядок знаков определяется их ASCII-кодами.

Ссылка на объект – адрес дескриптора объекта. Если в программе указано, что значением некоторой ячейки является объект, это означает, что эта ячейка хранит ссылку на этот объект.

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

Стек – последовательность элементов, в которой добавлять и удалять можно только первый элемент. Первый элемент называется верхним, потому что английское stack означает кипу бумаг или штабель дров, где класть и брать можно только сверху. Другое название стека – магазин, по аналогии с магазином многозарядной винтовки или автомата, в котором пули заталкиваются и выталкиваются с одного конца. Популярность такой структуры проявляется в том, что для неё часто используется специальная аббревиатура LIFO (Last In – First Out, Последний войдёшь – первый выйдешь) или FILO (Первый войдёшь – последний выйдешь). Программно стек хорошо реализуется односвязным списком, в котором вершина стека является головой списка. Стандартный набор операций для стека: push – втолкнуть новый элемент в стек, протолкнуть пулю в магазин; pop – вытолкнуть (удалить) элемент из стека, как пробку из бутылки; top – скопировать верхний элемент стека, не удаляя его; exchange – поменять местами два верхних элемента стека; empty – проверить, пуст ли стек.

Стили – в HTML средство расширения возможностей атрибутов и добавления новых качеств объектам HTML-страницы. Язык каскадных таблиц стилей (CSS – Cascading Style Sheets), на котором описываются стили, встроен в HTML и довольно прост. Включение определения CSS-стилей в HTML-страницу осуществляется с помощью тегов <LINK>, <STYLE>, а также в любом теге с помощью атрибута style. CSS определяют значения атрибутов стиля. В объектной модели документа у каждого тега есть свойство style, которое является объектом со своими свойствами, соответствующими атрибутам стиля и определяющими характеристики этого тега. В сценарии свойства стиля используются, как свойства объекта style, являющегося в свою очередь свойством объекта-тега:

объект-тег.style.свойство_стиля

Атрибуты и свойства стилей задают свойства шрифта, текста, списка, фона и цвета, размера и рамки, видимости элемента, свойства позиционирования элемента, свойства печати элемента, фильтры (эффекты), применимые к элементу, форму курсора при наведении на элемент.

Строка – любая последовательность символов (любого алфавита), т.е. текст. В языке JavaScript литерал строки – это строка, взятая в кавычки ("Строка") или апострофы ('Строка'), обозначающие начало и конец строки. Строка может быть пустая (литерал "" или ''). Литерал строки должен полностью размещаться в одной строке текста программы. В литерале строки символ \ («обратный слэш») используется не сам по себе, а для указания, как понимать следующие за ним символы. В памяти компьютера каждый символ строки представлен однобайтовым двоичным ASCII-кодом. Любая строка может быть преобразована в объект встроенного типа String. Свойства и методы этого типа применимы к любым строкам. Мощным средством обработки строк являются методы поиска и замены подстрок с использованием шаблонов.

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

Структурное программированиеметодология проектирования, нацеленная на уменьшение сложности и запутанности программ и дополняющая методологию модульного проектирования. В узком смысле эта методология требует вместо неограниченного оператора перехода goto использовать такие «структурные» операторы, как последовательность, операторы условного выбора вроде if-then-else, операторы цикла while, do-while и for, а также процедуры/функции (с ограниченными операторами перехода continue, break и return). В широком смысле структурное программирование требует единственности точек входа и выхода для любого модуля, а также ограничивает произвольный доступ к ячейкам памяти, требуя использовать только «структурированные» типы данных вроде массивов, записей, множеств (коллекций), ссылочных структур с их «штатными» способами доступа к элементам. Структурное программирование требует также избегать использования глобальных переменных, используя передачу данных между модулями только через их параметры, т.е. более контролируемым способом.

Сценарий – программный код на каком-либо языке программирования, используемом для этой цели, встроенный в документ для придания ему дополнительной интерактивности. В Web-страницах, написанных на HTML, допускается использование сценариев на языках Java, JavaScript, VBScript, а также ActiveX-сценариев (при подключении соответствующих ActiveX-ком­по­нентов). Последние два вида сценариев может исполнять только на компьютере с операционной системой Windows.

Схема – см. блок-схема.

Таймер – средство, выполняющее определённые действия по истечении заданного промежутка времени. В HTML объект window предоставляет методы для запуска некоторых фрагментов сценария по таймеру. В остальное время другие части сценария работают в обычном режиме. Имеется два типа таймеров – однократные и периодические. Однократный таймер создаётся и запускается методом

setTimeout("операторы_сценария",время_задержки)

Указанные операторы_сценария будут запущены один раз по истечении времени_задержки, заданного в миллисекундах. Метод выдаёт также числовой идентификатор таймера. Его можно присвоить переменной, чтобы иметь возможность досрочно прекратить работу таймера методом

clearTimeout(идентификатор_таймера).

Периодический таймер создаётся и запускается методом

setIterval("операторы_сценария",интервал_времени)

Указанные операторы_сценария будут запускаться каждый раз по истечении указанного интервала_времени, заданного в миллисекундах. Метод выдаёт числовой идентификатор таймера. Его нужно использовать, чтобы прекратить работу таймера методом

clearIterval(идентификатор_таймера).

Тег – метка, ярлык (tag) в языках разметки документов, таких как HTML, управляющий отображением помеченного фрагмента. В HTML есть теги структуры документа, форматирования текста, вставки изображений, гиперссылок, стилей, и сценариев, теги форм и элементов интерфейса (элементов управления), теги фреймов и др. Теги имеют вид

<имя_тега [атрибуты]> Содержание тега </имя_тега>

или

<имя_тега [атрибуты]>.

Атрибуты тега – это список разделённых пробелами выражений вида

имя_атрибута = "значение_атрибута".

В HTML набор и смысл имён тегов и атрибутов фиксирован. Для каждого тега определён набор его атрибутов, а для каждого атрибута – набор его значений. Содержание тега – это допускаемый тегом простой текст или HTML-текст (т.е. теги могут быть вложенными). В DOM каждый тег представлен объектом HTML-страницы, открывающим доступ к свойствам и содержанию тега из сценария.

Тест – специально разработанный набор входных данных, удовлетворяющий следующим основным требованиям: 1) известно, какой должен быть результат для правильной программы; 2) успешное прохождение теста гарантирует правильность работы программы на достаточно широком наборе входных данных; 3) достаточно простой, поддающийся анализу ход выполнения теста. Локализовать ошибку позволяет только третье условие. Для локализации ошибки используются разные методики, среди которых важное место занимают трассировка и метод контрольных точек.

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

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

Универсальный язык программирования – язык, предназначенный для решения задач из любой области, хотя для некоторых областей он может быть более приспособлен (языки команд универсальных вычислительных машин, Паскаль, С и С++, Лисп, Пролог, Visual Basic и др.).

Унифицированный процесс разработки систем (USDP) – универсальная технология проектирования сложных систем, в том числе и программных, основанная на методологии объектно-ориентированного проектирования, языке спецификаций UML и стратегиях инкрементного и эволюционного проектирования и макетирования.

Условиевыражение, всегда выдающее логическое значение (или автоматически приводимое к нему). Используется в условных операторах и циклах.

Условный оператор – составной оператор вида