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

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    918,71 Кб
  • Опубликовано:
    2012-06-06
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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















Дипломная работа

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

СОДЕРЖАНИЕ

 

Введение

. Технический проект

.1 Описание предметной области

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

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

.1.3 Модели оценки программы и навыка программиста

.1.4 Генерация вариантов заданий на основе шаблонов

.2 Технология обработки информации

.2.1 Входные и выходные данные

.2.2 Пользователи системы

.2.3 Варианты использования системы

.3 Информационно-логическая модель системы

.3.1 Структура и содержание входных и выходных данных

.3.2 Процесс обработки информации

.3.3 Требования к интерфейсу пользователя

.4 Требования к техническому и программному обеспечению

. Рабочий проект

.1 Общие сведения о работе системы

.2 Функциональное назначение

.3 Установка и выполнение программного продукта

.4 Описание структуры системы

.5 Даталогическая модель системы

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

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

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

. Программа и методика испытаний

Заключение

Литература

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

Введение

По прогнозам Министерства образования и науки РФ в ближайшие пять лет ожидается сокращение численности студентов высших учебных заведений. Одновременно с этим по результатам исследований аналитического центра REAL-IT потребность в IT-специалистах в ближайшие пять лет продолжит расти, а в случае модернизационного сценария развития российской экономики при текущем уровне выпуска вузов потребность в IT-специалистах станет неудовлетворительной, что сделает невозможным такой сценарий. Организовать выпуск IT-специалистов, удовлетворяющий потребности государства, можно только путем автоматизации процесса обучения.

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

На данный момент одной из серьезнейших проблем при обучении программированию является проверка выполненной студентом работы.
В лучшем случае эта проверка осуществляется в два этапа. На первом этапе проверяется правильность выполнения программы посредством проверки выходных данных на тестовых наборах входных. Если программа прошла все тесты, то преподаватель вручную проверяет структуру написанной программы с целью выявить недостатки стиля или неэффективности реализации. Окончательная оценка выполненной работы возможна только по результатам ручной проверки. Такая проверка занимает много времени, однако обойтись без нее нельзя, потому что если, например, поставлена задача, реализовать пузырьковую сортировку, то программист может не реализовать необходимый код, а просто вызвать стандартную процедуру быстрой сортировки, и такая программа гарантированно пройдет все тесты. Таким образом, без ручной проверки структуры программы для оценки ее корректности и качества обойтись нельзя. Поэтому актуальной является задача автоматизации процесса проверки лабораторных работ.

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

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

автоматизация обучение программист интегрированная среда

1. Технический проект

 

1.1 Описание предметной области


Интегрированная среда разработки <#"551733.files/image001.jpg">

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

Операторы ввода и вывода объявлены в отдельном модуле с минимальным необходимым набором операций ввода/вывода.

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

 

1.1.2 Интерпретатор языка высокого уровня

Интерпретатор языка программирования <#"551733.files/image002.gif"> xк. Очевидно, что параметр K зависит от параметров xн и xк , и имеет естественную нижнюю границу 1 (при xн = xк - в данном случае будет K одинаковых чисел), но верхняя может быть любой - она и будет являться параметром.

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

1.  Осуществить ввод с клавиатуры;

2.      Сгенерировать случайным образом;

3.      Осуществить ввод из текстового (или бинарного) файла;

4.      Задать в качестве параметра командной строки.

Тип случайных чисел может быть задан целый или дробный, тип файла - текстовый или двоичный. Кроме того, имя файла можно задавать самыми разнообразными способами: ввод имени с клавиатуры, как параметр командной строки, как параметр определяемой функции, генерации случайной строки символов и т.п. - все зависит от фантазии преподавателя.

Таким образом, параметры делятся на два вида: параметр-текст и параметр-число. Конкретный вариант параметра-текста всегда выбирается (возможно, случайным образом) из некоторого фиксированного набора значений. Конкретный вариант числового параметра может быть выбран как из множества значений, так и вычислен с помощью некоторой функции.

Пусть в шаблоне определено n параметров и пусть количество значений параметра pi равно mi. Тогда максимальное количество вариантов, которая может сгенерировать система по шаблону, определяется известной формулой:

 (1.1)

Реально количество вариантов будет меньше, поскольку некоторые параметры зависят друг от друга. Например, параметр K зависит от параметров xн и xк. Можно установить и специальные ограничения значения K, включить этот способ получения для xн и xк. Тем не менее, количество вариантов остается достаточно большим. Рассмотрим полный список параметров приведенного выше задания:

1)  p1: тип входного файла; m1 = 2;

2)      p2: способ задания имени файла; m2 = 2;

3)      p3: способ ввода K; K > 0; m3 = 4;

4)  p4: способ ввода xн и xк; xн  xк; m4 = 4;

5)      p5: тип случайных чисел; m5 = 2;

6)      p6: тип выходного файла; m6 = 2;

7)      p7: способ задания имени файла; m7 = 5;

8)      p8: способ обработки значений; m8 = 20.

Количество вариантов обработки значений соответствует количеству вариантов заданий в сборниках задач и упражнений В.В.Лаптева (20 вариантов), Т.А. Павловской (20 вариантов), Эпштейна (24 варианта), что означает, что такого количества вариантов заданий достаточно для всех студентов группы.

Параметр p7 имеет большее количество вариантов, чем аналогичный параметр p2, так как имя выходного файла можно формировать еще одним образом: модифицировать имя входного файла. Кроме того, модно определить дополнительный параметр, зависящий от типов файлов: если файлы оба двоичные то можно обрабатывать два файла, а можно - единственный, который и является входным и выходным. Таким образом, к списку параметров добавляется следующий параметр:

p9: количество файлов; p1 = p6 = “двоичный”; m9 = 2.

Таким образом, имеем (без учета параметра p9):

N =

С учетом параметра p9 к этому числу добавляется следующее количество вариантов:


Это - теоретический максимум. При условиях m3 = 4 и m4 = 3 (параметр p4 обязательно задается способом, не совпадающим со способом задания параметра p3), m2 = 4 и m7 = 4 (параметр p7 обязательно задается способом, не совпадающим со способом задания параметра p2) имеем N = 15360. Но даже если из-за зависимостей параметров нам придется ограничиться только 100 вариантами - этого с лихвой хватит, чтобы задать каждому студенту индивидуальный вариант. Понятно, что при индивидуальном обучении студент, выполнивший хотя бы половину подобных заданий, приобретет устойчивый навык написания подобных программ.

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

Предположим, у нас в наличии имеется 10 базовых математических функций. В данном случае случайным образом можно задать количество слагаемых генерируемой функции, коэффициенты арифметического выражения, выбор функции в качестве слагаемого, а также сложность слагаемого, то есть глубина вложенности функции (сложность функции).

Если функция имеет аргумент x, то ее сложность равна 0 (сложной она не является).

Если же аргумент функции представляет собой другую математическую функцию, то ее сложность равна 1.

Учитывая все факторы генерации случайной функции, получим следующие параметры:

1)  p1: количество слагаемых; m1 = 4;

2)      p2: количество базовых функций; m2 = 10;

3)      p3: сложность функции; m3 = 2;

4)      p4: длина диапазона значений коэффициентов; m4 = 100;

5)  p5: максимальное количество коэффициентов базовой функции; m5 = 3.

По формуле (1.1) получаем следующее число вариантов:

N =

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

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

 

1.2 Технология обработки информации


Система состоит из четырех компонентов: семантического редактора, интерпретатора, модуля оценки и модуля генерации вариантов заданий. Диаграмма процесса работы автоматизированной системы представлена на рис. 1.2.

В ходе работы с модулем генерации вариантов лабораторных работ преподаватель оформляет условие задачи в виде шаблона, задает ограничения и реализует эталонное решение задачи.

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

Затем модуль оценки корректности программы проверяет написанную программу путем тестирования и сравнения семантического дерева обучаемого с семантическим деревом эталонной программы, ищет ошибки и выставляет итоговый балл.

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

Рис. 1.2 Диаграмма активностей системы

 

1.2.1 Входные и выходные данные

В систему от пользователей поступают следующие входные данные:

1.  Шаблоны заданий на лабораторные работы.

2.      Эталонные решения заданий преподавателя.

.        Решение лабораторной работы обучаемым.

.        Сохраненные файлы программ в формате XML.

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

Входные данные семантического редактора представлены в таблице 1.1.

Таблица 1.1 Входные данные семантического редактора

Название

Описание

Ключевые слова

Зарезервированные слова языка, которые нельзя использовать в качестве имен переменных. При вводе ключевого слова происходит вызов соответствующего сниппета и вставляется семантическая конструкция. Также осуществляется проверка на возможность вставки в данном месте программы.

Выражения

Арифметические или логические выражения. После ввода выражения осуществляется проверка на корректность выражения и соответствие типа.

Типы данных

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


Выходными данными системы являются:

1.  Варианты заданий на лабораторную работу.

.    Семантическое дерево программы, которое может быть сохранено на диск в формате XML.

.    Результат выполнения лабораторной работы.

4.      Статистика за период обучения программированию.

Все выходные данные визуализируются с помощью GUI-интерфейса в удобном для пользователей виде.

 

1.2.2 Пользователи системы

Основными потенциальными пользователями системы являются:

·  преподаватель;

·        обучаемый (школьник, студент и т.д.).

Преподаватель подготавливает лабораторные работы путем создания шаблонов заданий лабораторных работ и реализации эталонных решений для этих заданий. Также он может просматривать статистику по обучаемым: количество выполненных лабораторных работ, оценки, график изменения навыка программиста и т.д.

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

 

1.2.3 Варианты использования системы

Модель вариантов использования системы представлена на рис. 1.3. Описание сценариев для каждого варианта использования системы представлено в таблицах 1.2-1.5.

Рис. 1.3. Модель вариантов использования системы

Таблица 1.2 Варианты использования семантического редактора

Название

Пользователь

Сценарий

Добавить конструкцию

Обучаемый

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

Удалить конструкцию

Обучаемый

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

Редактировать выражение

Обучаемый

Обучаемый строит арифметическое или логическое выражение, используя объекты, переменные, вызовы функций и простейшие, арифметические и логические операции, а также скобки.

Сохранить программу

Обучаемый

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

Загрузить программу

Обучаемый

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


Таблица 1.3 Варианты использования интерпретатора

Название

Пользователь

Сценарий

Выполнить программу

Обучаемый

Обучаемый запускает программу на выполнение. Программа запускается только в случае отсутвия ошибок, возникших на этапе написания программы.


Таблица 1.4 Варианты использования модуля оценки

Название

Пользователь

Сценарий

Сдать работу

Обучаемый

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

Проанализировать ошибки

Обучаемый

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


Таблица 1.5 Варианты использования модуля генерации вариантов заданий

Название

Пользователь

Сценарий

Получить задание на лабораторную работу

Обучаемый

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

Добавить задание

Преподаватель

Преподаватель создает новую тему лабораторной работы, оформляет шаблон задания и реализует эталонное решение.

Редактировать задание

Преподаватель

Преподаватель редактирует тему лабораторной работы, шаблон задания, эталонное решение.

Удалить задание

Преподаватель

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


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

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

На рисунке 1.4 приведена диаграмма последовательностей для варианта использования «Добавить конструкцию».

Рис. 1.4. Диаграмма последовательностей для варианта «Добавить конструкцию».

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

 

1.3 Информационно-логическая модель системы


На основании исследования предметной области, а также определения основных функциональных особенностей проектируемой системы можно выделить следующие сущности:

1. Обучаемый.

2.      Группа.

.        Преподаватель.

.        Задание.

.        Лабораторная работа.

Сущность «Обучаемый» содержит информацию об имени, фамилии, отчестве обучаемого, группе и имени пользователя.

Сущность «Группа» содержит информацию о названии группы.

Сущность «Преподаватель» содержит информацию об имени, фамилии, отчестве преподавателя и его имени пользователя.

Сущность «Задание» содержит информацию о теме лабораторной работы, номере, шаблоне условия и эталонном семантическом дереве.

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

На основании исследования семантического редактора и интерпретатора системы можно выделить следующие сущности:

6.  Поле семантического редактора.

7.      Презентер.

.        Семантическое дерево.

.        Словарь.

.        Интерпретатор.

11._______________________________________________________ Память:

·  куча;

·        стек.

12._______________________________________________________ Анализатор выражений.

13.    Оператор и его виды:

·  модуль;

·        функция;

·        процедура;

·        переменная;

·        константа;

·        массив;

·        вызов функции;

·        присвоение;

·        условие;

·        иначе;

·        цикл;

·        возврат из функции;

·        группа;

·        пустой оператор.

Сущность «Поле семантического редактора» содержит информацию о семантических конструкциях, порядке их следования и форматировании, а также методы редактирования текста.

Сущность «Презентер» содержит методы проверки корректности вставки и удаления элементов семантического поля и методы вставки, редактирования и удаления семантических конструкций.

Сущность «Семантическое дерево» содержит информацию о коренном узле (модуле) и методы поиска, вставки, удаления, редактирования и замены оператора или группы операторов.

Сущность «Словарь» содержит словари ключевых слов, встроенных типов и значений по умолчанию, используемых семантическим редактором.

Сущность «Интерпретатор» содержит информацию о текущем интерпретируемом операторе и методы передачи управления при ветвлении, цикле и вызове функции. Сущность «Память» содержит информацию об объявленных переменных, методы создания, чтения, записи и удаления объектов. Данная сущность является абстрактной и от нее наследуются сущности «Куча» и «Стек». «Куча» является глобальной областью памяти, формируемой в процессе объявления объектов и очищаемой в конце работы программы. «Стек» является локальной областью памяти и создается заново для каждого вызова функции.

Сущность «Анализатор выражений» содержит методы синтаксического разбора выражений.

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

Диаграмма «сущность-связь» (entity-relationship) представлена на рис. 1.5.

Рис. 1.5. Диаграмма «сущность-связь» (ERD).

 

1.3.1 Структура и содержание входных и выходных данных

 

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

Корневым элементом XML файла является модуль:

<модуль атрибуты>

</модуль>

Все остальные операторы представляются в виде XML-элементов и вкладываются в корневой элемент и друг в друга согласно порядку в семантическом дереве. Названием элемента считается ключевое слово, а все остальные элементы сохраняются в виде атрибутов.

Пример XML файла для алгоритма пузырьковой сортировки:

<?xml version="1.0" encoding="utf-16"?>

<модуль NameWord="ПузырьковаяСортировка">

<константа Type="целое" Expression="10" NameWord="размер"></константа>

<массив Type="целое" NameWord="а" Size="размер"></массив>

<пустая_строка></пустая_строка>

<функция Type="логическое" Expression="" NameWord="ИнициализацияМассива">

<переменная Type="целое" NameWord="и"></переменная>

<присвоить Left="и" Expression="0"></присвоить>

<цикл Expression="и &lt; 10" BodyWord="и &lt; 10">

<присвоить Left="а[и]" Expression="Рандом(0, 50)"></присвоить>

<вывести Expression="стр(а[и]) + &quot; &quot;"></вывести>

<присвоить Left="и" Expression="и + 1"></присвоить>

</цикл>

<вывести Expression="&quot;\n&quot;"></вывести>

</функция>

<пустая_строка></пустая_строка>

<процедура Expression="" NameWord="Сортировка">

<переменная Type="целое" NameWord="и"></переменная>

<переменная Type="целое" NameWord="ж"></переменная>

<присвоить Left="и" Expression="0"></присвоить>

<цикл Expression="и &lt; 10" BodyWord="и &lt; 10">

<присвоить Left="ж" Expression="и + 1"></присвоить>

<цикл Expression="ж &lt; 10">

<если Expression="а[и] &gt; а[ж]">

<переменная Type="целое" NameWord="временная"></переменная>

<присвоить Left="временная" Expression="а[ж]"></присвоить>

<присвоить Left="а[ж]" Expression="а[и]"></присвоить>

<присвоить Left="а[и]" Expression="временная"></присвоить>

</если>

<присвоить Left="ж" Expression="ж + 1"></присвоить>

</цикл>

<присвоить Left="и" Expression="и + 1"></присвоить>

</цикл>

</процедура>

<пустая_строка></пустая_строка>

<процедура Expression="" NameWord="Распечатать">

<переменная Type="целое" NameWord="и"></переменная>

<присвоить Left="и" Expression="0"></присвоить>

<цикл Expression="и &lt; 10 ">

<вывести Expression="стр(а[и]) + &quot; &quot;"></вывести>

<присвоить Left="и" Expression="и + 1"></присвоить>

</цикл>

</процедура>

<пустая_строка></пустая_строка>

<процедура Expression="" NameWord="Главная">

<вызвать Expression="ИнициализацияМассива()"></вызвать>

<вызвать Expression="Сортировка()"></вызвать>

<вызвать Expression="Распечатать()"></вызвать>

</процедура> </модуль>

 

1.3.1.2 Шаблон задания на лабораторную работу

Шаблон задания представляет собой список параметров, заключенных между знаками '<' и ‘>’. Например, шаблон <type_variable> характеризует тип переменной, генерируемой программой, а шаблон <size, begin, end> означает генерацию целого положительного числа в интервале [begin; end].

Пример шаблона задания для темы «Функции»:

Написать программу для нахождения значения цепочно-заданной функции:
f(x) = { <FUNCTION>, x меньше <NUMBER, begin, end>; <FUNCTION>, x >= <SIZE, begin, end> }. Переменная x <TYPE_VARIABLE> типа и следует задать её с помощью <TYPE_INPUT>.

 

1.3.2 Процесс обработки информации

Процесс обработки информации разделяется на следующие этапы:

1.  Запустить процесс генерации варианта задания на основе выбранной обучаемым темы и получить в результате конкретное условие и эталонное дерево.

2.      Запустить процесс проверки лабораторной работы путем тестирования, проверки ограничений и сравнения семантических деревьев и получить в результате решение о корректности решения.

3.  В случае некорректности решения выдать обучаемому уведомления о допущенных ошибках.

4.      В случае корректности решения вычислить итоговый балл и записать информацию и выполнении лабораторной работы в базу данных.

 

1.3.3 Требования к интерфейсу пользователя

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

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

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

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

 

1.4 Требования к техническому и программному обеспечению


Требования к техническому обеспечению:

x86-совместимый процессор с тактовой частотой не ниже 1 GHz;

оперативная память объемом не менее 256 MB;

монитор SVGA (предпочтительнее широкоформатный);

клавиатура;

мышь.

Требования к программному обеспечению: операционная система Microsoft Windows 2000/XP/2003/Vista/7; программная платформа Microsoft .NET Framework 4.0.

2. Рабочий проект

 

2.1 Общие сведения о работе системы


Система состоит из нескольких файлов, описание основных приведено в табл. 2.1.

Таблица 2.1 Файлы, составляющие систему

Имя файла

Назначение

IDE.exe

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

WPFToolkit.dll

Библиотека компонента интерфейса Data Grid

IronPython.dll IronPython.Modules.dll Microsoft.Dynamic.dll Microsoft.Scripting.dll Microsoft.Scripting.Metadata.dll

Библиотеки, необходимые для подключения интерпретатора Iron Python’а.

Пузырьковая сортировка.xml

XML файл тестовой программы

dotNetFx40_Full_x86_x64.exe

Платформа .NET Framework 4.0 Client Profile


Требования к техническому обеспечению:

x86-совместимый процессор с тактовой частотой не ниже 1 GHz;

оперативная память объемом не менее 256 MB;

монитор SVGA (предпочтительнее широкоформатный);

клавиатура;

мышь.

Требования к программному обеспечению:

операционная система Microsoft Windows 2000/XP/2003/Vista/Seven;

программная платформа Microsoft .NET Framework 4.0.

Разработка данного проекта выполнялась на языке программирования C# с помощью следующих программных продуктов:

интегрированная среда разработки Microsoft Visual Studio 2010 Ultimate;

программная платформа Microsoft .NET Framework 4.0;

среда для дизайна интерфейсов Microsoft Expression Blend 4;

клиент для работы с репозитарием исходного кода TortoiseHG 2.0.5;

текстовый редактор с подсветкой исходного кода Notepad++ 5.9.

 

2.2 Функциональное назначение


Система обладает следующими функциональными возможностями:

загрузка программы:

валидация XML файла;парсинг во внутренний формат программы;

сохранение программы в формате XML.

выполнение программы интерпретатором;

анализ семантических ошибок;

анализ ошибок времени выполнения;

добавление конструкции:

проверка на корректность вставки;

автоматическое табулирование текста

удаление конструкции;

удаление оператора целиком;

замена оператора его телом.

редактирование выражений:

определение типа выражения;

валидация выражения;

автоматическая табуляция выражения.

выбор языка:

русский язык;

английский язык.


Для использования исполняемого модуля системы пользователю необходимо разместить относящиеся к системе файлы в какой-либо папке на жестком диске своего компьютера. Если на компьютере пользователя еще не установлена платформа Microsoft .NET Framework 4.0, то ее необходимо установить. Она доступна для свободной загрузки с официального сайта компании Microsoft по адресу: <#"551733.files/image011.jpg">

Рис 2.1. Структура базы данных.

В табл. 2.2-2.6 приведено описание таблиц используемой базы данных.

Таблица 2.2 Таблица ГРУППА

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

Тип данных

Описание

Номер_группы

int

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

Название

varchar(MAX)

Имя группы


Таблица 2.3 Таблица ОБУЧАЕМЫЙ

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

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

Описание

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

int

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

Номер группы

int

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

ФИО

varchar(MAX)

Фамилия, имя и отчество обучаемого

Имя_пользователя

varchar(MAX)

Имя пользователя в системе авторизации


Таблица 2.4 Таблица ПРЕПОДАВАТЕЛЬ

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

Тип данных

Описание

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

int

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

ФИО

varchar(MAX)

Фамилия, имя и отчество преподавателя

Имя_пользователя

varchar(MAX)

Имя пользователя в системе авторизации


Таблица 2.5 Таблица ЗАДАНИЕ

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

Тип данных

Описание

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

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

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

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

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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1! = 1

! = 2

! = 6

! = 24

! = 120

! = 720

! = 5040

! = 40320

! = 362880

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

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

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

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

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

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

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

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

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

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

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

Литература

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

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

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

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

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

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

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

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

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

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

 

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!