страница 1страница 2
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Похожие работы
|
Учебно-методический комплекс по дисциплине "Теория языков и автоматов" для специальностей - страница №1/2
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН ВОСТОЧНО КАЗАХСТАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. С. АМАНЖОЛОВА Институт МАТЕМАТИКИ, ФИЗИКИ И ТЕХНИКИ для специальностей 050602 "Информатика" Усть-Каменогорск, 2005 Составитель Кадырова А.С., УМК обсужден на заседании доцент кафедры МмиКТ кафедры МмиКТ; Протокол №_ от “2”февраля_2005г. УМК одобрен на заседании метод. совета Института Ма- тематики, физики и техники Протокол № __ от “_3”_февраля 2005г. УМК рекомендован к изданию методическим отделом от "___" _______2005г. Учебно-методический комплекс предназначается для студентов специальности 050602 "Информатика", изучающих теоретические основы программирования в рамках дисциплины “Теория языков и автоматов ”, преподавателей, обеспечивающих учебный процесс по данной дисциплине. В нем представлены тематический план, график выдачи и сроки сдачи СРС, перечень тем рефератов, лабораторных работ, список литературы. Теоретический материал по каждой теме сопровождается заданиями для самостоятельной работы. Учебно-методический комплекс по теории языков и автоматов для студентов по специальности 050602 "Информатика" / Сост. Кадырова А.С. – Усть-Каменогорск: Изд-во ВКГУ, 2005. – 34 с. Восточно-Казахстанский государственный университет им. С. Аманжолова, 2005. 1. УЧЕБНАЯ ПРОГРАММА ДИСЦИПЛИНЫ (Syllabus)
Табл. 1
2.1 Цель курса: предоставить знания по основам теории языков и формальных грамматик, теории автоматов, методам разработки трансляторов.
для формирования теоретических основ программирования на любых трансляторах. 2.3 Содержание курса: подробно анализируется сходство и различия естественных и информационных языков и намечены пути построения информационных языков различных типов и их грамматик. Рассмотрены следующие вопросы:
Основная литература:
Дополнительная литература:
Рейтинг-шкала
3.8 Шкала и критерии оценивания различных видов работ на примере 3 кредита:
Виды работы:
Итого: 1 балл*5 лекций = 5 балла
Виды работы:
Итого: 5 баллов*4 лаб.раб. =20 баллов
Виды работы:
Итого: 2 балла* 2 письм.работ + 2 балла*0 реферат +1 балл*0 мини-тест = 4 балла 4. СРСП - 1 балл = 1 балл* 1 коллоквиум. Виды работы:
Итого: 1 балл *1 коллоквиум = 1 балл 4. Рубежный контроль 30 баллов = 10 баллов*1 инд.зад+20 баллов * конт.раб. Виды работы:
Итого: 10 баллов*1 инд.зад+20 баллов * конт.раб. = 30 баллов Итого по курсу за 3 кредит: 60 баллов Текущий контроль подразумевает оценку работы студента на лекционных занятиях (посещение, конспектирование), решение задач лабораторных работ, оформленное в виде отчета и защищенное перед группой студентов, выполнение письменных работ, своевременную сдачу рефератов, правильное выполнение мини-теста, коллоквиума. Рубежный контроль подразумевает самостоятельное выполнение и своевременный отчет индивидуальных заданий, правильное выполнение контрольных работ. Требования к выполнению лабораторных и индивидуальных заданий:
Требования к рефератам:
4.Политика курса :
Итоговая оценка по дисциплине в буквенных символах представляет собой сумму баллов по всем видам контроля. Схема оценки знаний студентов по дисциплине "Теория языков и автоматов"
2. УЧЕБНО-МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ ПО ДИСЦИПЛИНЕ 2.1 Тематический план курса Всего 3 кредитов
2.2 Тезисы лекционных занятий Тема 1: Синтаксис, семантика и прагматика языков программирования План
Транслятор - обслуживающая программа, преобразующая исходную программу, предоставленную на входном языке программирования, в рабочую программу, представленную на объектном языке. Ассемблер - системная обслуживающая программа, которая преобразует символические конструкции в команды машинного языка. Специфической чертой ассемблеров является то, что они осуществляют дословную трансляцию одной символической команды в одну машинную. Интерпретатор - программа или устройство, осуществляющее пооператорную трансляцию и выполнение исходной программы. В отличие от компилятора, интерпретатор не порождает на выходе программу на машинном языке. Распознав команду исходного языка, он тут же выполняет ее. Как в компиляторах, так и в интерпретаторах используются одинаковые методы анализа исходного текста программы. Эмулятор - программа или программно-техническое средство, обеспечивающее возможность без перепрограммирования выполнять на данной ЭВМ программу, использующую коды или способы выполнения операция, отличные от данной ЭВМ. Перекодировщик - программа или программное устройство, переводящие программы, написанные на машинном языке одной ЭВМ в программы на машинном языке другой ЭВМ. Макропроцессор - программа, обеспечивающая замену одной последовательности символов другой. Это разновидность компилятора. Он осуществляет генерацию выходного текста путем обработки специальных вставок, располагаемых в исходном тексте. Синтаксис - совокупность правил некоторого языка, определяющих формирование его элементов. Иначе говоря, это совокупность правил образования семантически значимых последовательностей символов в данном языке. Синтаксис задается с помощью правил, которые описывают понятия некоторого языка. Примерами понятий являются: переменная, выражение, оператор, процедура. Семантика - правила и условия, определяющие соотношения между элементами языка и их смысловыми значениями, а также интерпретацию содержательного значения синтаксических конструкций языка. Контрольные вопросы:
Основная литература: 1, 2, 3, 4, 11. Дополнительная литература: 18,19, 40. Тема 2: Грамматики. Классификация граммаитик План
Правила порождающих грамматик позволяют осуществлять преобразования строк. Ограничения же на виды правил позволяют выделить классы грамматик. Грамматики типа 0 - это грамматики, на правила вывода которых нет ограничений. Грамматики типа 1, или контекcтные грамматики -это грамматики, все правила которых имеют следующий вид: хАу -> хjу, где A -> VN, x, y, j Î (VN È VT)+. Грамматики типа 2 - это бесконтекстные, или контекстно-свободные грамматики (КС- грамматики). Правила вывода для этих грамматик имеют следующий вид: А ->j , где А ÎVN, j Î(VN È VT)*. Грамматики типа 3 - это автоматные грамматики (леворкурсивные, праворекурсивные). Контрольные вопросы:
Основная литература: 1, 6. Дополнительная литература: 18, 23-26, 30, 31. Тема 3: Алгоритмические проблемы План
Всякий алгоритм можно рассматривать как некоторое универсальное средство для решения целого класса задач. Но существуют такие классы задач, для решения которых нет общего универсального алгоритма. Проблемы решения такого рода задач называются алгоритмически неразрешимыми проблемами. Однако алгоритмическая неразрешимость проблемы решения задач того или иного класса не означает невозможность решения любой частной задачи из этого класса. Переход от интуитивного понятия алгоритма к формальному определению алгоритма (рекурсивные функции, машины Тьюринга) позволяет доказать алгоритмическую неразрешимость ряда проблем. Понятия, алгоритмы и методы теории формальных языков, грамматик и автоматов являются теоретической основой современной теории программирования, построения алгоритмических языков, проектирования языковых процессоров, в частности, компиляторов, ассемблеров, макрогенераторов и т.д. Развитие вычислительной техники поставило перед математической теорией алгоритмов новую задачу: стало необходимым классифицировать алгоритмы по различным признакам. Эквивалентность понятий "алгоритм" и "машина Тьюринга" позволила предположить, что поиски классификации алгоритмов окажутся связанными с поисками промежуточных моделей между моделями конечного автомата и машиной Тьюринга. Основная литература: 1, 2, 3, 4, 5, 11. Дополнительная литература: 17, 19, 30, 31. План
Автомат - это алгоритм, определяющий некоторое множество и, возможно, преобразующий его в другое множество. Неформальное описание автоматов выглядит следующим образом: автомат имеет входную ленту, управляющее устройство с конечной памятью для хранения номера состояния, а также может иметь вспомогательную (рабочую) и выходную ленты. Входную ленту можно рассматривать как линейную последовательность ячеек, причем каждая ячейка может хранить один символ из некоторого конечного входного алфавита. Лента автомата бесконечна, но занято на ней в каждый момент времени только конечное число ячеек. Граничные слева и справа от занятой области ячейки могут занимать специальные концевые маркеры. Маркер может стоять только на одном конце ленты или может отсутствовать вообще. Входная головка в каждый момент времени читает (обозревает) одну ячейку входной ленты. За один такт работы автомата входная головка может сдвинуться на одну ячейку вправо или остаться на месте, при этом она выполняет только чтение, т.е. в ходе работы автомата символы в ячейках входной ленты не меняются. Рабочая лента - это вспомогательное хранилище информации. Данные с нее могут читаться автоматом, могут и записываться на нее. также определяет направление сдвига рабочей головки и то, какую информацию записать на рабочую ленту. Существуют следующие типы автоматов: 1) машина Тьюринга (МТ); 2) линейно-ограниченный автомат (ЛОА); 3) автомат с магазинной памятью (МП-автомат); 4) конечный автомат (КА). Простейшим типом автоматов являются конечные автоматы. Конечный автомат имеет входную ленту, с которой за один такт может быть считан один входной символ. Возврат по входной ленте не допускается. Основная литература: 4, 5 Дополнительная литература: 21, 30, 32. Тема 5: Двухсторонние автоматы, машины Тьюринга План
Машина Тьюринга является абстракцией, которую нельзя реализовать практически. Поэтому алгоритмы для машины Тьюринга должны выполняться другими средствами. Основным следствием формализации алгоритмов с использованием машины Тьюринга является возможность доказательства существования или несуществования алгоритмов решения различных задач. Описывая различные алгоритмы для машин Тьюринга, и доказывая реализуемость всевозможных композиций алгоритмов, Тьюринг убедительно показал разнообразие возможностей предложенной им конструкции, что позволило ему выступить со следующим тезисом: “Всякий алгоритм может быть реализован соответствующей машиной Тьюринга”. Доказать тезис Тьюринга нельзя, так как в его формулировке не определено понятие “всякий алгоритм”. Его можно только обосновать, представляя различные алгоритмы в виде машин Тьюринга. Было доказано, что класс функций, вычислимых на этих машинах, совпадает с классом частично рекурсивных функций. Машина Тьюринга представляет собой автомат, имеющий бесконечную в обе стороны ленту, считывающую головку и управляющее устройство. Управляющее устройство может находиться в одном из состояний, образующих конечное множество Q = {q0, q1, ..., qn}. Множество Q называют внутренним алфавитом машины Тьюринга. Принципиальное отличие машины Тьюринга от вычислительных машин состоит в том, что ее запоминающее устройство представляет собой бесконечную ленту, из-за которой невозможна ее физическая реализация. Лента разделена на ячейки, в каждой из которых может быть записан один из символов конечного алфавита A = {a0, a1, . . . , am}, который называют входным алфавитом машины Тьюринга. Во время функционирования машины Тьюринга может быть заполнено конечное число ячеек. Считывающая головка в каждый момент времени обозревает ячейку ленты, в зависимости от символа в этой ячейке и состояния управляющего устройства записывает в ячейку новый символ или оставляет его без изменения, сдвигается на ячейку влево или вправо или остается на месте. При этом управляющее устройство переходит в новое состояние или остается в старом. Среди состояний управляющего устройства выделены начальное состояние q0 и заключительное состояние qz. Основная литература: 4, 5, 6 Дополнительная литература: 21, 30, 32. Тема 6: Детерминированные автоматы, автоматы фон Неймана План
Множество называется регулярным, если существует конечный детерминированный автомат, распознающий его. Так как произвольному конечному автомату однозначно соответствует детерминированный конечный автомат, операции над конечными автоматами эквивалентны операциям над регулярными множествами, или регулярными языками. Известно, что для произвольного конечного автомата можно построить эквивалентный автомат без циклов в начальных и (или) конечных состояниях. Конечные автоматы Мура и Мили предложено использовать в программах общего назначения (не только для логического управления) сравнительно давно. При этом наиболее разработанным вопросом применения конечных автоматов является синтаксический анализ в различного рода трансляторах алгоритмических языков. В настоящее время интерес к использованию конечных автоматов в программировании возобновляется, например, в области логического управления и в объектно-ориентированном программировании . В применениях процесс вычисления входной информации автоматов вынесен за пределы соответствующей, реализующей автомат, подпрограммы. Поэтому такие автоматы можно реализовать не только с помощью программы, но и на элементах параллельной логики по одному и тому же классическому заданию. Такие программно реализуемые автоматы будем называть автоматами с независимыми событиями (АНС). Конечные автоматы можно применять для описания алгоритмов произвольных циклических программ разнообразного назначения, а также подпрограмм, включающих запоминаемые от вызова подпрограммы до следующего ее вызова некоторые данные. Однако известные модели конечных автоматов не учитывают некоторых особенностей их программной реализации в указанных случаях, в частности, именно последовательного способа реализации вычислений и использования механизма циклов. Основная литература: 4, 5, 6 Дополнительная литература: 21. План
Языки могут быть заданы двумя способами: 1) грамматиками (порождающее средство языка); 2) автоматами (распознающее средство языка). Различным по сложности автоматам соответствуют разные типы языков. Типичным примером такого рода является модель конечного автомата. Эта модель позволяет описать многие процессы, заданные на конечных множествах и развивающиеся в счетном времени, что позволило создать для нее продуктивную теорию. Если в эту модель ввести бесконечность по какому- либо параметру, то это приводит к общему классу систем, например, к машинам Тьюринга. Развитие вычислительной техники поставило перед математической теорией алгоритмов новую задачу: эквивалентность понятий "алгоритм" и "машина Тьюринга" позволила предположить, что поиски классификации алгоритмов окажутся связанными с поисками промежуточных моделей между моделями конечного автомата и машиной Тьюринга. Теория языков, порожденная чисто лингвистическими задачами, оказалась в центре интересов математиков, занимающихся теорией алгоритмов, и ученых, разрабатывающих абстрактные модели динамических систем и теоретические основы автоматики. Теория формальных языков и грамматик является разделом математической лингвистики - специфической математической дисциплины, ориентированной на изучение структуры естественных и искусственных языков. По характеру используемого математического аппарата теория формальных грамматик и языков близка к теории алгоритмов и теории автоматов. Основная литература: 4, 5. Дополнительная литература: 21, 30, 31. План:
Формализация - это замена языка математическими символами. В результате мы добиваемся того, чтобы иметь возможность заменить вывод какого-либо выражения выводами формулы, его выражающей. Примеры формализации языков - теория формализованных языков. Формализованный язык - искусственный язык формальных логический исчислений. Является системой знаков и букв, операций, которые совершаются по правилам, которые определяются только формой выражений, составленных из символов. Основатели А. Черч, Г. Фреге. При создании формализованный язык стремиться к полной однозначности и предельной точности символов. Только благодаря этому создается возможность построить логику, в которой на основе некоторых исходных понятий, аксиом и применения четко сформулированных правил и получаются новые истинные теоремы. Преимущества языка формул заключается в том, что изложение мысли отличается компактностью и ясностью. Основная литература: 6. Дополнительная литература: 25, 30, 31. План
Компилятор - это обслуживающая программа, выполняющая трансляцию на машинный язык программы, записанной на исходном языке программирования. Также как и ассемблер, компилятор обеспечивает преобразование программы с одного языка на другой (чаще всего, в язык конкретного компьютера). Вместе с тем, команды исходного языка значительно отличаются по организации и мощности от команд машинного языка. Компилятор используется для широкого круга машинных программ с различными характеристиками. Компилятор можно разбить на несколько частей, каждая из которых выполняет конкретную работу. Любую из этих частей можно рассматривать как подпрограмму. Весь компилятор может легко размещен в оперативной памяти, его подпрограммы работают циклически. Методы компиляции реализую алгоритмы лексического, синтаксического анализа. Основная литература: 6, 8, 11. Дополнительная литература: 22, 23, 27. План
Синтаксический анализатор - компонента компилятора, осуществляющая проверку исходных операторов на соответствие синтаксическим правилам и семантике данного языка программирования. Несмотря на название, анализатор занимается проверкой и синтаксиса, и семантики. Избыточность в тексте программы устраняется на этапе лексического анализа. Выделение отдельных операторов происходит при синтаксическом анализе, при этом не проверяется смысл оператора. Генерирование команд означает анализ каждого оператора программы и сгенерирование эквивалентной ему последовательность машинных команд. Фиксированная последовательность команд называется каркасом. Основная литература: 5, 6, 16. Дополнительная литература: 23, 33, 35. 2.4 Планы лабораторных занятий Тема: Алгоритмы Лабораторная работа №1 "Алгоритмы. Конечные машины с памятью" Вопросы
Задание: Разработать словесные алгоритмы вычитания из некоторого числа А последовательности n чисел b1, b2, ..., bn: алгоритм вычисления по формуле: C=(...((A - b1) - b2) - ... - bn) Методические рекомендации описаны в [3] с.43. Основная литература: 1, 3, 5, 6. Дополнительная литература: 29. Тема: Автокоды Лабораторная работа №2 "Автокоды. Assembler" Вопросы
Задание: сложите двоичные числа 00010101 и 00001101 Методические рекомендации описаны в книге Абеля П. Язык Ассемблер для IBM PC и программирования . - М.: Высш. Школа, 1992. на стр. 4-32. Основная литература: 7, 14. Дополнительная литература: 32, 33, 35. Тема: Интерпретатор Лабораторная работа №3 "Процесс разработки и отладки программ в интерпретаторе" Задание: Разработать программу сложения двух чисел, вводимых пользователем с клавиатуры с отображением результата в среде интерпретатора GW Basic. Методические рекомендации описаны [34] стр.10-12, 14-15. Основная литература: 5, 6, 11. Дополнительная литература: 32, 33, 44. Тема: Макропроцессор Лабораторная работа №4 "Использование заставок для увеличения функциональных возможностей языка" Вопросы
Задание: найти максимум из двух назначений Методические рекомендации к лабораторной работе приводятся в учебном пособии Подбельского В.В. “Язык С++” на стр.274. Основная литература: 8, 9 Дополнительная литература: 34-38, 42. Тема: Компиляция программ Лабораторная работа №5 " Компиляция программ " Вопросы
Задание: найти сумму двух чисел. Методические рекомендации к лабораторной работе приводятся в учебном пособии Назарова С.В., Мельникова П.П. "Программирование на MS Visual Basic"- М.: Финансы и статистика, 2001 - на стр. 23-34. Основная литература: 11, 16. Дополнительная литература: 26, 33. Тема: Трансляция на машинный язык программирования Лабораторная работа №6 " Трансляция на машинный язык программирования" Вопросы
Задание: создать приложение, позволяющее проверить, является ли число, введенное пользователем простым. Методические рекомендации описаны в [13] на стр. 15-18. Основная литература: 4, 12, 13, 15. Дополнительная литература: 17, 35, 40. 2.5 Планы занятий в рамках самостоятельной работы студентов под руководством преподавателя Задания: - к лекционным занятиям будут дополнительно сообщены на лекциях; - к практическим занятиям СРСП будут дополнительно раздаваться в ходе занятий. Форма проведения СРСП:
Планы лекционных и лабораторных занятий Тема 1: Синтаксис, семантика и грамматики языков программирования Лекционное занятие
Рекомендуемая литература: 1,2, 3, 4, 11, 18,19, 40. Тема 2: Классификация грамматик Лекционное занятие
Рекомендуемая литература: 1, 6, 18, 23-26, 30, 31. Тема 3: Алгоритмические проблемы Лекционное занятие 1.Оперативная память ЭВМ. Чтение кода. Рекомендуемая литература: 1, 3, 4, 5, 11, 17, 30, 31.
Методические рекомендации в [3] стр.33-89. Тема 4: Классификация автоматов Лекционное занятие 1.Физическая реализация операторов программы. Рекомендуемая литература: 4, 5, 21, 30, 32. 1.Машина Тьюринга. Недетерминированные автоматы. Рекомендуемая литература: 4, 5, 6, 21, 0, 32. 1. Регулярные множества Рекомендуемая литература: 4, 5, 6, 21.
Рекомендуемая литература: 4, 5, 21, 30, 31. Тема 8: Формализация языков программирования Лекционное занятие
Рекомендуемая литература: 25, 30, 31. Лабораторное занятие 1. Макроподстановка средствами препроцессора Методические рекомендации в [37] стр.33-89.
Рекомендуемая литература: 6, 8, 11, 22, 23, 27. Лабораторное занятие 1.Специальные средства отладчика
Методические рекомендации в [34] стр.33-89, [14] стр 6-19, [19] стр. 11-15. 2.6 Планы занятий в рамках самостоятельной работы студентов следующая страница >> |
|