В последнее время уделяется большое внимание разработке автоматизированных обучающих систем (АОС), позволяющих студенту в интерактивном режиме изучить и закрепить материал, а также проверить свои знания.
АОС - это совокупность связанных в единое целое технических, программно-алгоритмических, лингвистических и информационно-методических средств, предназначенных для автоматизации обучающего диалога, поиска и обработки учебной информации и подведения итогов обучения [2].
Программное обеспечение АОС выступает по отношению к ОС как пакет прикладных программ. В составе программного обеспечения АОС выделяют системное программное обеспечение (СПО) и предметное обеспечение.
В настоящее время отсутствует единая автоматизированная обучающая система по языку программирования Паскаль по многим компонентам: компилятора с виртуальной машиной; визуализатора, отображающего на экране работу со всеми структурами данных; практического раздела, состоящего из удобной среды для разработки программ; теоретического раздела; справочного раздела; экзаменационного раздела, в рамках которого раздел теории не доступен пользователю, сдающему экзамен; статистического раздела; приложения для работы с базой данных, которая содержит информацию о заданиях, пользователях студентах и преподавателях [1].
Цель работы состоит в разработке моделей и методов автоматизации обучения и контроля по алгоритмизации и программированию на языке Pascal, которые реализует тестирование знаний учащихся, хранение и представление информации о заданиях, студентах и преподавателях и позволяет пошагово выполнять команды языка программирования Паскаль. Разрабатываемая система состоит из [3-4]:
- компилятора языка Turbo Pascal 7.0 с виртуальной машиной;
- визуализатора, отображающего на экране работу со всеми структурами данных;
- практического раздела, состоящего из удобной среды для разработки программ;
теоретического раздела:
- теоретического материала по курсу программирования на языке Pascal;
- демонстрационных примеров к каждому разделу, которые можно выполнять во встроенном визуализаторе, добавлять, удалять и редактировать из справочного раздела:
- справочной информации о синтаксисе языка Pascal;
- стандартных процедур и функций языка Pascal;
- сообщений об ошибках (компиляции, времени выполнения и.т.д.);
- экзаменационного раздела, в рамках которого раздел теории не доступен пользователю, сдающему экзамен:
- тестов для проверки усвоенного материала;
- заданий для проведения экзамена в рамках АОС, которые можно добавлять, удалять и редактировать;
статистического раздела:
- отчеты о работе для студента;
- отчеты о работе своих студентов для преподавателя;
- создание контрольно-измерительных материалов;
- раздела помощи в работе с АОС;
- приложения для работы с базой данных, которая содержит информацию о заданиях, пользователях студентах и преподавателях.
Отличительные особенности курса:
- наличие компилятора, специально написанного для этой АОС, который выдает сообщения для визуализатора;
- визуализация процесса выполнения программы, созданной студентом;
возможность в процессе работы:
- просмотр значений любых описанных им данных;
- пошаговое выполнение программы, это позволяет пользователю в любой момент видеть значение переменной, состояние читаемого файла;
- наблюдение за процессом создания, удаления и изменения записей или элементов массива;
- просмотр значений динамических структур данных (указатели, стеки, деревья, очереди), что позволит нагляднее показать студенту работу с этими структурами данных;
- возможность выполнения демонстрационных примеров во встроенном визуализаторе;
- наглядность форм представления информации и возможность быстро получить интересующую справку;
- дружественный интерфейс для студента и преподавателя;
- возможность составлять и распечатывать контрольно-измерительные материалы, статистические отчеты работы студента;
- простота модификации информации о заданиях, студентах и преподавателях с помощью специально созданной утилиты;
- разграничение прав доступа к информации, содержащейся в базе данных, а именно: студентам доступна информация только об их работе, а преподавателям только о работе их студентов.
Рис. 1. Диаграмма вариантов использования системы
В системе «Паскаль» предусмотрена возможность исполнения программ по шагам, написанных на языке Pascal, визуализация выполнения каждого шага. Под визуализацией выполнения программы понимается возможность отображения состояния программы в любой момент времени ее выполнения, отображения созданных программой структур данных, а также динамическое изменение отображаемой информации в зависимости от текущего состояния программы.
Для реализации этих требований необходимо разработать свой компилятор языка Pascal и средства для выполнения программ. Таким средством оказалась виртуальная машина. Проектируемая виртуальная машина должна выполнять программы и иметь средства для просмотра и анализа текущего состояния выполняемой на ней программы, т.е. состояния памяти, сведений об открытых файлах и т.д.
Таким образом, задача разбивается на две:
1) создать виртуальную машину, удовлетворяющую указанным требованиям;
2) создать компилятор языка Pascal в код виртуальной машины.
Средством реализации выбрана среда программирования Delphi 7 с использованием СУБД Interbase 6.5 и генератор отчетов Rave Reports 5.0. Для разработки программного комплекса АОС Паскаль были использованы сторонние компоненты, такие как Development Express и EurikaLog 5.1.11 [5].
Рис. 2. Общая схема взаимодействия функциональных блоков
Программный комплекс разработан как многопоточное приложение. Многопоточность позволяет параллельно выполнять отдельные участки программ на ЭВМ с несколькими процессорами, или выполнять их на одном процессоре «псевдопараллельно», использую механизм вытесняющей многозадачности Windows. Эта функциональность позволяет пользователю работать с системой АОС Паскаль параллельно процессу компиляции и визуализации и решает проблему «замирания» пользовательского интерфейса. Например, пользователь может остановить процесс визуализации не дожидаясь его окончания, открыть справочную информацию о языке программирования Паскаль или встроенную в систему справку о комплексе «АОС Паскаль» параллельно обработке написанной или взятой из примеров программы.
Компилятор может быть условно разделен на три основные части:
- лексический анализатор;
- синтаксический и семантический анализатор;
- генератор кода.
Лексический анализатор обеспечивает представление входной программы на языке Pascal в виде последовательности лексем. Синтаксический и семантический анализатор проверяет корректности входной программы с точки зрения правил языка Pascal. Генератор кода создает выходную программу в виде исполняемого файла для виртуальной машины. Структура классов представлена на рис. 4.
Рис. 3. Блок-схема работы визуализатора
Рис. 4. Структура классов для реализации компилятора
Выводы
1. Разработан компилятор в «АОС Паскаль».
2. Разработана виртуальная машина, как основной метод организации компилятора.
Рецензенты:
Сербулов Ю.С., д.т.н., профессор, проректор по научной работе, зав. кафедрой информационных систем Воронежского института высоких технологий, г. Воронеж;
Ряжских В.И., д.т.н., профессор, зав. кафедрой высшей математики Воронежской государственной технологической академии, г. Воронеж.
Работа поступила в редакцию 31.05.2011.