Разработка лабораторного практикума по курсу «Разработка трансляторов для языков программирования»
Для того, чтобы в условиях были ссылки на тесты, надо, чтобы в файлах условий (task.htm или taskrus. htm или taskeng. htm) были ссылки на них. Например. Это же эквивалентно тому, что архив еще не запакован и запускается task. htm (taskrus.htm, taskeng. htm) из тех директорий, которые будут запакованы. Таким же образом могут быть загружены картинки, но лучше пользоваться для них описанным выше… Читать ещё >
Разработка лабораторного практикума по курсу «Разработка трансляторов для языков программирования» (реферат, курсовая, диплом, контрольная)
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ Учреждение образования Гомельский государственный университет им. Ф. СКОРИНЫ
Математический факультет Кафедра математических проблем управления
Курсовая работа Разработка лабораторного практикума по курсу «Разработка трансляторов для языков программирования»
Исполнитель студентка
группы ПМ-35 Певнева М.В.
Научный руководитель
ассистент Короткевич Л.И.
Гомель 2012
Реферат Курсовая работа
Distance Learning Belarus, Internet, HTML, Delta, Active Server Pages, Structured Query Language.
Объектом исследования является система дистанционного обучения Distance Learning Belarus и лабораторный практикум по учебному курсу «Разработка трансляторов для языков программирования». Была поставлена цель переработки и адаптации лабораторного практикума и перенос его в систему дистанционного обучения. В результате проделанной работы была переработана лабораторная работа № 1 и перенесена в систему дистанционного обучения. Вследствие, чего появилась возможность проводить выдачу заданий по лабораторной работе и их проверку без непосредственного участия преподавателя, что повышает эффективность и скорость работы и освобождает преподавателя от выполнения рутиной работы, оставляя за ним лишь контролирующую функцию.
- Реферат
- Содержание
- Введение
- 1. Назначение и структура лабораторного практикума
- 1.1 Назначение лабораторного практикума
- 1.2 Структура лабораторного практикума
- 2. Система дистанционного обучения
- 2.1 Базовые концепции разработки приложений для Интернет
- 2.2 Основы языка HTML
- 2.3 Структура системы дистанционного обучения
- 2.3.1 Web-сайт
- 2.3.2 Файловая структура
- 2.3.3 Основная проверяющая программа и проверяющие модули
- 3. Корректировка заданий для переноса в систему
- 3.1 Формат ввода и вывода для заданий работы № 1
- 3.2 Структура и формат файлов для описания лабораторной работы № 1
- 3.2.1 Установка задач в систему дистанционного обучения
- 3.2.2 Структура и формат файлов
- 3.2.3 Установка файлов в систему
- 4. Схема диалога пользователя с системой
- 4.1 Выбор задания и отправка решения
- 4.2 Просмотр результатов проверки
- 4.3 Дополнительные возможности
- Заключение
- Приложения
Введение
лабораторный дистанционный обучение пользователь Все более широкое внедрение компьютеров во все сферы жизни человека приводит к тому, что практически всюду, включая процесс обучения, их роль стремительно возрастает. Вообще-то использование компьютеров в процессе обучения началось уже довольно давно. Но разработанная и внедренная несколько лет назад в Гомельском государственном университете система дистанционного обучения Distance Learning Belarus, открыла кардинально новые возможности использования компьютеров в процессе работы студентов и учащихся. Уже сейчас при помощи этой системы проводятся многочисленные олимпиады по программированию, шахматные турниры, конкурсы по программированию микроконтроллеров и проектированию цифровых устройств. Но возможности, заложенные в систему дистанционного обучения, позволяют с успехом использовать ее ещё и для проведения лабораторных практикумов по различным учебным курсам. Преимущества такого использования очевидны. Во-первых, отпадает необходимость непосредственного участия преподавателя в процессе выдачи и проверки заданий. Во-вторых, возрастает объективность и скорость проверки заданий. Также студент получает возможность сдачи работ в удобное для него время. Так как система Distance Learning Belarus построена с использованием современных Internet технологий, то студент может получить и отправить на проверку выполненное задание практически с любой точки земного шара.
Была поставлена задача переработки лабораторного практикума «Разработка трансляторов для языков программирования» по курсу «Системное программное обеспечение» в целях дальнейшего переноса его в систему дистанционного обучения Distance Learning Belarus.
1. Назначение и структура лабораторного практикума
1.1 Назначение лабораторного практикума
Лабораторный практикум ставит собою цель закрепления теоретического материала учебного курса и выработки умения применять на практике полученные знания. Так же практикум служит для оценки уровня владения теоретическим материалом и умения применять его на практике.
1.2 Структура лабораторного практикума
Лабораторный практикум состоит из восьми следующих лабораторных работ:
1)Синтаксический анализ предложений для регулярных грамматик;
2)Нисходящий грамматический разбор;
3)Синтаксический анализ предложений для грамматик с предшествованием;
4)Синтаксический анализ предложений для LR (1) грамматик;
5)Промежуточные языки трансляции;
6)Генерация объектной программы;
7)Статическое распределение памяти для данных;
8)Динамическое распределение памяти для данных.
В каждой лабораторной работе по 10 различных вариантов заданий.
Некоторые лабораторные работы подразумевают написание программы на языке программирования.
2. Система дистанционного обучения
2.1 Базовые концепции разработки приложений для Интернет
Интернет — это множество разнообразных компьютерных систем, объединенных в сеть по протоколу TCP/IP. IP — протокол нижнего уровня, обеспечивающий передачу небольших пакетов данных. С помощью протокола TCP из пакетов, предлагаемых протоколом IP, создается поток и обеспечивается соединение. Далее процессы, выполняемые на различных компьютерах, могут начинать взаимодействие.
Имеется два типа таких процессов: клиент и сервер. Процесс-клиент инициирует сеанс работы с сервером, который всегда находится в состоянии ожидания. Процесс-сервер, получив запрос, выполняет соответствующие действия и возвращает результат клиенту. Данные механизмы реализуются на основе протокола прикладного уровня HTTP (передачи гипертекста), являющегося надстройкой TCP/IP.
В среде Интернет приложение-клиент, общающееся с web-сервером посредством протокола HTTP, называется браузером. HTML представляет собой язык, используемый при создании web-страниц, предоставляющий в распоряжение пользователя простой стандартный способ описания расположения текстовых и графических данных.
Одним из важнейших понятий в HTML является гиперссылка. Она позволяет разработчику страницы внедрять внедрять ссылки на другие документы или ресурсы прямо в страницу. Каждый ресурс имеет свой собственный уникальный адрес, называемый универсальным локатором ресурса (URL). Путь к ресурсу определяется относительно каталога web-мастера. По умолчанию загружается файл index. html или default.html. Параметры и указанные в них разделители определяются указанным методом доступа. В случае применения протокола HTTP символ «#» обозначает закладку внутри HTML-документа.
В настоящее время браузер превратился в мощное клиентское приложение за счет таких усовершенствований, как обеспечение независимости от операционной системы (достигнута с помощью языка программирования Java), возможность программирования клиентской части (получена благодаря языкам JavaScript и VB Script), предоставление полного доступа к клиентской операционной среде (реализуется посредством элементов ActiveX).
2.2 Основы языка HTML
Язык HTML — это, по сути, множество элементов, специфицирующих формат описываемой страницы. Каждый элемент влияет на данные, которые следуют за ним. Некоторые HTML-элементы являются парными, то есть существует элемент начала и конца. Эти элементы называются тегами. Пары тегов начала и конца обеспечивают возможность вложенного использования элементов, однако нe все HTML-элементы могут вкладываться друг в друга, имеют теги конца или требуют завершения их тегом конца, но большинство из них удовлетворяют этим правилам.
Элементы HTML могут также иметь атрибуты. Атрибуты модифицируют характеристики элемента. В HTML-документы можно включать комментарии, помещая их между тегами комментариев HTML (). Некоторые HTML-элементы поддерживают атрибут COLOR, задающий некоторый цвет.
Элемент «закладка» обеспечивает возможность создания гиперссылок. Они позволяют осуществлять переход на другую страницу в любом месте HTML документа.
2.3 Структура системы дистанционного обучения
С октября 1999 года на базе Гомельского Государственного университета функционирует система дистанционного обучения «Distance Learning Belarus». Система активно используется в учебном процессе. Дистанционное обучение является одной из перспективных областей развития информационных систем.
При разработке системы использовались следующие технологии и языки:
Structured Query Language (SQL) — язык, предназначенный для работы с базой данных. Он позволяет выбирать, обновлять и вставлять данные. О нем можно почитать в и.
HyperText Markup Language (HTML) — язык разметки интернет страниц. JavaScript — язык для разработки программ-скриптов на машине клиента. Cascading Style Sheets (CSS) — каскадные таблицы стилей. Подробнее об этих языках можно узнать на сайтах http://gsu.unibel.by/prolib и http://www.w3c.com.
Active Server Pages (ASP) и Java, Internet Information Server Application Programming Interface (ISAPI) — технологии разработки программ исполняемых на интернет-сервере и генерирующих HTML-текст.
Протоколы SMTP, POP3, которые позволяют работать с почтовым сервером.
Взаимодействие пользователя с системой дистанционного может осуществляться при помощи почты или через интернет. В первом случае пользователь должен писать письма почтовому роботу ([email protected]) используя определенный набор команд. Наиболее предпочтительный и удобный способ взаимодействия с системой — использование web-сайта (http://dl.gsu.unibel.by).
Система может работать с двумя типами пользователей: индивидуальный пользователь и команда. Команда при этом должна состоять из зарегистрированных пользователей.
Весь учебный материал распределен по учебным курсам. Каждый такой курс содержит соответствующий теоретический материал и задачи. Подписавшись на курс, пользователь получает доступ теории и соответствующим ей задачам. Изучение курса завершается после того, как будет изучена вся теория и сдан необходимый минимум задач.
Курс может не содержать теоретического материала — только задачи, такие курсы будем называть практическими.
Отдельный вид практических курсов — соревнования. Такие курсы, как правило, включают только задачи и период их «жизни» значительно меньше — обычно несколько часов. По истечении этого времени подводятся результаты и определяются победители.
Соревнования могут быть личные и командные.
По желанию составителей некоторые курсы могут быть доступны только индивидуальным ученикам или только командам.
В зависимости от типа курса могут строиться таблицы результатов различных видов:
для учебных курсов строится таблица, содержащая количество решенных пользователем задач и его рейтинг.
для личных соревнований — таблица, с баллами по каждой задаче и общей суммой баллов.
таблица командных соревнований строится по правилам чемпионата ACM
Таблица таблиц (GRID) предназначена для отображения результатов пользователей отдельно из разных групп (например, пользователей сгруппированных по областям и классам).
Вложенные таблицы результатов. Сейчас они практически не используются, потому что появился новый тип таблиц — раскрывающиеся.
Раскрывающиеся таблицы.
Логически систему Distance Learning Belarus можно разбить на следующие основные модули: SQL-сервер и хранимые процедуры, web-сайт, почтовый робот и тестирующие программы
2.3.1 Web-сайт
Большая часть web-сайта написана с использованием технологии «Active Server Pages» (ASP) на языке Visual Basic. Некоторые отдельные части написаны на Java, JScript, с использованием CGI и ISAPI.
При этом используются интернет-сервера «Internet Information Services 5.0» (сокращенно IIS) и «Resin 2.1.0» (Java-страницы).
Web-сайт системы можно разбить на следующие функционально независимые разделы:
Внешняя часть. Это все что доступно пользователю без аутентификации.
Внутренняя часть для пользователя и команды. Этот раздел сайта становится доступным после регистрации и аутентификации.
Раздел администраторов. Здесь собраны web-средства мониторинга и управления группами пользователей. Он доступен для ограниченного числа лиц по адресу http://dl.gsu.unibel.by/admin
Раздел для проверяющих. Содержит средства получения файлов-решений, ввода оценки решения и комментариев проверки. Он доступен по адресу http://dl.gsu.unibel.by/checkers
Страничка редактора, которая используется для изменения параметров курса.
2.3.2 Файловая структура
Большинство файлов системы DLB находятся на сервере NewIT_SERVER.
К статическим данным относятся данные, которые изменяются и добавляются достаточно редко и изменяются только редакторами курсов.
Они находятся в следующих каталогах:
\NewIT_SERVERdldataArchives — каталог содержит архивы задач (информацию по тестам и т. п., в зависимости от типа задачи). Информация по каждой задаче хранится в каталоге с именем ID. tsk, где ID — идентификатор задачи из базы данных. Каталог задачи необходим только в случае автоматического тестирования. В каталоге должен находится файл task. cfg, который содержит настройки задачи.
\NewIT_SERVERdldataTasks — каталог содержит HTML-файлы с условиями задач. Для английского условия имя файла должно иметь вид IDe. htm, для русского IDr.htm. Если для необходимого языка нет такого файла, то будет использован файл с именем ID.htm. Здесь, как и раннее, ID — идентификатор задачи.
\NewIT_SERVERdldataTheory — каталог содержит HTML-файлы с теорией. Способ хранения аналогичный условиям задач.
\NewIT_SERVERdldataImages — каталог содержит различные вложения (картинки, примеры, архивы, видео и аудио файлы) для условий задач и теории. Принятый формат: ID-N.* для задач и IDt-N.* для теории. Здесь ID — идентификатор задачи или блока теории, N — порядковый номер внутри задачи или блока теории. Допустимо также создавать каталоги с такими именами.
\NewIT_SERVERdldatalinksr.txt, \NewIT_SERVERdldatalinkse.txt, — список ссылок на аналогичные ресурсы (на русском и английских языках).
\NewIT_SERVERdldataFAQe.txt, \NewIT_SERVERdldataFAQr.txt — часто задаваемые вопросы (на русском и английских языках).
К динамическим данным относятся данные, которые изменяются и добавляются относительно часто, вследствие работы пользователей системы дистанционного обучения или по расписанию.
Такие данные находятся в следующих каталогах:
\NewIT_SERVERdldataQueue — в этот каталог помещаются файлы с решениями задач, присланные для проверки. Формат имени файла:
uUUUUUUUUnNNNNNNNNcCCCCqQQQQQQQQ.*
Здесь
UUUUUUUU — идентификатор пользователя (8 символов),
NNNNNNNN — идентификатор узла задачи (8 символов),
CCCC — идентификатор курса (4 символа),
QQQQQQQQ — идентификатор решения в очереди (8 символов).
Все числа в шестнадцатеричной форме. Расширение файла — в зависимости от типа задачи. Пример:
u00018D2An00000659c0031q000043EE.PAS
Следует отметить, что в этом каталоге содержатся как проверенные так и не проверенные решения.
\NewIT_SERVERdldataTested — в данном каталоге хранятся архивы решений пользователей (всего более 30 000). \NEWIT_SERVERdlbroot — в данном каталоге размещается web-сайт
\NewIT_SERVERdl2 — в данном каталоге находятся часть web-сайта, написанная на Java
\NIT_SERVERNITProjectsDL — в данном каталоге хранятся исходные тексты всех версий компилируемых программных модулей сервера DLB
\NIT_SERVERdDelTA — в данном каталоге работает основная проверяющая программа (Дельта)
\nit1cpeopledanielDLMailBot — в данном каталоге работает почтовый робот
2.3.3 Основная проверяющая программа и проверяющие модули
Автоматическое тестирование всех задач происходит при помощи специальной программы — Дельта. Она написана на языке Delphi.
Каждые 15 секунд Дельта вызывает некоторую хранимую процедуру, которая возвращает запись из очереди на тестирование (если она есть). Далее задача помечается как взятая на тестирование. Дельта копирует во временный каталог решение участника и тесты. Если в файле task. cfg есть строки
TYPE = USERS
CHECKER = '"строка запуска проверяющего модуля"'
EXTTYPE = 'Пользовательская'
то происходит запуск проверяющего модуля.
Иначе, если это задача по программированию, Дельта запускает компилятор или интерпретатор нужного языка программирования. Решение запускается на тестах и вычисляется суммарный результат за задачу.
Если в файле task. cfg есть строка «COUNT_BY = TASK» (баллы начисляются только если решение проходит все тесты), то тестирование осуществляется до первого не пройденного теста.
Если решение имеет расширение zip или rar, то Дельта вызывает внешнюю программу для распаковки. В каталоге DelTAext находятся пакетные файлы zip. bat и rar. bat, которые запускаются для распаковки соответствующих архивов. Первым параметром им передается имя архива.
Возможно добавление любого другого архиватора. Для этого достаточно создать нужный пакетный файл в каталоге ext.
Стационарно Дельта работает только на одной машине — nit_server. Дельта установлена в каталог D: DelTA
Для работы Дельта использует следующие каталоги:
DelTAArc — в данном каталоге хранятся внешние архиваторы
DelTACHECKERS — данный каталог содержит различные проверяющие модули (CTChecker — проверка задач по шахматам, MathCheck — проверка задач по математике, HLCCAD, IEESD-2000, WChecker)
DelTADelTASupervisor — в данном каталоге находится программа для автоматического возобновления тестирования в случае «зависания» Дельты.
DelTAext — каталог содержит bat-файлы для запуска внешних архиваторов.
DelTALngs — в данном каталоге хранятся компиляторы и интерпретаторы (BC, Freepas, Perl, qbasic, TASM, TP)
Все запуски внешних программ фиксируются в протоколе DelTAexecution.log.
При проверке существуют следующие ограничения:
Ограничение на длину комментария поступающего от тестирующего модуля
ограничение работы чекера по времени (60 секунд)
В случае отсутсвия тестов участнику дает максимальный бал.
Медленное тестирование в случае если решение пытается читать с клавиатуры, а в task. cfg указано чтение с файла (60 секунд на каждый тест).
3. Корректировка заданий для переноса в систему
Так как система дистанционного обучения предусматривает автоматизированную проверку решений лабораторных работ, то необходимо строго определить формат входной и выходной информации.
3.1 Формат ввода и вывода для заданий работы № 1
Так как изначально проверка программы лабораторной работы № 1 предусматривалась преподавателем, то никаких ограничений на ввод и вывод информации не производилось. Для переноса же лабораторной работы в систему дистанционного обучения необходимо определить конкретный формат входной и выходной информации.
Условие лабораторной работы подразумевает для заданной регулярной грамматики написать и отладить программу синтаксического анализа предложений порождаемого языка.
Поэтому положим, что при запуске программа будет считывать из файла input. txt одну строку, содержащую предложение для разбора.
Определим вывод результата следующим образом:
Программа должна вывести в файл output. txt в первую строку исходное предложение, которое было в файле input.txt.
Во вторую строку программа должна вывести число 0,1,2 или 3. Если исходное предложение корректное, то программа выводит число 0, а в третью строчку выводит результат разбора, формат которого однозначно задаётся для каждого варианта задания и четко прописывается в условии.
Если же входное предложение некорректное, то программа должна во вторую строчку вывести код ошибки 1,2 или 3, а в третью строчку выводить ничего не должна. Определим коды ошибок следующим образом:
Таблица 1
Если в процессе разбора встретился недопустимый символ | ||
Если в процессе разбора встретился допустимый символ, но который не может находиться на этом месте | ||
Если в процессе разбора обнаружилось, что предложение не закончено | ||
3.2 Структура и формат файлов для описания лабораторной работы № 1
3.2.1 Установка задач в систему дистанционного обучения
В настоящее время используется система загрузки задач и деревьев задач на сайт при помощи архива. Для этого необходимо иметь права редактора курса или быть одним из авторов задач на специальном курсе по закачке задач. Такая возможность имеется на странице редактора курса (ссылка «установка задач»), или на специальном курсе для установки задач под ссылкой «редактор» .
Посылаемый архив должен содержать дерево разделов, тексты условий и каталоги с тестами.
Архив содержит дерево каталогов и задачи, вместе с директориями, содержащими тесты и при необходимости рисунки.
<�русское_имя_узла (english_node_name)> - директория <�русское_имя_узла (english_node_name)> - директория <�русское_имя_узла (english_node_name)> - директория <�индекс> - директория <�индекс> - директория images — директория для рисунков (не обязательная) <�любой файл> - рисунок <�любой файл> - рисунок <�любой файл> - рисунок taskrus. htm — русское условие задачи taskeng. htm — английское условие task. xml — файл описания задачи task. cfg — обязательный файл 1. in — 1-й входной файл тестов 1. out — 1-й выходной файл тестов <�русское_имя_узла (english_node_name)> - директория Также можно заменить файлы taskrus. htm и taskeng. htm на один файл task. htm с условием (будет вместо двух). Если русское имя задачи совпадает с английским, то можно просто заменить '<�русское_имя_узла (english_node_name)>' на '<�русское_имя_узла>#'. Если не предполагается использовать английского имени, то можно заменить '<�русское_имя_узла (english_node_name)>' на '<�русское_имя_узла>'. <�индекс> - номер задачи, которая будет заменена или номер под которым задача будет установлена. Архив обрабатывается так, что дополнительные узлы (поддеревья) вставляются в лексикографическом (для строковых имен) или числовом (для числовых имен) порядке в текущее дерево. Аналогично, если создавать дерево в архиве, то внутри этого дерева названия узлов будут отсортированы: в лексикографическом порядке названия, а цифры в числовом порядке.
Дерево может и не существовать, тогда в архиве будет только:
<�индекс> images <�любой файл> task. htm task.xml task. cfg 1.in 2. out <�индекс>
И задачи будут загружены списком в текущий раздел. По аналогии, в архиве может быть только дерево каталогов без задач.
Файл task. xml должен быть в windows-кодировке и содержать всего одну строку:
Свойство author — необязательное. Все остальные необходимо указать.
Здесь type — тип задачи.
1 — задачи по программированию, HLCCAD, Winter, IEESD
4 — задачи по математике
10 — английский язык Для того, чтобы загрузить картинки на сайт необходимо, чтобы в файлах условий (task.htm или taskrus. htm или taskeng. htm) были ссылки на них. Например . Это же эквивалентно тому, что если архив еще не запакован и запускается task. htm (taskrus.htm, taskeng. htm) из тех директорий, которые будут запакованы.