Проект интегрированной среды для обучения программированию
Дипломная
работа
Проект
интегрированной среды для обучения программированию
СОДЕРЖАНИЕ
Введение
. Технический проект
.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="и <
10" BodyWord="и < 10">
<присвоить Left="а[и]" Expression="Рандом(0,
50)"></присвоить>
<вывести Expression="стр(а[и]) + " ""></вывести>
<присвоить Left="и" Expression="и +
1"></присвоить>
</цикл>
<вывести Expression=""\n""></вывести>
</функция>
<пустая_строка></пустая_строка>
<процедура Expression="" NameWord="Сортировка">
<переменная Type="целое" NameWord="и"></переменная>
<переменная Type="целое" NameWord="ж"></переменная>
<присвоить Left="и" Expression="0"></присвоить>
<цикл Expression="и <
10" BodyWord="и < 10">
<присвоить Left="ж" Expression="и +
1"></присвоить>
<цикл Expression="ж <
10">
<если Expression="а[и]
> а[ж]">
<переменная Type="целое" NameWord="временная"></переменная>
<присвоить Left="временная" Expression="а[ж]"></присвоить>
<присвоить Left="а[ж]" Expression="а[и]"></присвоить>
<присвоить Left="а[и]" Expression="временная"></присвоить>
</если>
<присвоить Left="ж" Expression="ж +
1"></присвоить>
</цикл>
<присвоить Left="и" Expression="и +
1"></присвоить>
</цикл>
</процедура>
<пустая_строка></пустая_строка>
<процедура Expression="" NameWord="Распечатать">
<переменная Type="целое" NameWord="и"></переменная>
<присвоить Left="и" Expression="0"></присвоить>
<цикл Expression="и < 10
">
<вывести Expression="стр(а[и]) + " ""></вывести>
<присвоить 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. Диаграмма классов