15
1 КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА ФАКУЛЬТЕТ КІБЕРНЕТИКИ Кафедра теорії та технології програмування «ЗАТВЕРДЖУЮ» Заступник декана/директора з навчальної роботи ____________ Кашпур О.Ф. «____»____________2013 року РОБОЧА ПРОГРАМА НАВЧАЛЬНОЇ ДИСЦИПЛІНИ 1 СИСТЕМНЕ ПРОГРАМУВАННЯ для студентів денної форми навчання Напрям підготовки 6.040301 «Прикладна математика» (шифр і назва напряму підготовки) Спеціалізація: - Обчислювальна математика; - Дослідження операцій; - Моделювання та оптимізація систем; - Системний аналіз та прийняття рішення; - Стохастичний аналіз систем; КИЇВ – 2013 1 Робоча програма навчальної дисципліни є нормативним документом вищого навчального закладу і містить виклад конкретного змісту навчальної дисципліни, послідовність, організаційні форми її вивчення та їх обсяг, визначає форми та засоби поточного і підсумкового контролів.

РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

1

КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ

ІМЕНІ ТАРАСА ШЕВЧЕНКА

ФАКУЛЬТЕТ КІБЕРНЕТИКИ

Кафедра теорії та технології програмування

«ЗАТВЕРДЖУЮ»

Заступник декана/директора

з навчальної роботи

____________ Кашпур О.Ф.

«____»____________2013 року

РРООББООЧЧАА ППРРООГГРРААММАА ННААВВЧЧААЛЛЬЬННООЇЇ ДДИИССЦЦИИППЛЛІІННИИ11

СИСТЕМНЕ ПРОГРАМУВАННЯ для студентів денної форми навчання

Напрям підготовки 6.040301 «Прикладна математика» (шифр і назва напряму підготовки)

Спеціалізація:

- Обчислювальна математика;

- Дослідження операцій;

- Моделювання та оптимізація систем;

- Системний аналіз та прийняття рішення;

- Стохастичний аналіз систем;

КИЇВ – 2013

1 Робоча програма навчальної дисципліни є нормативним документом вищого навчального закладу і містить

виклад конкретного змісту навчальної дисципліни, послідовність, організаційні форми її вивчення та їх

обсяг, визначає форми та засоби поточного і підсумкового контролів.

Page 2: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

2

Робоча програма «Прикладна математика»

для студентів напряму підготовки 6.040301

«____» ______________ 2013 року - ___с.

Розробники: кандидат фіз.-мат. наук, доцент Волохов Віктор Миколайович

Робоча програма дисципліни «Системне програмування» затверджена на засіданні кафедри

теорії та технології програмування

Протокол від «25» червня 2013 року № 11

Завідувач кафедри _________________________ Нікітченко М.С. (підпис)

«_____» _________________2013 року

Протокол від «______ » ________________ 2013 року № ____

Схвалено науково - методичною комісією факультету кібернетики

Протокол від «____» _____________ 2013 року №_____

Голова науково-методичної комісії ____________________ Хусаїнов Д.Я. (підпис)

«_____» _________________ 2013 року

© Волохов В.М. 2013 рік

Page 3: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

3

Навчальна дисципліна “Системне програмування” є складовою освітньо-

професійної програми підготовки фахівців за освітньо-кваліфікаційним рівнем «бакалавр»

галузі знань “Інформатика” з напряму підготовки 6.040302 „Прикладна математика”.

Дана дисципліна базова нормативна за напрямком підготовки “Прикладна

математика”. Викладається у 7 семестрі 4 курсу в обсязі – 144 год.

( 4 кредити ECTS2) зокрема: лекції – 34 год., лабораторні –34 год., самостійна робота – 76

год. У курсі передбачено 2 змістових модулі та 2 модульних контрольних роботи.

Завершується дисципліна – іспитом у 7 семестрі.

Метою дисципліни „Системне програмування” є опанування теорії, методик та

отримання досвіду з проектування та програмування операційних систем, мовних

процесорів (трансляторів та інтерпретаторів мов програмування)..

Предмет навчальної дисципліни „Системне програмування” включає в себе

розгляд теоретичних аспектів проектування та створення операційних систем, мовних

процесорів, вивчення відповідних класів граматик, опанування алгоритмів та їх

програмування з метою отримання практичних навиків реалізації мовних процесорів.

Місце в структурно-логічній схемі спеціальності. Нормативна навчальна

дисципліна “Системне програмування” є складовою циклу професійної підготовки

фахівців освітньо-кваліфікаційного рівня "бакалавр", є базовою для засвоєння всіх інших

курсів та спецкурсів програмістського спрямування, окремих розділів теорії алгоритмів та

математичної логіки, теорії та технології баз даних.

Завдання – Набуття компетенцій, знань, умінь та навиків на рівні новітніх досягнень

у системному програмуванні, відповідно до кваліфікації фахівець з інформаційних

технологій.

В результаті вивчення навчальної дисципліни студент повинен:

знати: засоби проектування систем; стандарти моделювання, методи аналізу потреб;

методи розробки програмного забезпечення; принципи проектування користувацьких

інтерфейсів; інструментальні засоби мови програмування; передові технології; мови

програмування Java;

вміти: розробляти позробляти та аналізувати граматики мов програмування

розробляти, аналізувати та реалізувати алгоритми побудови компонентів мовного

процесора, розробляти специфікації з урахуванням встановлених вимог; роз'яснювати і

представляти проекти / розробки замовникам з використанням сучасних технологій

розробки програмних систем;.

Місце дисципліни. Нормативна навчальна дисципліна „Системне програмування” є

складовою циклу професійної підготовки фахівців освітньо-кваліфікаційного рівня

„бакалавр”.

Зв’язок з іншими дисциплінами. Дисципліна “Системне програмування” є

базовою для засвоєння всіх інших курсів та спецкурсів програміського спрямування,

окремих розділів теорії алгоритмів та математичної логіки. Навчальна дисципліна

„Системне програмування” є базовою для вивчення таких спеціальних дисциплін як

„Математична графіка”, та „Штучний інтелект”.

2 кредитів ECTS – кредит кратний 36 годинам (Наприклад, 3 кредити ECTS відповідає 108 год.).

Page 4: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

4

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

Контроль знань студентів здійснюється за модульно-рейтинговою системою.

Результати навчальної діяльності студентів оцінюються за 100-бальною шкалою. Робота в

кожному семестрі поділяється на два змістових модуля. При виставленні балів за

змістовий модуль враховується: оцінка за модульну контрольну роботу - 10 балів,

виконання студентом модульних лабораторних робіт – 10 балів/одна робота, робота на

самостійній роботі - 5 балів. Підсумковий контроль проводиться у формі письмового

заліку – 30 балів. Підсумкова оцінка 100=2*(10+2*10+5)+30.

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

У змістовий модуль 1 (ЗМ1) входять теми 1 - 8, а у змістовий модуль 2 (ЗМ2) –

теми 9 – 17. Обов’язковим для іспиту/заліку є виконання студентом лабораторних робіт та

здача двох модулів, при цьому мінімальна кількість балів - 21.

(зазначаються умови, невиконання яких унеможливлює допуск до іспиту чи заліку)

Оцінювання за формами контролю3: ЗМ1 ЗМ ХХ

Min. – _ балів Max. – __ бали Min. – __ бали Max. – __ балів Лабораторний практикум (4 роботи)

10 25 10 25

Доповнення - - 3 5 Модульна контрольна робота 1

10 25

Модульна контрольна робота 2

10 25

„3” – мінімальна/максимальна оцінку, яку може отримати студент. 1 – мінімальна/максимальна залікова кількість робіт чи завдань.

Для студентів, які набрали сумарно меншу кількість балів ніж критично-розрахунковий

мінімум – 60 балів для одержання іспиту/заліку обов’язково (здача лабораторних робіт).

У випадку відсутності студента з поважних причин відпрацювання та перездачі МКР

здійснюються у відповідності до „Положення про порядок оцінювання знань студентів при

кредитно-модульній системі організації навчального процесу” від 1 жовтня 2010 року.

При простому розрахунку отримаємо:

Змістовий

модуль1

Змістовий

модуль2

іспит / залік Підсумкова

оцінка

Мінімум 20 20 20 60

Максимум 29 30 40 99

Якщо студент з поважних причин, які підтверджено документально, був відсутній

при написанні модульної контрольної роботи, він має право на одне перескладання з

можливістю отримання максимальної кількості балів. Термін перескладання визначається

викладачем.

За активну роботу студента на практичних заняттях та на самостійній роботі до

семестрової оцінки може бути додано до 5 балів.

Якщо впродовж семестру студент не з’являвся на заняття (не залежно від причин),

не має модульних оцінок, у відповідних графах „Відомості обліку успішності КМСОНП”

виставляються „0”, а у графі іспиту – відмітка про недопуск.

Студент допускається до складання заліку, якщо кількість набраних ним балів за

семестр становить не менше 30 балів.

Залік вважається не зданим, якщо сумарна кількість балів з дисципліни у семестрі

складає менше 60 балів.

3 Див. Положення про порядок оцінювання знань студентів при кредитно-модульній системі організації навчального процесу від 1

жовтня 2010 року, а також Розпорядження ректора «Про методику розрахунку підсумкової оцінки дисциплін, які

читаються два і більше семестри» від 29 вересня 2010 року

Page 5: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

5

Для студентів, які набрали сумарно меншу кількість балів ніж критично-розрахунковий

мінімум – 21 балів для допуску до іспиту обов’язково повинні перескласти контрольні роботи та

здати заплановані лабораторні роботи. Студент має право на одне перескладання контрольної

роботи із можливістю отримання максимально 5 балів за кожну. Термін перескладання

визначається викладачем.

У випадку відсутності студента з поважних причин відпрацювання та перездачі МКР

здійснюються у відповідності до „Положення про порядок оцінювання знань студентів при

кредитно-модульній системі організації навчального процесу” від 1 жовтня 2010 року.

При цьому, кількість балів:

1-34 відповідає оцінці «незадовільно» з обов’язковим повторним вивченням дисципліни;

35-59 відповідає оцінці «незадовільно» з можливістю повторного складання;

60-64 відповідає оцінці «задовільно» («достатньо»);

відповідає оцінці «задовільно»;

75 - 84 відповідає оцінці «добре»;

85 - 89 відповідає оцінці «добре» («дуже добре»);

90 - 100 відповідає оцінці «відмінно».

Шкала відповідності (за умови іспиту)

За 100 – бальною

шкалою

За національною

шкалою

90 – 100 5 відмінно

85 – 89 4

добре

75 – 84

65 – 74 3

задовільно

60 – 64

35 – 59 2

незадовільно

1 – 34

Page 6: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

6

ППРРООГГРРААММАА ННААВВЧЧААЛЛЬЬННООЇЇ ДДИИССЦЦИИППЛЛІІННИИ

Змістовий модуль 1. Мови програмування та мовні процесори. Лексичний аналіз

Вступ

Лексичний аналіз у мовному процесорі – перша фаза роботи як компіляторів, так і

інтерпретаторів. Теоретичне підгрунття першої фази мовного процесора базується на

теорії скінчених автоматів, право лінійних граматик та на регулярних виразах. Методика

програмування лексичних аналізаторів базується на скінчених автоматах. Інструментальні

засоби побудови лексичних аналізаторів базуються на регулярних виразах.

ТЕМА 1. Поняття мовного процесора. Типи мовних процесорів. Основні фази мовного

процесора. Лексичний аналіз (9 год.)4

Мови програмування: прагматика, семантика та синтаксис. Приклади.

Класифікація мов програмування на основі парадигм системного програмування. Мовні

процесори. Структура мовного процесора типу транслятор (компілятор). . Структура

мовного процесора типу інтерпретатор.

ТЕМА 2. Порождуючi граматики. Класифікація граматик по Хомському. Породжуючi

граматики та еквівалентні їм класи автоматів (9 год.).

Теоретичні підходи до визначення синтаксичної (лексиної) структури програми.

Породжуючі граматики. Поняття мови, що визначається породжуючою граматикою.

Класифікація граматик по Хомському. Породжуючi граматики та еквівалентні їм класи

автоматів.

ТЕМА 3. Способи завдання скінчених автоматів. Недетермiнованi та детерміновані

скінчені автомати. Алгоритми перетворення недетермiнованого скінченого

автомата в детермінований (9 год.).

Означення скінченого автомати то мови, яку він розпізнає. Конфігурація

автомата, такт роботи автомата, робота скінченого автомата. Способи завдання функції

переходів скінченого автомата: табличний спосіб та графічний спосіб - діаграма

переходів скінченого автомата. Недеретміновані та детерміновані скінчені автомати.

Приклади.

ТЕМА 4. Програмування скінченого автомата. Методика побудови лексичного аналізатора

мови програмування. (9 год.).

Скінченоавтоматні множини: L = L1 * L2, L = L1 U L2 та L = {L1}.

Конструктивні доведення. Програмування скінченого автомата. Методика

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

ТЕМА 5. Мінімізація детермінованого скінченого автомата. Праволінійні граматики та

скінчені автомати. Побудова скінченого автомата на основі праволiнiйної

граматики (9 год.).

Алгоритми побудови множин недосяжних та тупикових станів скінченого

автомата. Алгоритм побудови класів еквівалентних станів скінченого автомата.

Алгоритм побудови скінченого автомата на основі праволiнiйної граматики.

Алгоритм побудови праволiнiйної граматики на основі скінченого автомата.

4 Зазначається загальна кількість годин з урахуванням лекцій, практичних (семінарських, лабораторних) і

самостійної роботи.

Page 7: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

7

ТЕМА 6. Регулярні множини та регулярні вирази. Основні тотожності над регулярними

виразами. Регулярні множини та скінчені автомати. Регулярні множини та

скінчені автомати (9 год.).

Означення регулярної множити та регулярного виразу. Алгебра регулярних

виразів. Тотожності в алгебрі регулярних виразів. Лінійні рівняння та системи

лінійних рівнянь в алгебрі регулярних виразів. Мінемальний розв’язок.

ТЕМА 7. ПОЛІЗ регулярного виразу. Інтерпретація ПОЛІЗ регулярного виразу – побудова

скінченого автомата (9 год.) Методика побудови лексичних аналізаторів мов

програмування.

Означення ПОЛІЗ. Приклад. Алгоритм перетворення алгебраїчного виразу у

формат ПОЛІЗ. Алгорити інтерпретації ПОЛІЗ регулярного виразу. Приклад.

Методика побудови лексичних аналізаторів мов програмування.

ТЕМА 8. Система LEX. Структура LEX-програми (9 год.).

Інструментальний комплекс LEX. Структура LEX-програми. Алгоритми

функціонування LEX-машини. Приклад.

Змістовий модуль 2. Розробка мовних процесорів мов програмування

ТЕМА 9. Аналіз ланцюжка W в граматиці G. Побудова дерева виводу на основі

лiвосторонньго аналізу ланцюжка W (8 год.)

Безпосереднє виведення та виведення в граматиці G. Ліво-, правостороння

стратегії виведення W в граматиці G. Синтаксична структура програми.

Синтаксичний терм у формі синтаксичного дерева. Алгоритм побудови

синтаксичного дерева нна основі лівосторонньої стратегії. Аналіз Π W в

граматиці G. Приклад. Алгоритм відтворення синтаксичного дерева на основі

аналізу Π W в граматиці G.

ТЕМА 10. Означення LL(k)-граматики. Властивості LL(k)- граматик. Множини FIRSTk ()

та FOLLOWk () (8 год.).

Означення LL(k)-граматики. Властивості LL(k)- граматик. Означення множин

FIRSTk () та FOLLOWk ). Приклади.

ТЕМА 11. Алгоритми побудови множин FIRSTk () та FOLLOWk (). Програмна

реалізація алгоритмів пошуку множин FIRST1() та FOLLOW1 (). (8 год.).

Алгоритми побудови множин FIRSTk () та FOLLOWk ().. Приклади. Програмна

реалізація алгоритмів пошуку множин FIRST1() та FOLLOW1().

ТЕМА 12. Перевірка LL(1)- умови для довільної КС- граматики. Побудова LL(1)- таблиці

для управління роботою LL(1)- синтаксичним аналізатором (8 год.).

Умови, за яких граматика G буде LL(1)-граматикою. Приклади. Алгоритм

побудови таблиці LL(1) - синтаксичний аналізатора. Приклад. Алгоритм LL(1) -

синтаксичний аналізатора (програмна реалізація).

ТЕМА 13. LL(1) - синтаксичний аналізатор. Поняття синтаксичної помилки. Алгоритми

локалізації синтаксичних помилок (8 год.).

Page 8: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

8

Алгоритм LL(1) - синтаксичний аналізатора (програмна реалізація). Поняття

синтаксичної помилки. Алгоритми локалізації синтаксичних помилок.

ТЕМА 14. Семантичний аналіз. Метод семантичних підпрограм (8 год.).

Поняття семантичного терму програми. Семантичний терм у формі двійок та

трійок. Семантичний терм у формі ПОЛІЗ. Приклади.

ТЕМА 15. Атрибутний метод визначення семантики в мовах програмування (8 год.).

Поняття атрибутної граматики. Синтезовані та успадковані атрибути. Атрибутний

обчислювач. Приклади.

ТЕМА 16. Семантичний терм програми. Оптимізація семантичного терму програми

(8 год.).

Алгоритми машинно-незалежної та машинно-залежної оптимізації семантичного

терму програми.

ТЕМА 17. Підсумкова лекція: напрямки та перспективи досліджень мовних процесорів та

мов програмування (8 год.)

Обговорення основних результатів курсу. Взаємозв’язок системного

програмування з технологіями баз даних та WEB-технологіями.

ТЕМАТИЧНИЙ ПЛАН ЛЕКЦІЙ І СЕМІНАРСЬКИХ ЗАНЯТЬ

лекції

Назва лекції (теми) Кількість годин

Лекції Лабор.

практ.

Самост.

робота

1 2 3 4 5

Змістовий модуль 1. Мови програмування та мовні процесори. Лексичний аналіз.

1 Поняття мовного процесора. Типи мовних

процесорів. Основні фази мовного процесора.

Лексичний аналіз.

2 2 5

2 Порождуючi граматики. Класифікація граматик по

Хомському. Породжуючi граматики та еквівалентні

їм класи автоматів.

2 2 5

3 Способи завдання скінчених автоматів.

Недетермiнованi та детерміновані скінчені автомати.

Алгоритми перетворення недетермiнованого

скінченого автомата в детермінований.

2 2 5

4 Мінімізація скінченого автомата. Побудова

лексичного аналізатора на основі скінченого

автомата. Методика побудови лексичного

аналізатора мови програмування.

2 2 5

5 Праволінійні граматики та скінчені автомати.

Побудова скінченого автомата на основі

праволiнiйної граматики.

2 2 5

6 Регулярні множини та регулярні вирази. Основні 2 2 5

Page 9: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

9

1 2 3 4 5

тотожності над регулярними виразами. Регулярні

множини та скінчені автомати. Регулярні множини та

скінчені автомати.

7 ПОЛІЗ регулярного виразу. Інтерпретація ПОЛІЗ

регулярного виразу – побудова скінченого автомата.

2 2 5

8 Система LEX. Структура LEX-програми. 2 2 5

Модульна контрольна робота 1

Змістовий модуль 2. Розробка мовних процесорів мов програмування

9 Аналіз ланцюжка W в граматиці G. Побудова дерева

виводу на основі лiвосторонньго аналізу ланцюжка

W.

2 2 4

10 Означення LL(k)-граматики. Властивості LL(k)-

граматик. Множини FIRST(k) та FOLLOW(k).

2 2 4

11 Алгоритми побудови множин FIRST(k) та

FOLLOW(k). Програмна реалізація алгоритмів

пошуку множин FIRST(1) та FOLLOW(1).

2 2 4

12 Перевірка LL(1)- умови для довільної КС- граматики.

Побудова LL(1)- таблиці для управління роботою

LL(1)- синтаксичним аналізатором.

2 2 4

13 LL(1) - синтаксичний аналізатор. Поняття

синтаксичної помилки. Алгоритми локалізації

синтаксичних помилок.

2 2 4

14 Семантичний аналіз. Метод семантичних підпрограм. 2 2 4

15 Атрибутний метод визначення семантики в мовах

програмування.

2 4

16 Семантичний терм програми. Оптимізація

семантичного терму програми.

2 2 4

17 Підсумкова лекція: напрямки та перспективи

досліджень мовних процесорів та мов програмування

2 2 4

Модульна контрольна робота 2

Іспит за VI семестр 34 34 76

Загальний обсяг 144 годин, в тому числі:

Лекцій – 34 год.,

Практичні – 34 год.,

Самостійна робота – 76 год.

Змістовий модуль 1. Мови програмування та мовні процесори. Лексичний аналіз.

Лекція 1. Поняття мовного процесора. Типи мовних процесорів. Основні фази

мовного процесора. Лексичний аналіз. Приклади. [1, 2, 3] – 2год.

Історична довідка. Парадигми (аспекти) мов програмування та мовних процесорів.

Структура мовного процесора типу транслятор. Структура мовного процесора типу

інтерпретатор. Блоки мовного процесора. Перегляди мовного процесора.

Лабораторний практикум. Лабораторна робота №1: Розробка програми-

аналізатора довільного текстового файлу та пошук відповідних груп лексем. – 2 год.

Завдання для самостійної роботи. Робота над рефератом. - 5 год.

Page 10: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

10

Лекція 2. Порождуючi граматики. Класифікація граматик по Хомському.

Породжуючi граматики та еквівалентні їм класи автоматів. Приклади. [1, 2, 3] – 2год.

Порождуючi граматики. Класифікація граматик по Хомському. Породжуючi

граматики та еквівалентні їм класи автоматів. Поняття мовного процесора. Типи

мовних процесорів. Основні фази мовного процесора. Структура мовного процесора типу

транслятор та типу інтерпретатор. Основні блоки мовного процесора. Перегляди

мовного процесора. Лексичний аналіз. Функції лексичного аналізатора. Вхідні та вихідні

структури даних лексичного аналізатора. Скінчені автомати.

Лабораторний практикум. Лабораторна робота №1: Розробка програми-

аналізатора довільного текстового файлу та пошук відповідних груп лексем. – 2 год.

Завдання для самостійної роботи. Робота над рефератом. - 5 год.

Лекція 3. Лексичний аналіз у мовних процесорах. Способи завдання скінчених

автоматів. Недетермiнованi та детерміновані скінчені автомати. Алгоритми перетворення

недетермiнованого скінченого автомата в детермінований. Мінімізація скінченого

автомата.. Приклади. [1, 2, 3] – 2год.

Способи завдання скінчених автоматів. Недетермiнованi та детерміновані

скінчені автомати. Алгоритми перетворення недетермiнованого скінченого автомата в

детермінований. Мінімізація скінченого автомата.. Приклади.

Лабораторний практикум. Лабораторна робота №1: Розробка програми-

аналізатора довільного текстового файлу та пошук відповідних груп лексем. – 2 год.

Завдання для самостійної роботи. Підготовка тестових даних для Лабораторної

роботи №1. Тестування програми з використанням створених (описаних) автоматів. – 5

год.

Лекція 4. Мінімізація скінченого автомата. Побудова лексичного аналізатора на

основі скінченого автомата. Методика побудови лексичного аналізатора мови

програмування.. Приклади. [1, 2, 3] – 2 год.

Алгоритми мінімізації скінчених автоматів. Побудова мінімального скінченого

автомата еквівалентного даному. Приклади. – 2 год.

Лабораторний практикум. Лабораторна робота №2. Програмна реалізація

скінчених автоматів. – 2 год.

Завдання для самостійної роботи. Розробка структур даних для представлення

скінченого автомати в пам’яті ЕОМ. – 5 год.

Лекція 5. Праволінійні граматики та скінчені автомати. Побудова скінченого

автомата на основі праволiнiйної граматики. Система лінійних рівнянь в алгебрі

регулярних виразів. Метод Гаусса. [1, 2, 3] – 2год.

Теоретичні основи автоматизації побудови лексичних аналізаторів. Система

лінійних рівнянь в алгебрі регулярних виразів. Метод Гаусса. Приклад. – 2 год.

Лабораторний практикум. Лабораторна робота №2. Програмна реалізація

скінчених автоматів. – 2 год.

Завдання для самостійної роботи. Програмування скінчених автоматів та

тестування створеної програми. – 5 год.

Лекція 6. Регулярні множини та регулярні вирази. Основні тотожності над

регулярними виразами. Регулярні множини та скінчені автомати. Регулярні множини та

скінчені автомати. Приклади. [1, 2, 3] – 2 год.

Регулярні множини та регулярні вирази. Основні тотожності над регулярними

виразами. Регулярні множини та скінчені автомати. Регулярні множини та скінчені

автомати. Теоретичні основи автоматизації побудови лексичних аналізаторів. Приклад.

– 2 год.

Page 11: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

11

Лабораторний практикум. Лабораторна робота №2. Програмна реалізація

скінчених автоматів. – 2 год.

Завдання для самостійної роботи. Програмування скінчених автоматів та

тестування створеної програми. – 5 год.

Лекція 7. ПОЛІЗ регулярного виразу. Інтерпретація ПОЛІЗ регулярного виразу –

побудова скінченого автомата. Приклади. [1, 2, 3] – 2 год.

Алгоритм побудови скінченого автомати на основі ПОЛІЗ регулярного виразу.

Приклади.

Лабораторний практикум. Здача лабораторної роботи №2.: „Програмна

реалізація скінчених автоматів” – 2 год.

Завдання для самостійної роботи. Побудова регулярних виразів для класів

лексем відомих мов програмування. – 5 год.

Лекція 8. Система LEX. Структура LEX-програми.

Структура LEX-програми. Позначення та скорочення. Розділ активних та

неактивних правил. Розділ підпрограм на Host-мові. Приклади. [2, 3] – 2 год.

Лабораторний практикум. Здача лабораторної роботи №2.: „Програмна

реалізація скінчених автоматів” – 2 год.

Завдання для самостійної роботи. Побудова регулярних виразів для класів

лексем відомих мов програмування. – 5 год.

Контрольні запитання до змістового модуля 1.

1. Блочна структура мовного процесора типу інтерпретатор.

2. Алгоритм пошуку недосяжних станів скінченого автомата.

3. Алгоритм мінімізації детермінованого скінченого автомата.

4. Алгоритм розв’язування системи лінійних рівнянь в алгебрі регулярних виразів.

5. Алгоритм інтерпретації ПОЛІЗ регулярного виразу.

6. Методика програмування лексичних аналізаторів на основі скінчених автоматів.

7. ПОЛІЗ регулярного виразу. Інтерпретація ПОЛІЗ регулярного виразу.

Типове завдання модульної контрольної роботи №1.

1. Структура мовного процесора типу інтерпретатор.

2. ПОЛІЗ регулярного виразу. Алгоритм інтерпретації ПОЛІЗ регулярного виразу.

3. Мінімізувати скінчений автомат з таблицею переходів:

\Q 1 2 3 4 5 6 7

X 4 1 4 2 6 7 6

Y 1 5 5 1 5 6 7

Q={1,2,3,4,5,6,7}, ={X,Y}, q0=1, F={2,5}.

Лекція 9. Аналіз ланцюжка W в граматиці G. Побудова дерева виводу на основі

лiвосторонньго аналізу ланцюжка W. Приклади. [1, 3, 5] – 2год.

Теоретичні основи побудови синтаксичних аналізаторів мов програмування.

Приклади.

Лабораторний практикум. Лабораторна робота №3.: „Реалізація лексичного

аналізатора для відомих мов програмування ” – 2 год.

Завдання для самостійної роботи. Ознайомлення з функціональністю пакетів

прикладних програм LEX та JCC . – 4 год.

Page 12: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

12

Лекція 10,11. Означення LL(k)-граматики. Властивості LL(k)- граматик. Множини

FIRST(k) та FOLLOW(k). [1, 3, 5] – 4 год.

Означення множин FIRST(k) та FOLLOW(k). Алгоритми побудови множин

FIRST(k) та FOLLOW(k). Приклади.

Лабораторний практикум. Лабораторна робота №3: „Реалізація лексичного

аналізатора для відомих мов програмування ” – 4 год.

Завдання для самостійної роботи. Ознайомлення з функціональністю пакетів

прикладних програм LEX та JCC . – 4 год.

Лекція 12. Перевірка LL(1)- умови для довільної КС- граматики. Побудова LL(1)-

таблиці для управління роботою LL(1)- синтаксичним аналізатором. Приклад. [1, 3, 5] –

2 год.

Лабораторний практикум. Здача лабораторної роботи №3.: „Реалізація

лексичного аналізатора для відомих мов програмування ” – 2 год.

Завдання для самостійної роботи. Ознайомлення з функціональністю пакетів

прикладних програм LEX та JCC . – 4 год.

Лекція 13. LL(1) - синтаксичний аналізатор. Поняття синтаксичної помилки.

Алгоритми локалізації синтаксичних помилок. [1, 3, 5] – 2 год.

Алгоритм LL(1)-синтаксичного аналізатора. Приклад. Поняття синтаксичної

помилки. Методи локалізації синтаксичних помилок. Приклад.

Лабораторний практикум. Здача лабораторної роботи №3.: „Реалізація

лексичного аналізатора для відомих мов програмування ” – 2 год.

Завдання для самостійної роботи. Ознайомлення з функціональністю пакетів

прикладних програм LEX та JCC . – 4 год.

Лекція 14. Семантичний аналіз. Метод семантичних підпрограм. [1, 3, 5] – 2 год.

Поняття семантичного терму програми. Форми семантичного терму програми.

Поняття семантичної підпрограми. Приклади.

Лабораторний практикум. Лабораторна робота №4.: „Потоки в задачах” – 2 год.

Завдання для самостійної роботи. Ознайомлення з бібліотеками підтримки

потоків у MS Windows та Unix . – 4 год.

Лекція 15. Атрибутний метод визначення семантики в мовах програмування.

[1, 3, 5] – 2 год.

Поняття атрибуту. Визначення синтезованого та успадкованого атрибуту.

Поняття віртуальної обчислювальної машини. Приклад.

Лабораторний практикум. Лабораторна робота №4.: „Потоки в задачах” – 2 год.

Завдання для самостійної роботи. Ознайомлення з бібліотеками підтримки

потоків у MS Windows та Unix . – 4 год.

Лекція 16. Семантичний терм програми. Оптимізація семантичного терму

програми. [1, 3, 5] – 2 год.

Означення еквівалентності двох семантичних термів програми. Напрямки

оптимізації. Машинно-незалежні та машинно-залежні методи оптимізації програм.

Приклад.

Лабораторний практикум. Здача лабораторної роботи №4. „Потоки в задачах” –

2 год. Завдання для самостійної роботи. Ознайомлення з бібліотеками підтримки

потоків у MS Windows та Unix . – 4 год.

Page 13: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

13

Лекція 17. Підсумкова лекція: напрямки та перспективи досліджень мовних

процесорів та мов програмування. [1, 3, 5] – 2 год.

Технології розробки мовних процесорів та наукова проблематика: семантичний та

синтаксичний аспекти.

Лабораторний практикум. Здача лабораторної роботи №4. „Потоки в задачах” –

2 год. Завдання для самостійної роботи. Ознайомлення з бібліотеками підтримки

потоків у MS Windows та Unix . – 4 год.

Контрольні запитання до змістового модуля 2.

1. Означення LL(k)- граматики. Наслідки означення.

2. Алгоритм побудови множини First.

3. Алгоритм побудови множини Follow.

4. Алгоритм побудови таблиці управління LL(1) – синтаксичним аналізатором.

5. Алгоритм LL(1) – синтаксичного аналізатора.

Типове завдання модульної контрольної роботи №2.

1. Алгоритм побудови скінченого автомата на основі праволінійної граматики.

2. Для граматики G={N, , P, S} з схемою Р:

S A B | A C b | a

B b B | C SA

Знайти множини Local 2(S, Аi), Аi N, де N={S, A, B, C}, = {a, b}.

Перелік лабораторних робіт для додаткового виконання (самостійна робота).

1. Скористайтеся метасистемою LEX та реалізуйте лексичні аналізатори наступних мов

програмування:

1.1.Мова Pascal;

1.2.Мова Сl;

1.3.Мова С++;

1.4.Мова Java;

1.5.Мова C#l;

1.6. Мова Fortran.

Перелік питань на іспит: VII семестр.

Основні теоретичні питання

1. Скінченні автомати (СА). Детерміновані та недетерміновані СА. Повністю визначені

СА. Недетермінізм в скінченних автоматах.

2. Побудувати скінченний автомат М, такий що

L(M) = L(M1) L(М2),

де M1 та М2 - скінченні автомати.

3. Означення безпосереднього виведення та виведення в граматиці G.

4. Означення - нетермінала. Алгоритм пошуку - нетерміналів для КС-граматики.

5. Означення мовного процесора. Типи мовних процесорів. Вхідні та вихідні дані

інтерпретатора.

6. Регулярні множини та регулярні вирази. Тотожності в алгебрі регулярних виразів.

Співвідношення між регулярними множинами та регулярними виразами.

7. Алгоритм побудови скінченого автомата на основі праволінійної граматики.

8. Поняття фази мовного процесора. Одно- та багато-прохідні мовні процесори.

Page 14: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

14

9. Обернений польський запис для арифметичних виразів (ПОЛІЗ). Алгоритм

перетворення арифметичного виразу в форму оберненого польського запису.

10. Означення недосяжного стану в скінченому автоматі. Алгоритм пошуку недосяжних

станів в скінченому автоматі.

11. Означення породжуючої граматики G. Структура правил в схемі Р для різних типів

граматик.

12. Означення тупикового стану для скінченого автомата (СА). Алгоритм пошуку

множини тупикових станів СА.

13. Вхідні та вихідні дані синтаксичного аналізатора. Способи завдання синтаксичної

структури програми.

14. Конфігурації скінченого автомата (СА). Початкова та заключна конфігурація СА.

Такт роботи СА. Мова, котру розпізнає (сприймає) СА.

15. Означення еквівалентності двох скінчених автоматів (СА). Алгоритм побудови

мінімального СА для даного детермінованого СА.

16. Побудувати скінчений автомат М, такий що

L(M) = L(M1) * L(М2),

де M1 та М2 - скінченні автомати.

17. Структура мовного процесора інтерпретуючого типу (інтерпретатора).

18. Найменший розв`язок рівняння X=X + , де та - регулярні вирази. Системи

лінійних рівняннь з регулярними коефіцієнтами. Метод Гауса розв`язування

лінійних рівняннь з регулярними коефіцієнтами.

19. Побудувати скінченний автомат М, такий що

L(M) = { L(M1) },

де M1 - скінченний автомат.

20. Інтерпретація ПОЛІЗ для регулярного виразу.

21. Означення рекурсивного нетермінала в граматиці G. Алгоритм пошуку

ліворекурсивних нетерміналів.

22. Блок лексичного аналізу в мовному процесорі. Вхідні та вихідні дані блока

лексичного аналізу. 23. Алгоритм побудови таблиці управління LL(1) – синтаксичного аналізатора;

24. Алгоритим LL(1) – синтаксичного аналізатора (магазинний автомат);

25. Методика побудови синтаксичного аналізатора за умови невідповідності декількох правил

LL(1) – умові.

26. Метод рекурсивного спуску побудови синтаксичного аналізатора для класу LL(1) –

граматик.

27. Алгоритм пошуку контексту Localk(S,Ai), де Ai - нетермінал.

28. Алгоритм перевірки на властивість LL(k) – граматики, де k > 1.

29. Алгоритм побудови таблиці управління LL(k) – синтаксичного аналізатора, де k > 1.

30. Алгоритм функціонування LL(k) – синтаксичного аналізатора, де k > 1.

31. Семантичний терм програми в формі ПОЛІЗ. ПОЛІЗ для конструкцій управління в мові С.

32. Семантичний терм програми в формі дерева. Алгоритм побудови семантичного терму

програми і формі дерева.

33. Атрибутний метод побудови семантичного терму програми. Синтезовані та успадковані

атрибути.

Рекомендована література

1. Ахо А. Ульман Дж. Теория синтаксического анализа, перевода и компиляции. Т1. М.

Мир. 1978.

2. Грис Д. Построение компиляторов для ЦЭВМ. М. Мир. 1976.

3. Льюис Ф., Стирнз Р., Розенкранц Д. Теоретические основы построения компиляторов.

М. Мир. 1979.

4. Вирт Н. Систематическое программирование. Введение. М.Мир. 1977.

Page 15: РОБОЧА РП ПРОГРААМА НА НАВЧАЛЛЬЬННООЇ ДИ ...cyb.univ.kiev.ua/library/courses-programs/am/sp-b4.pdf · 2013-12-06 · Мови програмування:

15

5. В.В. Волохов, Б.І. Бойко, В.Ф. Кузенко, С.С. Шкільняк. Методичні рекомендації до

лабораторного практикуму побудови мовних процесорів з курсу „Системне

програмування” – К. Київський національний університет імені Тараса Шевченка,

2001. – 52 с.

Додаткова література

1. Агафонов В.Н. Синтаксический анализ языков программирования. Новосибирск. Из-

во НГУ. 1981.

2. Братчиков И.А. Синтаксис языков программирования. М. Наука. 1975.

3. Вайнгартен Ф. Трансляция языков программирования. М. Мир. 1977.

4. Вирт Н. Систематическое программирование. Введение. М.Мир. 1977.

5. Глушков В.М., ЦейтлинГ.Е., Ющенко Е.Л. Алгебра, языки, программи-рование.

Киев. Наукова думка. 1974.

6. Ингерман П. Синтаксически ориентированный транслятор. М. Мир. 1969.

7. Лебедев В.Н. Введение в системы программирования. М. Статистика. 1975.

8. Миккиман У., Хорнинг Дж., Уортман Д. Генератор компиляторов. М. Статистика.

1980.

9. Пратт Т. Языки программирования: разработка и реализация. М. Мир. 1979.

10. Чантер Р. Проектирование и конструирование компиляторов. М. финансы и

статистика. 1984.

11. Бек Д. Введение в системное программирование. М. Мир. 1988.