Помощь в написании студенческих работ
Антистрессовый сервис

Разработка лабораторного практикума по курсу «ЭВМ и программирование» в среде дистанционного обучения DL

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Данная работа была выполнена на кафедре математических проблем управления. Была проведена работа по изучению принципа работы и структуры системы дистанционного обучения Distance Learning Belarus. Также было проведено знакомство с языком HTML и другими современными интернет технологиями. После было проведено исследование об адаптации лабораторного практикума курса «Разработка трансляторов для… Читать ещё >

Разработка лабораторного практикума по курсу «ЭВМ и программирование» в среде дистанционного обучения DL (реферат, курсовая, диплом, контрольная)

Учреждение образования Гомельский государственный университет им.

Ф. СКОРИНЫ Математический факультет Кафедра математических проблем управления Курсовая работа Разработка лабораторного практикума по курсу «ЭВМ и программирование» в среде дистанционного обучения DL

Исполнитель студентка группы ПМ-45Певнева М.В.

Научный руководитель ассистентКороткевич Л.И.

Реферат

Курсовая работа ___ страницы, 7 рисунков, 4 таблицы, 3 источника, 4 приложения

Distance Learning Belarus, Internet, HTML, Delta, Active Server Pages, Structured Query Language.

Объектом исследования является система дистанционного обучения Distance Learning Belarus и лабораторный практикум по учебному курсу «Разработка трансляторов для языков программирования». Была поставлена цель переработки и адаптации лабораторного практикума и перенос его в систему дистанционного обучения. В результате проделанной работы были переработаны, а также дополнены новыми вариантами лабораторные работы № 1 и № 3 и перенесены в систему дистанционного обучения. Вследствие, чего появилась возможность проводить выдачу заданий по лабораторной работе и их проверку без непосредственного участия преподавателя, что повышает эффективность и скорость работы и освобождает преподавателя от выполнения рутиной работы, оставляя за ним лишь контролирующую функцию.

  • Введение
  • 1. Назначение и структура лабораторного практикума
  • 1.1 Назначение лабораторного практикума
  • 1.2 Структура лабораторного практикума
  • 2. Система дистанционного обучения
  • 2.1 Базовые концепции разработки приложений для Интернет
  • 2.2 Основы языка HTML
  • 2.3 Структура системы дистанционного обучения
  • Web-сайт
  • Файловая структура
  • Основная проверяющая программа и проверяющие модули
  • 3. Корректировка заданий для переноса в систему
  • 3.1 Формат ввода и вывода для заданий
  • 3.2 Структура и формат файлов для описания лабораторных работ
  • Установка задач в систему дистанционного обучения
  • Формат и содержание созданных файлов для работы № 1
  • Формат и содержание созданных файлов для работы № 3
  • 3.3 Результаты проделанной работы
  • 4. Схема диалога пользователя с системой
  • Заключение
  • Использованные источники
  • Приложения

Все более широкое внедрение компьютеров во все сферы жизни человека приводит к тому, что практически всюду, включая процесс обучения, их роль стремительно возрастает. Вообще-то использование компьютеров в процессе обучения началось уже довольно давно. Но разработанная и внедренная несколько лет назад в Гомельском государственном университете система дистанционного обучения 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) Динамическое распределение памяти для данных.

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

пользователь дистанционное обучение приложение

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-элементы являются парными, то есть существует элемент начала и конца. Эти элементы называются тегами. Пары тегов начала и конца обеспечивают возможность вложенного использования элементов, однако не все HTML-элементы могут вкладываться друг в друга, имеют теги конца или требуют завершения их тегом конца, но большинство из них удовлетворяют этим правилам.

Элементы HTML могут также иметь атрибуты. Атрибуты модифицируют характеристики элемента. В HTML-документы можно включать комментарии, помещая их между тегами комментариев HTML (). Некоторые HTML-элементы поддерживают атрибут COLOR, задающий некоторый цвет.

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

2.3 Структура системы дистанционного обучения

С октября 1999 года на базе Гомельского Государственного университета функционирует система дистанционного обучения «Distance Learning Belarus». Система активно используется в учебном процессе. Дистанционное обучение является одной из перспективных областей развития информационных систем.

Взаимодействие пользователя с системой дистанционного может осуществляться при помощи почты или через интернет. Наиболее предпочтительный и удобный способ взаимодействия с системой — использование web-сайта (http://dl. gsu. unibel. by).

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

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

Логически систему Distance Learning Belarus можно разбить на следующие основные модули: SQL-сервер и хранимые процедуры, web-сайт, почтовый робот и тестирующие программы

Web-сайт

Большая часть web-сайта написана с использованием технологии «Active Server Pages» (ASP) на языке Visual Basic. Некоторые отдельные части написаны на Java, JScript, с использованием CGI и ISAPI.

Web-сайт системы можно разбить на следующие функционально независимые разделы:

Внешняя часть. Это все что доступно пользователю без аутентификации.

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

Раздел администраторов. Здесь собраны web-средства мониторинга и управления группами пользователей. Он доступен для ограниченного числа лиц по адресу http://dl. gsu. unibel. by/admin

Раздел для проверяющих. Содержит средства получения файлов-решений, ввода оценки решения и комментариев проверки. Он доступен по адресу http://dl. gsu. unibel. by/checkers

Страничка редактора, которая используется для изменения параметров курса.

Файловая структура

Большинство файлов системы DLB находятся на сервере NewIT_SERVER.

К статическим данным относятся данные, которые изменяются и добавляются достаточно редко и изменяются только редакторами курсов.

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

Основная проверяющая программа и проверяющие модули

Автоматическое тестирование всех задач происходит при помощи специальной программы — Дельта. Она написана на языке Delphi.

Параметры тестирования определяются из файла test. cfg. Если в файле task. cfg есть строки

TYPE = USERS

CHECKER = '" строка запуска проверяющего модуля" '

EXTTYPE = 'Пользовательская'

то происходит запуск проверяющего модуля.

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

Если в файле task. cfg есть строка «COUNT_BY = TASK» (баллы начисляются только если решение проходит все тесты), то тестирование осуществляется до первого не пройденного теста.

Если решение имеет расширение zip или rar, то Дельта вызывает внешнюю программу для распаковки. Это позволяет отправлять решения в архиве.

3. Корректировка заданий для переноса в систему

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

3.1 Формат ввода и вывода для заданий

Так как изначально проверка программ лабораторных работ № 1 и № 3 предусматривалась преподавателем, то никаких ограничений на ввод и вывод информации не производилось. Для переноса же лабораторных работ в систему дистанционного обучения был определен конкретный формат входной и выходной информации. Было положено, что при запуске программа будет считывать из файла input. txt одну строку, содержащую предложение для разбора.

Вывод результата для работы № 1 был определен следующим образом:

Программа выводит в файл output. txt в первую строку исходное предложение, которое было в файле input. txt. Во вторую строку программа выводит текст, указывающий вид ошибки при разборе или подтверждающий корректность исходного предложения. Если исходное предложение корректное, то программа выводит слово OK, а в третью строчку выводит результат разбора, формат которого однозначно задаётся для каждого варианта задания и четко прописывается в условии. Если же входное предложение некорректное, то во вторую строку программа выводит текст, указывающий на один из трех видов ошибки (UNKNOW_SYMBOL, PLACE_ERROR или NO_END):

UNKNOW_SYMBOL Если в процессе разбора встретился недопустимый символ

PLACE_ERROR Если в процессе разбора встретился допустимый символ, но который не может находится на этом месте

NO_END Если в процессе разбора обнаружилось, что предложение не закончено

Вывод результата для работы № 3 был определен так:

Программа выводит в файл output. txt в первую строку исходное предложение, которое было в файле input. txt. Во вторую строку программа выводит текст, указывающий вид ошибки при разборе или подтверждающий корректность исходного предложения. Если исходное предложение корректное, то программа выводит слово OK. Если же входное предложение некорректное, то во вторую строку программа выводит текст, указывающий на один из двух видов ошибки (BAD SYMBOL, NO RULE):

BAD SYMBOL Если в процессе разбора встретился недопустимый символ

NO RULE Если в процессе свёртки основы не найдено подходящее правило для свёртки.

3.2 Структура и формат файлов для описания лабораторных работ

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

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

Архив содержит дерево каталогов и задачи, вместе с директориями, содержащими тесты

<�русское_имя_узла (english_node_name) > - директория <�русское_имя_узла (english_node_name) > - директория .

<�русское_имя_узла (english_node_name) > - директория <�индекс> - директория .

<�индекс> - директория taskrus. htm — русское условие задачи taskeng. htm — английское условие task. xml — файл описания задачи task. cfg — обязательный файл 1. in — 1-й входной файл тестов 1. out — 1-й выходной файл тестов .

<�русское_имя_узла (english_node_name) > - директория

Также файлы taskrus. htm и taskeng. htm были заменены на один файл task. htm с условием (он будет вместо двух).

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

<�индекс> task. htm task. xml task. cfg 1. in 2. out.

<�индекс> .

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

Файл task. xml в windows-кодировке и содержит всего одну строку:

Свойство author — необязательное. Все остальные необходимо было указывать. Здесь type — тип задачи. 1 — задачи по программированию, HLCCAD, Winter, IEESD. 4 — задачи по математике. 10 — английский язык. В системе дистанционного обучения также существует возможность загрузки недоукомплектованных архивов. Этот режим используется, чтобы сэкономить время, необходимое для изменения уже установленных заданий. В директории задания могут отсутствовать файлы, которые изменять не надо. Единственный файл необходимый в задании — task. Xml. Архив создавался при помощи программы WINRAR 3.0.

Формат и содержание созданных файлов для работы № 1

В соответствии с вышеописанным форматом были подготовлены для каждого варианта работ следующие файлы:

task. htm — HTML файл с текстом задания;

task. xml — файл описания задачи;

task. pas — авторское решение задачи;

task. cfg — файл конфигурации задачи;

*. in — файлы ввода, содержащие тесты;

*. out — файлы правильных ответов.

Число файлов *. in и *. out одинаковое для каждого варианта, но в разных вариантах может быть различным и зависит от сложности задания, для того, чтобы составить полное множество тестов.

Число тестов в каждом варианте находится в диапазоне от 6 до 12.

Рассмотрим теперь более подробно содержимое созданных файлов на примере 6 варианта задания:

Файл описания условия задачи task. htm приведен в приложении.

Файл описания задачи task. xml для этого варианта выглядит так:

Файл task. pas содержит исходный текст авторского решения на языке Pascal и приведен в приложении.

Файл task. cfg содержит информацию о параметрах задачи и содержит следующие строки:

COUNT_BY = TASK; Баллы начисляются за задачу TIME_LIMIT = 15; Ограничение работы решения по времени 15 сек INPUT = FILE (input. txt); ввод данных из файла input. txt OUTPUT = FILE (output. txt); вывод данных в файл output. txt TESTS_BEGIN 1; баллы за каждый тест 1; по одному за тест 1 1 1 1 1 1 1 TESTS_END

Файлы ввода с расширением in (1. in, 2. in и т. д.) содержат входную информацию:

Таблица 1

Файлы вывода с расширением out (1. out, 2. out, и т. д.) содержат правильные ответы:

1. in

10−5.50

2. in

1+1

3. in

5+6.23

4. in

8−7

5. in

12+12.03

6. in

+45−56

7. in

78+56.6

8. in

6−8.89

9. in

4−6.321

10. in

1−1

11. in

1a

12. in

1−3h

Таблица 2

1. out

10−5.50

OK

M=4.50 N=2

2. out

1+1

OK

M=2.00 N=0

3. out

5+6.23

OK

M=11.23 N=2

4. out

8−7

OK

M=1.00 N=0

5. out

12+12.03

OK

M=24.03 N=2

6. out

+45−56

PLACE_ERROR

7. out

78+56.6

NO_END

8. out

6−8.89

OK

M=-2.89 N=2

9. out

4−6.321

OK

M=-2.32 N=3

10. out

1−1

PLACE_ERROR

11. out

1a

UNKNOW_SYMBOL

12. out

1−3h

UNKNOW_SYMBOL

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

Формат и содержание созданных файлов для работы № 3

Для лабораторной работы № 3 были созданы файлы с такими же именами. Назначение их полностью совпадает с назначением файлов в лабораторной работе № 1.

Рассмотрим теперь более подробно содержимое созданных файлов на примере 6 варианта задания:

Файл описания условия задачи task. htm приведен в приложении.

Файл описания задачи task. xml для этого варианта выглядит так:

Файл task. pas содержит исходный текст авторского решения на языке Pascal и приведен в приложении.

Файл task. cfg содержит информацию о параметрах задачи и содержит следующие строки:

COUNT_BY = TASK TIME_LIMIT = 15 INPUT = FILE (input. txt) OUTPUT = FILE (output. txt) TESTS_BEGIN 1 1 1 1 1 TESTS_END

Файлы ввода с расширением in (1. in, 2. in и т. д.) содержат входную информацию:

Таблица 3

Файлы вывода с расширением out (1. out, 2. out, и т. д.) содержат правильные ответы:

1. in

1+1.2

2. in

1.1−5

3. in

1*2

4. in

9+8

5. in

0+4.5

Таблица 4

1. out

1+1.2 OK

2. out

1.1−5 BAD SYMBOL

3. out

1*2 BAD SYMBOL

4. out

9+8 OK

5. out

0+4.5 OK

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

Установка файлов в систему

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

Рисунок 1. Редактирование курса

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

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

Рисунок 2. Загрузка архива с задачами

В поле «Архив: «нужно указать имя добавляемого архива и нажать кнопку «Отправить». Для указания имени архива можно нажать кнопку «Обзор…» и в открывшемся диалоге выбрать нужный архив. После этого задачи из архива добавляются в систему дистанционного обучения.

3.3 Результаты проделанной работы

В результате первая и третья лабораторные работы были дополнены по пять вариантов, для каждого из них созданы файлы описания условия задач на языке HTML, файлы описания параметров проверки задач task. cfg и файлы описания задач task. xml. Так же для задания каждого варианта были написаны программы-решения на языке Pascal. Ввод и вывод этих программ полностью соответствует описанным выше требованиям. Эти решения будут в дальнейшем использоваться для проверки правильности функционирования учебного курса. Затем был сформирован архив с задачами, тестами, решениями, файлами настройки проверки заданий и файлами описания задач. Этот архив был загружен в систему дистанционного обучения и в дальнейшем планируется развитие и расширение учебного курса «Методы разработки трансляторов»

4. Схема диалога пользователя с системой

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

Выбор задания и отправка решения

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

Рисунок 3. Список вариантов заданий

Выбрав нужный вариант, пользователь может посмотреть условие задачи. Для варианта № 1 это будет выглядеть так:

Рисунок 4. Условие задания

На этой же странице пользователь может указать путь к своему решению (исходному тексту программы решения на некотором языке программирования) в поле «Отправка решения: «или воспользоваться кнопкой «Обзор…». Нажатие кнопки «Отправить» осуществляет пересылку решения в систему, и оно становиться в очередь на проверку.

Просмотр результатов проверки

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

Рисунок 5. Протокол проверки

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

Для просмотра общих результатов пользователь должен перейти на страницу «Таблицы результатов», выбрав пункт «Результаты» в левой части окна:

Рисунок 6. Таблицы результатов

Дополнительные возможности

Как и в других курсах системы дистанционного обучения у подписчиков этого курса есть возможность обратиться за консультацией к разработчикам системы на странице «Консультации» :

Рисунок 7. Консультации

Также подписчики могут обсудить любую из предложенных задач в форуме, выбрав соответствующую ссылку (рисунок 4).

Заключение

Данная работа была выполнена на кафедре математических проблем управления. Была проведена работа по изучению принципа работы и структуры системы дистанционного обучения Distance Learning Belarus. Также было проведено знакомство с языком HTML и другими современными интернет технологиями. После было проведено исследование об адаптации лабораторного практикума курса «Разработка трансляторов для языков программирования» для переноса его в систему дистанционного обучения. Затем была проведена переработка всех имеющихся заданий первой и третьей лабораторных работ для их переноса в систему дистанционного обучения, а также тех вариантов заданий, которые были добавлены позже. Так же был осуществлен перенос подготовленных заданий в систему дистанционного обучения. В дальнейшем планируется полный перевод всего лабораторного практикума в систему Distance Learning Belarus. Все это позволит повысить удобство доступа к курсу студентам, освободить преподавателей от рутинной работы по выдаче и проверке заданий и повысить скорость и объективность проверки лабораторных работ.

Использованные источники

1. Кирсанов Д. Веб-дизайн: книга Дмитрия Кирсанова. — Символ-плюс, 2001

2. Коржинский С. Настольная книга Web-мастера: эффективное применение HTML, CSS и Java Script. — Кнорус, 2000

3. Дронов В. Java Script в Веб-дизайне — СПб.: БХВ, 2001

Приложения

Приложение 1

Тексты авторских решений лабораторной работы № 1.

Вариант № 1:

const ms: array [1.6,1.5] of byte= (

{ Ц Б + - =}

{S} (0,2,0,0,0),

{Q} (2,2,0,0,3),

{R} (0,4,0,0,0),

{P} (4,4,5,5,0),

{T} (6,0,0,0,0),

{Z} (6,0,0,0,0));

const ps: array [1.6,1.5] of byte= (

{ Ц Б + - }

{S} (0,1,0,0,0),

{Q} (1,1,0,0,0),

{R} (0,2,0,0,0),

{P} (2,2,4,3,0),

{T} (5,0,0,0,0),

{Z} (5,0,0,0,0));

num: set of char= ['0'. '9'];

sym: set of char= ['A'. 'Z','a'. 'z'];

ee: boolean=true;

var s: string;

i, q, oq, ns: byte;

cons: longint;

p1,p2: string;

sign: shortint;

begin

assign (input,'input. txt');

assign (output,'output. txt');

reset (input);

rewrite (output);

readln (s);

p1: =''; p2: =''; cons: =0;

writeln (s); i: =1; q: =1;

while (i<=byte (s [0])) and ee do

begin

oq: =q;

if s [i] in num then ns: =1 else { }

if s [i] in sym then ns: =2 else { Определение }

if s [i] ='+' then ns: =3 else { номера }

if s [i] ='-' then ns: =4 else { }

if s [i] ='=' then ns: =5 else ns: =0; { символа }

case ps [q, ns] of

1: p1: =p1+s [i];

2: p2: =p2+s [i];

3: sign: =-1;

4: sign: =+1;

5: cons: =cons*10+byte (s [i]) — 48;

end;

q: =ms [q, ns];

if ns=0 then

begin

ee: =false;

writeln (1);

end else

if q=0 then

begin

ee: =false;

writeln (2);

end;

inc (i);

end;

if ee then

if q=6 then writeln ('0'#13#10'p1=', p1,' p2=', p2,' k=', sign*cons)

else writeln (3);

close (input);

close (output);

end.

Тексты авторских решений лабораторной работы № 3.

Вариант № 1:

const cc=6; {Количество символов в грамматике}

a: array [1. cc, 1. cc] of char= ({Отношения между символами}

{Z} {G} {N} {,} {ц} {-}

{Z} (' ',' ',' ','=',' ',' '),

{G} (' ',' ','=',' ','<',' '),

{N} (' ',' ',' ','>',' ',' '),

{,} (' ',' ','>',' ','>',' '),

{ц} (' ',' ',' ','>',' ','='),

{-} (' ',' ','=',' ','<',' '));

sp: byte=0; {Указатель вершины стека}

i: byte=1;

Ok: boolean=true;

LawCount=5; {Количество правил}

Laws: array [1. LawCount, 1.2] of string = (

('Z','N'),

('Z','GN'),

('G','Z,'),

('N','ц'),

('N','ц-N'));

var s: string; {Предложение для разбора}

stack: array [1.256] of char; {Стек}

l, p: byte;

Rule: string [10]; {Правило}

Function GetN (c: char): byte; {Узнать номер символа в грамматике}

begin

case c of

'Z': GetN: =1;

'G': GetN: =2;

'N': GetN: =3;

',': GetN: =4;

'-': GetN: =6;

'0'. '9': GetN: =5;

'-': GetN: =255;

else GetN: =0;

end;

end;

procedure Push (c: char); {Поместить символ в стек}

begin

inc (sp);

stack [sp]: =c;

end;

function Cmp (x, y: char): char; {Сравнить два символа}

var i, j: byte;

begin

i: =GetN (x); j: =GetN (y);

if (i=0) or (j=0) then Cmp: =' ' else

if x='-' then Cmp: ='<' else

if y='-' then Cmp: ='>' else

Cmp: =a [i, j];

end;

Function Top: char; {Верхний символ стека}

begin

Top: =Stack [sp];

end;

procedure Error (kind: byte); {Ошибка разбора}

begin

Ok: =false;

if Kind=1 then write ('BAD SYMBOL') else

if Kind=2 then Writeln ('NO RULE') else

if kind=3 then writeln ('MORE SYMBOLS');

end;

function FindLessPos: byte; {Поиск основы}

var p: byte;

begin

p: =sp;

While not (Cmp (Stack [p-1], Stack [p]) ='<') do dec (p);

FindLessPos: =p;

end;

function GetRule (p: byte): String; {Выделить правило из стека с позиции p}

var T: string;

i: byte;

begin

T: ='';

for i: =p to sp do T: =T+Stack [i];

GetRule: =T;

end;

function FindAndExchangeRule (var s: string): boolean; {Заменить строку s по некоторому правилу}

var i: byte;

b: boolean;

begin

for i: =1 to length (s) do if s [i] in ['0'. '9'] then s [i]: ='ц';

i: =1; b: =true;

while (i<=LawCount) and b do

if Laws [i, 2] =s then b: =false else inc (i);

b: =not b;

if b then s: =Laws [i, 1];

FindAndExchangeRule: =b;

end;

procedure XChangeStack; {Заменить символы в стеке}

begin

Stack [p]: =Rule [1];

Sp: =p;

end;

begin

assign (input,'input. txt');

reset (input);

assign (output,'output. txt');

rewrite (output);

readln (s); {Ввод предложения}

writeln (s);

s: =s+'-';

L: =Length (s);

Push ('-');

if s='-' then writeln ('BLANK LINE') else begin

repeat

Case Cmp (Top, S [i]) of

'<','=': begin

Push (S [i]);

Inc (i);

end;

'>': begin

p: =FindLessPos;

rule: =GetRule (p);

if FindAndExchangeRule (rule) then XchangeStack

else Error (2);

end;

' ': Error (1);

end;

until not Ok or (i>L) or ((sp=2) and (Stack ='Z') and (i=L));

if Ok then if (sp=2) and (Stack ='Z') then writeln ('OK')

else Error (3);

end;

close (input);

close (output);

end.

Остальные варианты описываются аналогичным способом.

Приложение 2

Исходные тексты условий заданий task. htm:

Работа № 1, вариант № 1:

Синтаксический анализ предложений для регулярной грамматики

Вариант № 1

Исходный файл:Laba0101. pas или Laba0101. c
Входной файл:input. txt
Выходной файл:output. txt

Постановка задачи

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

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

Обозначение терминальных символов при написании граммматики:

ц — терминальный символ «цифра» (0,1,2,3,4,5,6,7,8,9);

 б — терминальный символ «буква» ('A'. 'Z','a'. 'z');

Z - > Tц | Zц

T - > P+ | P;

P - > Rб | Pб | Pц

R - > Q=

Q - > б | Qб | Qц

Грамматика описывает предложения вида: < идентификатор> =< идентификатор> +< целое>.

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

Ввод:

Ввод исходных данных осуществляется из файла input. txt, который содержит строку, содержащую предложение для разбора.

Вывод

Для строки во входном файле программа должна вывести две или три строки решения согласно следуюшему правилу:

  • Если предложение корректное, то программа должна вывести в первую строку исходное выражение, во вторую строку число 0, и в третью строку две переменные с идентификаторами p1 и p2, и значение константы k, разделенные одним пробелом;
  • Если предложение некорректное, то программа должна вывести в первую строку исходное выражение, а во вторую строку вывести номер ошибки (1,2 или 3):

    1Если в процессе разбора встретился недопустимый символ
    2Если в процессе разбора встретился допустимый символ, но который не может находится на этом месте
    3Если в процессе разбора обнаружилось, что предложение не закончено

Пример 1

Файл ввода input. txt содержит:

a11=b-5

Файл вывода output. txt должен содержать следующие строки:

a11=b-5

0

p1=a11 p2=b k=-5

Пример 2

Файл ввода input. txt содержит:

1a=qwe-90

Файл вывода output. txt должен содержать следующие строки:

1a=qwe-90

2

Работа № 3, вариант № 1:

Синтаксический анализ предложений для грамматик с предшествованием

Вариант № 1

Исходный файл:Laba0301. pas или Laba0301. c
Входной файл:input. txt
Выходной файл:output. txt

Постановка задачи

Для заданной грамматики с предшествованием определить тип предшествования (простое или операторное), формат предложений, составляющих порождаемый язык. Найти отношения между всеми символами языка (в грамматиках с простым предшествованием) или отношения между терминальными символами (в грамматиках с операторным предшествованием). Разработать на ЭВМ прграмму синтаксического анализа для предложений языка. Обеспечить в программе вывод необходимых диагностических сообщений при обнаружении синтаксических ошибок во входных предложениях

Обозначение терминальных символов при написании граммматики:

кн — терминальный символ «цифра» (0,1,2,3,4,5,6,7,8,9);

ид — терминальный символ «буква» ('a'. 'z');

Z - > N | GN

G - > Z,

N - > кн | кн-N

Ввод:

Ввод исходных данных осуществляется из файла input. txt, который содержит строку, содержащую предложение для разбора.

Вывод

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

  • Если предложение корректное, то программа должна вывести строку OK
  • Если исходное предложение является пустой строкой, то программа должна вывести строку BLANK LINE
  • Если в конце правильного предложения есть лишние символы, то программа должна вывести строку MORE SYMBOLS
  • Если в процессе анализа не найдётся подходящего правила для свёртки, то программа должна вывести строку NO RULE
  • Если в процессе анализа встретится недопустимый символ, то программа должна вывести строку BAD SYMBOL

Пример

Файл ввода input. txt содержит:

Пример № 1

1,2

Пример № 2:

1

Файл вывода output. txt для данного входного файла должен содержать следующие строки:

Пример № 1:

1,2

OK

Пример № 2:

1

NO RULE

Приложение 3

Файл task. xml является одинаковым для всех вариантов первой лабораторной работы и содержит текст следующего вида:

Файл task. xml является одинаковым для всех вариантов третьей лабораторной работы и содержит текст следующего вида:

Приложение 4

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

Работа № 1, вариант № 1:

№ теста

Входной файл

Выходной файл

a11=b-5

A11=b-5

p1=a11 p2=b k=-5

x=y+123

X=y+123

p1=x p2=y k=123

1a=qwe-90

1a=qwe-90

b=c

B=c

b=c-1a

B=c-1a

a=9i-2

A=9i-2

d=f*2

D=f*2

abcd=efgh-6839

Abcd=efgh-6839

p1=abcd p2=efgh k=-6839

u1=u1/3

U1=u1/3

78+56.6

78+56.6 3

6−8.89

6−8.89 0 M=-2.89 N=2

4−6.321

4−6.321 0 M=-2.32 N=3

1−1

1−1 2

1a

1a 1

1−3h

1−3h 1

Работа № 3, вариант № 1:

№ теста

Входной файл

Выходной файл

1−2-3,4−5-6

1−2-3,4−5-6 OK

1−2-3,4−5;

1−2-3,4−5- NO RULE

1−2-3,8−9-0,5−5-5,

1−2-3,8−9-0,5−5-5, NO RULE

1−2,-3

1−2,-3 BAD SYMBOL

1−2-3,4−56−7

1−2-3,4−56−7 BAD SYMBOL

Показать весь текст
Заполнить форму текущей работой