Фрагмент для ознакомления
2
• SGML - «Стандартизованный обобщенный язык разметки». Развитие языка было вызвано необходимостью создания средств для описания документов и правил их строительства. Чтобы указать структуру документа, используются специальные метки - «теги», которые разделяют элементы документа и зону определения типа документа (DTD) друг от друга, выполняют функции «грамматики» и определяют структуру и содержимое каждого элемента в документе. Принят ISO в качестве стандарта в 80-х годах. Сложность этого языка помешала ему стать основой первой спецификации для Web - HTML, которая стала производной SGML.
• HTML - «Язык гипертекстовой разметки» был разработан в исследовательском центре CERN в 1992 году. Html устанавливает формат гипермедийных документов в сети WWW. HTML-документы - это ASCII-файлы, доступные для просмотра и редактирования в любом текстовом редакторе. Отличие от обычного текстового файла - наличие в HTML-документах специальных команд - тегов, которые указывают правила форматирования документа [3].
1.4. ОСНОВНЫЕ ЭТАПЫ РАЗРАБОТКИ ПРОГРАММ НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ
Чтобы правильно решить задачу с помощью программы для ПК, необходимо пройти определенные этапы ее решения.
1. Формализация данных
2. Создание математической модели
3. Подробное описание алгоритма (блок-схема, текстовое описание)
4. Кодирование на языке программирования
5. Отладка программы
6. Тестирование программы
7. Анализ результатов работы [11].
Эта цепочка будет верна с точки зрения решения задачи на ПК, поскольку на начальных этапах («Формализация данных» и «Создание математической модели») определяются исходные данные и модель решения. Кроме того, на этапах «Подробное описание алгоритма (блок-схема, текст)» и «Реализация на языке программирования» происходит пошаговое построение целевого алгоритма и его реализация на данном языке программирования. На этапе «Отладка программы» устраняются явные неверные ситуации реализации алгоритма, а этап «Тестирование» позволяет устранить скрытые и очевидные недостатки в реализации исходной задачи. На заключительном этапе «Анализ результатов работы», полученные результаты рассматриваются.
1.5. ВЫВОДЫ ПО ПРОВЕДЕННОМУ ИССЛЕДОВАНИЮ
При выборе языка программирования для написания курсовой работы мной были сформулированы следующие требования. Язык программирования должен:
1. быть прост в использовании для начинающих программистов
2. являться языком программирования общего назначения
3.иметь возможности опытным программистам расширять функциональность
4. являться интерактивным
5. выдавать понятные сообщения об ошибках
6. быстро выполнять небольшие программы
7. не требовать от программиста знания работы аппаратного обеспечения
8. Защищать пользователя от ошибок операционной системы
После знакомства с основными языками программирования было принято решение, что для дальнейшего написания курсовой работы будет использоваться язык программирования Pascal.
Структура программ Pascal похожа на программы на C. Однако Pascal предоставляет возможность описать внутренние локальные процедуры и создать вложенную иерархию имен. Программа Pascal представляет собой единый программный блок, содержащий определения используемых подпрограмм.
Паскаль имеет довольно широкий спектр простых и структурированных типов данных: целые числа и действительные числа, символьные данные, перечисления, логические (булевые) значения, массивы, записи, последовательные файлы и ограниченный набор типов. Оператор типа позволяет программисту определять новые типы данных, хотя он не обеспечивает группировку и инкапсуляцию для определения нового типа данных с набором подпрограмм, которые выполняют основные операции над объектами данных этого нового типа. Кроме того, указатель и работа по созданию новых объектов данных любого типа позволяют программисту создавать новые объекты связанных данных непосредственно во время выполнения программы.
Подпрограммы принимают форму функций (если они возвращают то или иное значение) или процедуры (если их действие сводится к модификации переданных параметров или глобальных переменных). Операторы управления последовательностями основаны на конструкциях структурного программирования: составные операторы, условные операторы и операторы case, а также три типа операторов цикла. В Pascal есть также инструкция goto, которая редко используется и без которой почти всегда можно обойтись. Вызываются подпрограммы и возвращаются значения с использованием обычной рекурсивной структуры обратного вызова.
Поскольку Pascal имеет блочную структуру, большинство структур управления данными для ссылок на переменные используют стандартные статические правила для определения области и характеристики вложенности блока в самой программе. Параметры могут передаваться по ссылке или по значению.
Паскаль может быть эффективно реализован на обычном компьютере. Идеология языка включает только те языковые свойства, для которых существуют хорошо изученные и эффективные методы реализации. Во время процесса трансляции для почти всех операций возможно управление статическим типом, поэтому потребность в динамическом мониторинге минимальна, но обеспечивается полная безопасность выполнения. Как правило, программа преобразуется в исполняемый машинный код, но в некоторых реализациях Pascal результатом перевода является код виртуальной машины, который затем интерпретируется и выполняется некоторым программным интерпретатором. Во время выполнения программ на Паскале центральный стек используется для записей активации подпрограммы, область динамически распределенной памяти выделяется объектам данных, созданным для непосредственной манипуляции с помощью переменных. Память используется для хранения сегментов программного кода и подпрограмм из подключенных библиотек.
Хотя Паскаль, как правило, очень удобный и полезный язык, он имеет свои недостатки, список которых приведен ниже.
1. В определении этого языка существует некоторое противоречие между идеологией самого языка и его реализацией. Например, прямая конструкция нужна только для того, чтобы компиляция могла выполняться за один проход из-за того, что таким образом достигается максимальная эффективность компиляции. Но это не всегда так. Например, компилятор PL / C для PL / I делал три прохода и в то же время был одним из наиболее эффективных среди наиболее распространенных компиляторов своего времени. Кроме того, в настоящее время при использовании недорогих высокоскоростных компьютеров скорость компиляции не имеет большого значения.
2. Возможно, наиболее важной слабостью Паскаля является то, что массивы рассматриваются как отдельные типы, а не как совокупность разных объектов одного и того же типа. Это приводит к тому, что, например, array [1. .10] of Integer и array [1. .20] of integer являются различными типами данных. В результате алгоритмы обработки массивов становятся более сложными, так как массивы разных размеров не могут быть переданы общей подпрограмме (например, подпрограмма матричного умножения). Строки реализованы как массивы символов, что также затрудняет их обработку в случае строк разной длины.
3. Синтаксис определения процедуры в Pascal выглядит следующим образом: заголовок процедуры, локальные переменные, локальные параметры, начало процедура конец. Поскольку программа может содержать большое количество вложенных локальных процедур, определение локальной переменной, которая используется в любой процедуре, (синтаксически) удалено от места ее использования в теле подпрограммы. Это приводит к трудностям при создании документации и чтении больших программ на Pascal.
4. Pascal был реализован таким образом, что компиляция программы была одним процессом, то есть невозможно было скомпилировать отдельные программные модули. Однако в большинстве реализаций эта проблема была решена: было принято соглашение о том, что допускаются дополнительные внешние процедуры, аналогичные заголовочным файлам с расширением h на языке C. Но эта нестандартная реализация ограничивает возможность переноса программ на Pascal на другие машины.
5. Хотя Pascal позволяет определять новые типы данных для поддержки абстракций, на самом деле он не предусматривает возможности инкапсуляции и скрытия информации. Этот комментарий скорее не является критикой языка, а комментарием об общем уровне развития программирования в 1970 году, когда был создан Паскаль [1].
ГЛАВА 2. ОСНОВНЫЕ ПРИНЦИПЫ ОРГАНИЗАЦИИ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
Для большинства практических задач требуется многократное повторение одних и тех же действий, то есть повторное использование одного или нескольких операторов.
Пусть требуется ввести и обработать определенную последовательность чисел. Если есть только пять чисел, можно сделать линейный алгоритм. Если их насчитывается тысяча, можно записать линейный алгоритм, но он очень утомительный и нерациональный. Если число чисел к моменту разработки алгоритма неизвестно, то линейный алгоритм в принципе невозможен.
Другой пример. Чтобы найти имя человека в списке, нужно проверить первое имя списка, второе, третье и т. д. до тех пор, пока не будет найден нужный элемент или список не закончится. Преодоление таких трудностей может осуществляться через циклы.
Цикл - это многократно исполняемая часть алгоритма (программы). Соответственно, циклический алгоритм представляет собой алгоритм, содержащий циклы.
Существует два типа циклов: с известным числом повторений и с неизвестным числом повторений. В обоих случаях мы имеем в виду количество повторений на этапе проектирования алгоритма.
Существует 3 типа циклических структур:
• цикл с предварительным условием;
• цикл с пост-условием;
• цикл с параметром [14]
Графическая форма представления циклических алгоритмов:
Фрагмент для ознакомления
3
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. — М.: Наука, 2008.
2. Ашарина, И.В. Основы программирования на языках С и С++: Курс лекций для высших учебных заведений / И.В. Ашарина. — М.: Гор. линия-Телеком, 2012.
3. Баженова, И.Ю. Языки программирования: Учебник для студентов учреждений высш. проф. образования / И.Ю. Баженова; Под ред. В.А. Сухомлин. — М.: ИЦ Академия, 2012
4. Березин Б.И., Березин С.Б. Начальный курс С и C++. — М.: ДИАЛОГ-МИФИ, 2016.
5. Бондарев В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования. —Харьков: Фолио, Ростов н/Д: Феникс, 2007.
6. Брайн Керниган и Деннис Ритчи. Язык программирования Си. - Prentice Hall, 2008
7. Вирт Н. Алгоритмы и структуры данных. — М.: Мир, 2009.
8. Гавриков, М.М. Теоретические основы разработки и реализации языков программирования: Учебное пособие / М.М. Гавриков, А.Н. Иванченко, Д.В. Гринченков. — М.: КноРус, 2010.
9. Гарольд Абельсон, Джеральд Суссман и Джули Суссман. Структура и интерпретация компьютерных программ. - McGraw-Hill Science/Engineering/Math, 1996
10. Голицына, О.Л. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. — М.: Форум, НИЦ ИНФРА-М, 2013.
11. Головин, И.Г. Языки и методы программирования: Учебник для студентов учреждений высшего профессионального образования / И.Г. Головин, И.А. Волкова. — М.: ИЦ Академия, 2012.
12. Дагене В.А., Григас Г. К., Аугутис К.Ф. 100 задач по программированию. — М.: Просвещение, 2013.
13. Довек, Ж. Введение в теорию языков программирования / Ж. Довек, Ж.-Ж. Леви. — М.: ДМК, 2016.
14. Дональд Кнут. Искусство программирования, том 1: основные алгоритмы. - Addison-Wesley Professional, 1997
15. Касторнова, В.А. Структуры данных и алгоритмы их обработки на языке программирования Паскаль: Учебное пособие / В.А. Касторнова. — СПб.: BHV, 2016.
16. Кауфман, В.Ш. Языки программирования. Концепции и принципы / В.Ш. Кауфман. — М.: ДМК, 2011.
17. Керниган, Б.У. Язык программирования С / Б.У. Керниган, Д.М. Ритчи; Пер. с англ. В.Л. Бродовой. — М.: Вильямс, 2013.
18. Миков А. И. Информатика. Введение в компьютерные науки. — Пермь: Изд-во ПГУ, 2008.
19. С. МакКоннел. Совершенный код. - Microsoft Press, 2004
20. Томас Кормэн, Чарльз Лейзерсон, Рональд Ривест и Клиффорд Штайн. Введение в алгоритмы. - MIT Press, 2009
21. Эндрю Хант и Дэвид Томас. Программист-прагматик: от подмастерья к мастеру, 2 изд. - Addison-Wesley Professional, 1999
22. Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес. Шаблоны проектирования: Элементы повторно используемого объектно-ориентированного программного обеспечения. - Addison-Wesley Professional, 1994