- •Федеральное государственное учреждение
- •©Российская таможенная академия, 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]
- •Основы программирования
Введение
Программирование как деятельность по созданию программ и программных систем для вычислительных машин в наше время является развитой индустрией, обладающей своей технологией, базирующейся на научных и технических достижениях в этой области. Программисты должны в совершенстве владеть своими технологиями и от них нельзя требовать столь же глубоких познаний в других областях, для которых они создают программы.
Специалистам в других областях приходится обращаться к программистам, когда они заказывают создание тех или иных программ, или в процессе их эксплуатации, когда они сталкиваются с ошибками в программах или с необходимостью их модернизации. Лучше всего это общение происходит, когда представители этих разных областей говорят на одном языке – языке алгоритмов и информационных моделей. При этом специалисту-непрограммисту достаточно знания лишь основ программирования и технологии программирования. Неоценимую помощь оказывает опыт самостоятельного создания хотя бы небольших работоспособных программ.
Помимо того, специалисты, использующие информационные технологии, часто сталкиваются с появлением задач, не предусмотренных штатным программным обеспечением, но решение которых с помощью специально разработанных сравнительно небольших программ повысило бы эффективность их основной профессиональной деятельности. Навыки программирования могут и здесь сыграть решающую роль.
Наконец, знание того, какими средствами решаются информационные задачи, как протекают процессы их решения в компьютерной системе, позволяет более эффективно настраивать и эксплуатировать штатное специальное и общее программное обеспечение.
Включение дисциплины «Технология программирования» в учебный план специализации «Информационные таможенные технологии (ИТТ)» диктуется необходимостью подготовки специалистов таможенного дела, способных решать рассмотренные выше задачи. Эта дисциплина является также базовой для изучения всех других дисциплин специализации «ИТТ».
Как и в любой инженерной области, в программировании процесс решения задачи состоит из таких этапов, как постановка задачи, поиск метода решения, проектирование решающего устройства (системы, технологии), его конструирование, внедрение, эксплуатация и модернизация. Спецификой программирования является то, что постановка задачи имеет целью создание информационной модели этой задачи, методом решения должен быть алгоритм обработки или реализации модели задачи, а устройством, решающим задачу, должна быть программа для компьютера. По образному выражению Никлауса Вирта, автора многих популярных языков программирования, «Программы = алгоритмы + структуры данных». Структура данных в программе как раз и является реализацией информационной модели задачи. Хотя любому человеку присуще алгоритмическое и модельное мышление, но огромное различие между представлением информации и алгоритмов в компьютере и в человеческом сознании создаёт и трудности в программировании.
Основные трудности являются следствием сложности внутреннего устройства программ (сотни тысяч команд) и невозможности проследить все действия компьютера (миллиарды операций в секунду). Вся история развития науки и технологии программирования определяется борьбой со сложностью программ и самого процесса их создания. Основное направление этой борьбы – разработка всевозможных средств, позволяющих программистам реализовывать свои проекты не на «низком», машинном уровне, а на более «высоком» уровне, близком человеческому и профессиональному, предоставляя компьютеру самому переводить человеческие представления на машинный уровень с помощью различных средств «автоматизации программирования». К таким средствам относятся и языки программирования высокого и сверхвысокого уровня, и поддерживаемые ими методологии и технологии модульного, структурного, объектно-ориентированного проектирования и программирования.
Однако при всех впечатляющих результатах развития технологии и автоматизации программирования программный код, который приходится писать самим программистам, (да и любая информационная технология в целом) является чрезвычайно формализованным текстом, строго подчиняющимся жёстким синтаксическим и семантическим правилам языков программирования. Такой уровень формализации не свойственен обычному человеческому сознанию (хотя и достигается путём усилий и тренировок), что препятствует быстрому овладению навыками программирования широким кругом пользователей. Тем не менее, благодаря простоте базовых принципов программирования практически каждый прилежный студент в состоянии их освоить и научиться создавать собственные, пусть и не очень сложные программы.
Однако, здесь невозможно ограничиться формальным заучиванием правил языка и готовых программ. Главное в программировании – это понимание логики алгоритма и программы, т.е. понимание того, почему запрограммированная последовательность действий над используемыми в программе структурами данных приводит к решению задачи (или не приводит, если программа неправильная). Такое понимание развивается вместе с изучением языка программирования, в процессе разбора готовых примеров программ (с целью понять их логику), и закрепляется в попытках самостоятельного создания всё более усложняющихся программ. Важнейшую роль играют анализ и отладка составленной программы – поиск и устранение ошибок в программе, постепенно приводящие к обоснованному пониманию правильности логики алгоритма и её реализации в программе. Программирование – это не только (и не столько) кодирование и запуск программы на компьютере, но и размышление с карандашом и бумагой.
Технология программирования выработала целый ряд методологий, позволяющих сделать процесс размышления над задачей, алгоритмом её решения и реализующей этот алгоритм программой более целенаправленным и эффективным. Главные принципы этих методологий стары, как мир. Это принцип декомпозиции, разбиения целого на составные части, задачи на подзадачи, цели на подцели, сложного действия на более простые операции, и принцип постепенности, требующий выделения более простого ядра задачи, разработки и реализации его решения и последующего постепенного развития проекта до полного решения задачи. Освоение применения этих принципов в программировании должно проходить в процессе создания программ, тем более что важнейшие их положения нашли отражение в структуре языков программирования и поддерживающих их инструментальных средств.
Для начального обучения очень важным является выбор языка и системы программирования. Обычно используются Pascal или более современные языки Delphi и Visual Basic. Использование в данном пособии языка JavaScript в качестве первого языка оправдано следующими обстоятельствами:
Язык прост в изучении и использовании (проще перечисленных выше языков).
Он содержит все основные средства и приёмы современного программирования и близок по структуре к таким профессиональным языкам, как С++ и Java.
Любой Web-браузер и простейший текстовый редактор уже является достаточно удобной системой программирования на этом языке. Т.е. система программирования на JavaScript является бесплатным приложением к любым операционным системам. А входящая в состав пакета MS Office 2003 программа FrontPage является очень удобной системой программирования на языках HTML и JavaScript для платформы Windows.
С помощью простых средств HTML и сценариев JavaScript легко создавать интерактивные приложения без использования какой-либо сложной среды создания интерфейса пользователя, как в системах программирования Visual Basic, Delphi, C++ или Java.
Язык фактически и формально является международным и межплатформенным стандартом для разработки Web-приложений, что делает его изучение весьма практичным занятием. Это же обеспечивает и огромный выбор справочной и учебной литературы по JavaScript.
Данное учебное пособие, однако, не следует рассматривать как учебник по языку JavaScript или Web-дизайну, хотя и в этом качестве его можно использовать. Его цель – обучение студента основным понятиям алгоритмизации и программирования, базовым задачам, алгоритмам и структурам данных, часто встречающимся в практике программирования, основам технологии программирования и практике их применения. Таким образом, пособие соответствует программе курса «Технология программирования» по специализации «ИТТ».
В соответствии с целями курса пособие построено по логическому, а не по рецептурному принципу, что обеспечивает уверенность обучающегося в полноте получаемых знаний. Хотя пособие содержит большое количество примеров, иллюстрирующих все вопросы теории, но оно не предназначено для самостоятельного обучения умению программировать. Для приобретения такого умения необходима активная и систематическая работа студента на практических занятиях под руководством опытного преподавателя и не менее активное самостоятельное выполнение домашних заданий с использованием других методических разработок. Данное пособие здесь может помочь лишь как справочник. Основная задача пособия видится в систематизации изучаемого материала, важность чего может осознаваться, возможно, на более поздних этапах обучения и, особенно, в период подготовки к экзамену. Тематическая разбивка материала также соответствует, в основном, вопросам, предлагаемым для подготовки к экзамену. Ориентации на систематизацию знаний отвечает и сравнительная краткость пособия, и наличие в нём ещё более краткого конспекта-глоссария, т.е. конспекта лекций, построенного по принципу словаря терминов – глоссария.