- •Федеральное государственное учреждение
- •©Российская таможенная академия, 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]
- •Основы программирования
Отладка программ. Трассировка, отладочная печать. Тестирование программы
Отладка программы или модуля – это поиск и исправление ошибок в программе, делающих её неработоспособной или работающей неверно. Ошибки в программе бывают трёх видов: синтаксические, семантические и логические. Синтаксические и семантические ошибки – это нарушение общих правил написания программ на данном языке. Логические ошибки – это неправильная реализация логики, замысла данной программы.
Отладка производится путём попытки исполнения программы на конкретных входных данных.
Синтаксические ошибки обнаруживаются первыми, т.к. они не позволяют системе приступить к выполнению программы (обнаруживаются на стадии её анализа и подготовки к выполнению, например, несоответствие открывающих и закрывающих скобок).
Семантические ошибки обнаруживаются уже в синтаксически правильной программе в ходе её выполнения, когда программа не может выполнить какое-то запрограммированное действие, например, умножение числа на переменную, значение которой не было определено.
В обоих этих случаях система выдаёт довольно точное сообщение о месте обнаружения ошибки и её характере. Однако часто ошибка находится не там, где она обнаружена. Задача локализации ошибки (т.е. установления её точного местонахождения) довольно трудна и требует хорошего знания правил языка и тщательного анализа программы. Иногда приходится модифицировать программу, чтобы убедиться, что какие-то её участки не содержат указанной ошибки. Некоторые семантические ошибки не проявляют себя на тех входных данных, на которых ведется отладка программы. Обнаружить их помогает более систематическое тестирование программы (см. ниже).
О логических ошибках система не сообщает, т.к. ей не известен замысел программы. Обнаружение логических ошибок – задача программиста, которую он решает с помощью тестирования.
Тестом называется специально разработанный набор входных данных, удовлетворяющий следующим основным требованиям:
известно, какой должен быть результат для правильной программы;
успешное прохождение теста гарантирует правильность работы программы на достаточно широком наборе входных данных;
достаточно простой (поддающийся анализу) ход выполнения теста.
Первое условие обеспечивает обнаружение присутствия ошибки и даёт некоторую информацию для её анализа. Второе условие говорит само за себя. Но локализовать ошибку позволяет только третье условие. Для локализации ошибки используются разные методики. Упомянем здесь трассировку и контрольные точки.
Трассировка – это пошаговое исполнение программы с фиксацией (вывод на экран, в файл или на печать) всех изменений данных и другой информации, позволяющей проследить весь путь исполнения программы. Трассировка выполняется с помощью отладчика, даёт исчерпывающую информацию, но поиск ошибок на её основе очень трудоёмок.
Контрольные точки – это специально вставляемые в заданные программистом места программы операторы, сигнализирующие о достижении этой точки, осуществляющие фиксацию некоторой текущей информации и предоставляющие программисту возможность выбора способа дальнейшей отладки (трассировка, изменение данных и т.д.). В полном объёме метод контрольных точек реализуется с помощью отладчика, но в какой-то мере он с успехом может быть реализован простой вставкой («вручную») операторов отладочной печати в некоторые места программы.
Тестирование – это разработка и использование системы тестов с целью обнаружения как можно большего количества ошибок и проверки тех или иных свойств программы (скорости работы, использования ресурсов и т.п.). Следует помнить, что тестирование позволяет обнаружить ошибки, но гарантировать их отсутствие не в состоянии. Поэтому важную роль играет массовое случайное тестирование – широкая опытная эксплуатация или так называемое бета-тестирование, к которому прибегают разработчики программных продуктов для массовой продажи.