Проект интегрированной среды для обучения программированию

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.06.2012
Размер файла 2,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Название поля

Тип данных

Описание

Номер_задания

int

Первичный ключ - уникальный идентификатор

Тема

varchar(MAX)

Тема задания

Номер_преподавателя

int

Внешний ключ - идентификатор преподавателя

Шаблон

varchar(MAX)

Шаблон условия задания

Эталонное_дерево

BLOB

Шаблонное эталонное дерево

Таблица 2.6 Таблица ЛАБОРАТОРНАЯ_РАБОТА

Название метода (свойства)

Тип возвращаемого значения

Описание

Номер_лабораторной_работы

int

Первичный ключ - уникальный идентификатор

Номер_задания

int

Внешний ключ - идентификатор задания

Условие

varchar(MAX)

Сгенерированное условие варианта задания

Номер_обучаемого

int

Внешний ключ - идентификатор обучаемого

Эталонное_дерево

BLOB

Дерево эталонной программы в формате XML

Оценка

int

Балл за выполнение лабораторной работы

Навык

int

Оценка навыка программиста

2.6 Общий алгоритм программного продукта

В табл. 2.7-2.16 приведены сведения об основных классах системы, их взаимодействии, методах и свойствах. Диаграмма классов представлена в приложении 1.

IntelleSense - класс, реализующий вспомогательное всплывающее окно (табл. 2.7).

Таблица 2.7 IntelleSense

Название метода (свойства)

Тип возвращаемого значения

Описание

Type

IntelleSenseType

Тип всплывающего окна

Close

void

Закрытие всплывающего окна

Do

void

Выполнение действий в зависимости от типа

IsOpen

boolean

Проверка на открытость окна

Open

Открытие всплывающего окна

Presenter - один из классов, реализующих паттерн «Модель-Вид-Презентер», перехватывающих события семантического редактора, осуществляющий проверку вводимых данных и вызывающий изменения в семантической модели и отображении (табл. 2.8).

Таблица 2.8 Presenter

Название метода (свойства)

Тип возвращаемого значения

Описание

BackspaceSymbol

void

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

ColorRun

void

Изменяет цвет элемента в зависимости от типа

DeleteSymbol

void

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

Error

void

Выводит сообщение об ошибке в строку состояния

GetLineNumber

int

Возвращает номер строки, на которой находится элемент

InsertEnter

void

Вставляет новый пустой оператор

InsertNewOperator

void

Анализирует введенное ключевое слово, создает минимальное тело нового оператора

InsertSymbol

void

Вставляет символ в выражение, предварительно проверив корректность вставки

LoadProgram

void

Загружает сохраненную программу

MoveTabs

void

Устанавливает курсор на первое слово оператора в случае щелчка мыши по символу табуляции

SaveProgram

void

Сохраняет текущую программу

FormEditor - главная форма программы, содержащая текстовый редактор, таблицу ошибок, дерево проекта, консоль, панель инструментов, меню и строку состояния (табл. 2.9). Текстовый редактор является видом в паттерне «Модель-Вид-Презентер».

Таблица 2.9 FormEditor

Название метода (свойства)

Тип возвращаемого значения

Описание

сursorRun

Run

Элемент, на который необходимо установить курсор

dictionary

LangDictionary

Текущий словарь

paragraph

Paragraph

Текущий параграф

Project

SemanticTree

Семантическое дерево программы

selectedOperators

List<Operator>

Список выделенных операторов

SetTabHeader

void

Устанавливает заголовок программы

SemanticTree - один из классов, реализующих паттерн «Модель-Вид-Презентер». Является моделью данных - семантическим деревом (табл. 2.10).

Таблица 2.10 SemanticTree

Название метода (свойства)

Тип возвращаемого значения

Описание

Path

string

Полный путь к файлу программы

Root

Operator

Корневой элемент семантического дерева

DeleteOperator

void

Удаляет указанный оператор(-ы) из семантического дерева

GetOperator

Operator

Возвращает оператор, содержащий указанный элемент

InsertOperator

void

Вставляет новый оператор

ReplaceOperator

void

Заменяет существующий оператор новым оператором

LangDictionary - класс, представляющий собой список определенных словарей (табл. 2.11).

Таблица 2.11 LangDictionary

Название метода (свойства)

Тип возвращаемого значения

Описание

Dictionary

Dictionary<string, string>

Используемый словарь

English

Dictionary<string, string>

Словарь английских ключевых слов

Russian

Dictionary<string, string>

Словарь русских ключевых слов

SetDictionary

void

Устанавливает используемый словарь

Memory - абстрактный класс, реализующий модель памяти системы. Наследники данного класса - Heap и Stack

Таблица 2.12 Memory

Название метода (свойства)

Тип возвращаемого значения

Описание

Arrays

List<RunningArray>

Список объявленных массивов

Variables

List<RunningVariable>

Список объявленных переменных

Clear

void

Очищает память

GetArrayValue

string

Возвращает значение элемента массива

GetVariableValue

string

Возвращает значение переменной

SetArrayValue

void

Устанавливает значение элемента массива

SetVariableValue

void

Устанавливает значение переменной

Parser - статический класс, реализующий функции синтаксического разбора выражений (табл. 2.13).

Таблица 2.13 Parser

Название метода (свойства)

Тип возвращаемого значения

Описание

ParseArray

string

Разбирает индекс массива

ParseExpression

string

Разбирает выражение

ParseFunction

string

Разбирает вызов функции

ParseParametrs

string

Разбирает параметры функции

Interpreter - класс, реализующий интерпретатор языка высокого уровня (табл. 2.14).

Таблица 2.14 Interpreter

Название метода (свойства)

Тип возвращаемого значения

Описание

CurrentOperator

Operator

Интерпретируемый оператор

Call

void

Вызов функции

Error

void

Выдает сообщение об ошибке времени выполнения

Operator - абстрактный класс, представляющий собой базовый класс для всех операторов языка программирования высокого уровня (табл. 2.15).

Таблица 2.15 Operator

Название метода (свойства)

Тип возвращаемого значения

Описание

Assignment

Run

Элемент присваивания “:=”

BodyWord

Run

Элемент, после которого должна происходить вставка элементов тела оператора

Child

Operator

Дочерний оператор

EndEnterWord

Run

Элемент, после которого происходит переход на новую строку следующего оператора

EndNameWord

Run

Элемент, повторяющий имя NameWord в конце оператора

EndWord

Run

Ключевое слово «конец»

EnterWord

Run

Элемент, после которого происходит переход на новую строку внутрь тела оператора

Expression

Run

Выражение (значение справа)

FirstWord

Run

Первый элемент. По умолчанию - ключевое слово KeyWord

KeyWord

Run

Ключевое слово оператора

Left

Run

Значение слева в операторе присваивания

NameWord

Run

Имя оператора

Next

Operator

Следующий оператор

Previous

Operator

Предыдущий оператор

SelectionWord

Run

Элемент, выделяемый при вставке нового оператора

SpaceWord

Run

Пробел

Type

Run

Тип объекта

ChangeRun

void

Изменяет текст элемента

Clone

Operator

Создает копию оператора

FindParent

Operator

Возвращает родителя оператора

HasRun

boolean

Проверяет, принадлежит ли элемент оператору

Interpret

void

Виртуальный метод интерпретации оператора

isEditable

boolean

Проверяет возможность редактирования указанного элемента

Классы-наследники базового класса Operator представлены в таблице 2.16.

Таблица 2.16 Классы-наследники базового класса Operator

Название класса

Описание

NullOperator

Пустая строка

Module

Объявление модуля

Function

Объявление функции

Procedure

Объявление подпрограммы

Variable

Объявление переменной

Constant

Объявление константы

Else

Оператор «иначе»

Do

Цикл с предусловием

Return

Выход из функции с возвратом значения

If

Ветвление

Assign

Присвоение

Call

Вызов функции или подпрограммы

Array

Объявление массива

Record

Объявление группы

2.7 Руководство пользователя

Главная форма программы представлена на рис 2.2.

Форма содержит меню, панель управления, строку состояния и разделена на четыре области: семантический редактор, семантическое дерево, список ошибок и консоль.

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

Рис. 2.2. Главная форма системы.

На рисунке 2.3 представлено меню пользователя.

Рис. 2.3. Меню «Файл».

Чтобы сохранить программу, необходимо нажать Файл->Сохранить и выбрать путь для сохранения. Для загрузки XML файла программы, необходимо нажать Файл -> Загрузить и выбрть файл программы. Чтобы выйти из системы нужно нажать Файл -> Выйти или кликнуть на кнопке X в правом верхнем углу формы.

На рисунке 2.4 представлена панель управления пользователя

Рис. 2.4. Панель управления.

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

На рисунке 2.5. представлена строка состояния

Рис. 2.5. Строка состояния.

В строке состояния выводятся все ошибки, подсказки и уведомления, связанные с семантикой программы. На рисунке 2.6. представлено семантическое дерево программы. Оно демонстрирует работу модели внутри программы и служит для наглядного представления программы.

Рис. 2.5. Семантическое дерево программы.

На рисунке 2.6 представлен семантический редактор.

Рис. 2.6. Семантический редактор.

Для ввода оператора необходимо набрать ключевое слово оператора (подраздел 1.1.1):

Рис. 2.7. Добавление оператора «функция».

Чтобы удалить оператор, необходимо поставить курсор на любое ключевое слово оператора, либо выделить оператор целиком и нажать кнопку Del или Backspace. Оператор «модуль» удалять нельзя. При нажатии Del или Backspace на ключевом слове оператора, открывается подсказчик, который позволяет выбрать полное удаление оператора, либо замену оператора его телом (рис. 2.8).

Рис. 2.8. Интеллектуальный подсказчик при удалении.

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

Рис. 2.9. Интеллектуальный подсказчик при вводе ключевого слова.

Навигация между элементами подсказчика осуществляется стрелками вверх и вниз; при нажатии на любые другие кнопки подсказчик закрывается. При удалении выделенных операторов операторы удаляются сразу и целиком. Удаление пустых операторов происходит без подсказчика.

Чтобы добавить новый пустой оператор, необходимо нажать клавишу Enter. В зависимости от положения курсора новый оператор будет вставлен до или после оператора или как первый или последний дочерний элемент (рис 2.10, а-г).

а) б) в) г)

Рис 2.10. Вставка нового пустого оператора (а - первым дочерним элементом; б - последним дочерним элементом; в - до оператора; г - после оператора)

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

При выделении части оператора выделяется оператор целиком вместе с его телом. Невозможно выделить или удалить часть оператора. Все манипуляции происходят только с оператором целиком.

Для копирования выделенного текста или оператора(-ов) необходимо нажать комбинацию клавиш Ctrl+C. Для вставки - Ctrl+V. Существует возможность вырезать оператор с помощью комбинации Ctrl+X.

При наборе программы на русском языке символы [, ], |, <, >, `, “ могут быть набраны без переключения раскладки клавиатуры с помощью комбинации Ctrl+совпадающий русский символ. Переключение языка производиться с помощью выпадающего списка панели инструментов (рис. 2.11).

Рис 2.11. Переключение языка.

Область «Консоль» служит для вывода данных программы (рис. 2.12).

Рис 2.12. Консоль.

Таблица «Ошибки» содержит описание семантических ошибок программы (рис. 2.13). Одновременно с занесением ошибки в таблицу редактор красным цветом выделяет ошибки в коде.

Рис 2.12. Семантическая ошибка системы.

2.8 Сообщения системы

При работе в редакторе все ошибки выдаются в строке состояния на красном фоне. Список возможных ошибок приведен в таблице 2.17.

Таблица 2.17 Возможные ошибки

Ошибка

Необходимое действие

Нельзя удалить модуль

Удалить тело модуля

Нельзя редактировать ключевое слово

Проверить, не стоит ли курсор на ключевом слове, и сдвинуть к ближайшему редактируемому элементу

Некорректное имя

Проверить введенное имя переменной. Имя может состоять из букв, цифр и символа «_» и должно начинаться с буквы

Нельзя удалять ключевые слова и пробелы

Если необходимо удалить оператор, нажать клавишу Del или Backspace на ключевом слове, либо на выделенном операторе

Нельзя вставить строку

Найти ближайший оператор, до или после которого можно вставить строку

XML файл поврежден

Постараться проверить XML и исправить ошибки, после чего загрузить повторно

This program request Microsoft .NET Framework v 4.0

Установите необходимую платформу, согласно подразделу 2.3.

3. ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ

Проверка программного продукта должна доказать правильность выполнения следующих операций:

· построение семантического дерева путем ввода конструкций;

· сохранение и загрузка программы;

· изменение языка программы;

· выполнение программы.

Проверка семантического редактора:

1. Запустить программу IDE.exe, откроется главная форма программы
(см. рис. 2.2).

2. Ввести в пустую строку после главной функции ключевое слово «переменная», после вставки оператора задать тип = «целое», имя_переменной = «и».

3. Нажать Enter на последнем слове оператора «переменная».

4. Ввести в пустую строку после переменной ключевое слово «присвоить», после вставки оператора задать имя_переменной = «и», выражение = «1». Два раза нажать Enter на последнем слове оператора «присвоить».

5. Ввести ключевое слово «цикл», после вставки оператора задать
выражение = «и < 10». Набор символа «<» произвести с помощью русской раскладки клавиатуры нажатием Ctrl+б.

6. Ввести в пустую строку после заголовка цикла ключевое слово «вывести», после вставки оператора задать выражение = «стр(и) + “! = ” + стр(Факториал(и)) + “\n”». Символы “,”,\ ввести с помощью русской раскладки клавиатуры.

7. Ввести ключевое слово «переменная», после вставки оператора задать тип = «целое», имя_переменной = «и».

8. Нажать Enter на последнем слове оператора «вывести».

9. Выделить ключевое слово «присвоить», скопировать в буфер обмена нажатием клавиш Ctrl+C, установить курсор последней вставленной пустой строке и вставить скопированный оператор нажатием Ctrl+V. После вставки оператора задать выражение = «и+1».

10. Два раза нажать Enter на последнем слове оператора «функция Главная».

11. Ввести ключевое слово «функция», после вставки оператора задать
тип = «целое», имя_функции = «Факториал», аргументы = «целое б».

12. Нажать Enter на последнем слове заголовка оператора «функция Факториал».

13. Ввести ключевое слово «если», после вставки оператора задать
выражение = «б == 0».

14. Ввести в пустую строку после заголовка ветвления ключевое слово «вернуть», после вставки оператора задать выражение = «1».

15. Нажать Enter на последнем слове оператора «если».

16. Ввести ключевое слово «вернуть», после вставки оператора задать
выражение = «Факториал(б - 1) * б».

17. Введена программа вычисления факториала для чисел [1;9].

18. Выполнить программу, нажав кнопку «Запуск».

19. В консоли выведется:

1! = 1

2! = 2

3! = 6

4! = 24

5! = 120

6! = 720

7! = 5040

8! = 40320

9! = 362880

20. Сохранить введенную программу, нажав Файл -> Сохранить и выбрав путь к файлу. Убедиться, что файл создан. Проверить структуру XML файла.

21. Загрузиться тестовый пример из папки с системой, нажав Файл -> Загрузить и выбрав файл «Пузырьковая сортировка.xml». В семантическом редакторе появится загруженная программа, а в справа отобразится семантическое дерево.

22. Выполнить программу, нажав кнопку «Запуск».

23. В консоли в первой строчке выведется десять случайных целых чисел из диапазона [0;50]. Во второй строчке выведутся эти же числа, отсортированные в порядке возрастания

24. Внести изменения в программу, поменяв выражение в операторе «если» на «а[и1] < а[ж]».

25. Выполнить программу, нажав кнопку «Запуск».

26. Система выдаст ошибку: «Переменная "и1" не объявлена» и выделит красным цветом исправленное выражение.

27. Заменить «и1» в выражении на и.

28. Выполнить программу, нажав кнопку «Запуск».

29. В консоли в первой строчке выведется десять случайных целых чисел из диапазона [0;50]. Во второй строчке выведутся эти же числа, отсортированные в порядке убывания.

30. Изменить язык, выбрав «English» в выпадающем списке панели инструментов.

31. Все ключевые слова и встроенные типы данных станут английскими. Названия операторов и имена переменных останутся русскими.

32. Закрыть систему, нажав Файл -> Выйти.

33. Тест завершен.

Заключение

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

· простой интерфейс с поддержкой русского языка;

· отображение динамических подсказок;

· автоматическое форматирование текста;

· язык высокого уровня;

· семантическая модель программы;

· семантический редактор как основа интегрированной среды для обучения;

· интерпретатор языка высокого уровня.

Применение данной системы при обучении программированию позволит повысить уровень подготовки программистов и снизить трудозатраты на подготовку и проверку лабораторных работ.

Разработанный проект получил грант Фонда содействия развитию малых форм предприятий в научно-технической сфере «УЧАСТНИК МОЛОДЕЖНОГО НАУЧНО-ИННОВАЦИОННОГО КОНКУРСА» (У.М.Н.И.К.) на реализацию в 2011 году.

По теме проекта опубликовано четыре научных статьи.

Планируется внедрение разрабатываемой системы на кафедре АСОИУ АГТУ.

Литература

1. Лаптев В.В., Толасова В.В. Язык программирования для обучения. // Вестник Астраханского государственного технического университета. Серия: Управление, вычислительная техника и информатика. Научный журнал, № 1/2009. - Астрахань: Издательство АГТУ, 2009 г., с.178-182.

2. Лаптев В.В., Толасова В.В. Требования к обучающей среде для обучения программированию // Инновационные технологии в управлении, образовании, промышленности «АСТИНТЕХ-2010» [Текст]: материалы Международной научной конференции 11-14 мая 2010г.: в 3 т. - Астрахань: Астраханский государственный университет, Издательский дом «Астраханский университет», 2010. - Т.1. - 206 с., с. 46-49.

3. Лаптев В.В., Тырнава Али, Толасова В.В. Об унификации агрегатных типов данных при обучении программированию. // Вестник Астраханского государственного технического университета. Научный журнал, № 4(39)/2007. - Астрахань: Изд-во АГТУ, 2007 г., с.216-221 .

4. Вирт Н. Построение компиляторов - М.: ДМК Пресс, 2010. - 192с.

5. Павловская Т.А. C#. Программирование на языке высокого уровня. Учебник для вузов. - СПб.: Питер, 2007.

6. Фаулер М., Скотт К. UML. Основы / Пер. с англ. - СПб: Символ-Плюс, 2002. - 192 с., ил.

7. Троелсен. Э. С# и платформа .NET. Библиотека программиста - СПБ.: Питер, 2004. - 796с.

8. Мак-Дональд М. Windows Presentation Foundation в .NET 3.5 с примерами на C# 2008 для профессионалов. Expert's Voice / Пер. с англ. - Вильямс, 2008 - 1020 с.

9. Станек У. Р. Microsoft SQL Server 2005. Справочник администратора / Пер. с англ. - М.: Издательство «Русская Редакция», 2008. - 544 с.: ил.

Приложение 1. Диаграмма классов

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.