Томский государственный университет
Факультет прикладной математики и кибернетики
Кафедра программирования
ДОПУСТИТЬ К ЗАЩИТЕ В ГАК
зав. кафедрой программирования профессор, д.т.н.
_______________ А.Ю.Матросова
“____ ” ________________ 1999 г.
Соловьёв Александр Станиславович
Система визуального программирования
“Блок-схема” на основе языка блок-схем
(дипломная работа)
Научный руководитель доцент, к.т.н.
_________ Н.А.Белоусова
Автор работы
_________ А.С. Соловьев
Томск 1999
Дипломная работа представляет собой систему программирования, которая облегчает обучение программированию и началам алгоритмизации. Основная идея, положенная в основу работы, - это создание системы трансляции с языка блок - схем.
Созданная система “Блок-схема” обладает удобным интерфейсом, графическим редактором блок-схем, встроенным текстовым редактором, интерпретатором и конвертором на язык программирования Си. В системе предусмотрена возможность получения информации (справок) как о самой системе, так и о языке блок - схем. Система снабжена демонстрационными примерами.
Система создана в двух вариантах:
· Под операционную систему MS-DOS 3.x и выше;
· Под операционные системы Windiows 95, Windows 98 и Windows NT.
В первом случае, разработка велась с помощью языка Borland C++ 3.1 (совместима с языком Turbo C 2.0). Во втором, с помощью пакета Borland C++Builder 3.0.
Оглавление
Введение................................................................................................................................... 4
1. Языки программирования................................................................................................ 6
1.1. Классификация............................................................................................................. 6
1.2. Сравнительная характеристика языков................................................................... 8
2. Трансляторы........................................................................................................................ 9
2.1. Классификация............................................................................................................. 9
2.2. Компиляторы и интерпретаторы.............................................................................. 9
3. Язык блок-схем................................................................................................................. 11
3.1. Правила построения блок-схем.............................................................................. 11
3.2. Блоки............................................................................................................................ 12
3.3. Связки........................................................................................................................... 14
3.4. Язык наполнения блок – схем................................................................................. 14
4. Система программирования.......................................................................................... 18
4.1. Графический редактор.............................................................................................. 18
4.2. Встроенный текстовый редактор............................................................................ 21
4.3. Интерпретатор........................................................................................................... 22
4.3.1. Этапы трансляции............................................................................................... 22
4.3.2. Лексический анализ............................................................................................ 24
4.3.2.1. Задачи лексического анализа.................................................................... 24
4.3.2.2. Сканер............................................................................................................. 25
4.3.3. Синтаксический и семантический анализ...................................................... 27
4.3.4. Польская инверсная запись (ПолИЗ)............................................................... 27
4.3.4.1. Алгоритм Дейкстры формирования ПолИЗа.......................................... 28
4.3.4.2. ПолИЗ выражений, содержащих переменные синтаксиса.................. 29
4.3.4.3. Алгоритм перевода ПолИЗа в машинные команды............................. 31
4.3.5. Общая схема работы интерпретатора............................................................ 34
4.4. Оболочка системы..................................................................................................... 35
4.4.1. Работа с файлами............................................................................................... 35
4.4.2. Знакомство с системой...................................................................................... 36
4.4.2.1. MS-Dos версия системы............................................................................... 36
4.4.2.2. Windows версия системы............................................................................ 40
4.5. Внутреннее представление данных....................................................................... 46
Заключение............................................................................................................................ 48
Литература............................................................................................................................. 49
Приложение.......................................................................................................................... 50
Приложение 1: Примеры блок-схем............................................................................. 50
Приложение 2: Матрицы переходов анализаторов.................................................. 52
Приложение 3: Текст основных классов программы................................................. 58
Основная проблема, которая встает перед обучаемыми на занятиях по информатике, это неосязаемость изучаемого предмета. Живя в материальном мире человеку довольно трудно и не очень интересно разбираться с неосязаемыми операторами.
Наиболее естественной формой представления (восприятия) информации является графический образ – рисунок, чертеж, схема и т.д. К этой форме человек прибегает всякий раз (возможно неявно для себя), когда необходимо решать (описывать, формулировать) действительно сложные задачи. Эффективное оперирование наглядными образами, быстрое установление смысловой связи между ними – является сильной стороной человеческого мышления.
Еще во времена становления программирования, когда программы писались на внутреннем языке ЭВМ – машинном коде (ассемблере), неотъемлемой частью разработки программ было использование блок-схем. Как мы все хорошо знаем: “ Схемой алгоритма называется такое графическое представление алгоритма, в котором этапы процесса обработки информации и носители информации представлены в виде геометрических символов из заданного ограниченного набора, а последовательность процесса отражена направлением линий ” [1]. Их применение значительно облегчало восприятие и анализ программы. Двумерное представление программы более ясно отражало ее структуру. Применение блок-схем позволяло быстрее и качественнее разрабатывать и отлаживать программы, а также облегчалось их сопровождение. Данное свойство блок-схем было “узаконено” и они стали обязательной частью документации.
Сохранение двух различных форм представления программ – самого текста и блок-схемы всегда чревато ошибками, поскольку трудно постоянно поддерживать их соответствие. Более того, многие программисты никогда не любили вычерчивать блок-схемы и создавали их после того, как программа была закончена, и лишь потому, что блок-схемы требовались в качестве документации. Таким образом, польза, которую могли бы принести блок-схемы, отсутствовала и именно тогда, когда она была наиболее нужна – при разработке программы.
Естественным развитием данной ситуации является объединение двух подходов в описании программ: в виде текста и блок-схемы. Результатом такого объединения является понятие визуального программирования. Под ним понимается способ описания алгоритма решения задачи в графическом виде, соединяющий достоинства текста и блок-схем программ. Что в сочетании с современными графическими возможностями ЭВМ и их способностью взять на себя рутинные операции и максимально упростить весь процесс программирования, делает это направление очень перспективным.
Вследствие всего выше сказанного, представляет интерес реализация системы визуального программирования, в рамках которой, будет представлена возможность определения алгоритма в графическом виде, подобно блок-схеме, но с элементами потокового программирования и использованием в полной мере графических и интерактивных возможностей компьютера, что в конечном итоге не только облегчает понимание написанного, но и сильно облегчает процесс создания программ.
Обучаемый намного быстрее и легче разберется в каком либо языке, если ему дать возможность самому составить блок-схему алгоритма, посмотреть как он (алгоритм) будет выполняться, проследить изменения значений переменных, а затем посмотреть, как выглядит исходный текст непосредственно на изучаемом языке.
В 70ых годах были довольно успешные попытки создания систем, с помощью которых ЭВМ понимала язык блок-схем (например, ОДА). Но все-таки это были языки блок-схем не в чистом виде. В них присутствовали описатели, с помощью которых ЭВМ строила из алгоритма блок-схему.
В идеальном случае программист должен создавать блок-схему, непосредственно работая с планшетом, на котором изображается блок-схема.
Если ориентировать разрабатываемую систему на начинающего программиста, который учится не только программированию, сколько началам алгоритмизации, то система должна быть интерпретирующего типа с удобным интерфейсом. Это значит, что процесс интерпретации должен отображаться на экране в форме, позволяющей пользователю следить за этим процессом, прерывать его, наблюдать, как изменяются значения переменных.
В системном программировании языком называется определенный набор символов и правил (соглашений), устанавливающих способы комбинаций этих символов для записи осмысленных сообщений (текстов).