Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Умови задач



Талышинский Р.Р. Документализм в публицистике: Дис. канд. филол. наук/Моск. гос. ун-т.–М., 1986.–203 с.

Зав.кафедрой В.А. Кныш

Порядок виконання роботи

2.1. В залежності від номера прізвища по списку вибрати індивідуальне завдання з п.3.

Умови задач.

1. Змінні цілого типу. Оператор вводу.

2. Змінні символьного типу. Оператор виводу.

3. Масиви чисел.

4. Оператор циклу з параметром.

5. Оператор циклу с передумовою.

6. Оператор циклу з післяумовую.

7. Умовний оператор.

8. Оператор вибору.

9. Оператор присвоювання арифметичного виразу, до складу якого входять: ідентифікатори, операції “+”, “-“,”*”,”\”, дужки.

10. Оператор присвоювання арифметичного виразу, до складу якого входять: ідентифікатори, операція “+”,дужки, математичні функції.

11. Масиви вказівників.

12. Оператори break, continue. Змінні речовинного типу.

13. Строки. Оператори вводу строк.

14. Строки. Бібліотечні функції роботи зі строками.

15. Функції.

16. Структури (записи).

17. Файли. Ввід та вивід даних в файли.

18. Файли. Функції роботи з файлами.

19. Односпрямовані списки.

20. Двуспрямовані списки.

21. Використання системних(заготовочних) та власних модулів(файлів).

22. Об’єкти (класи). Описання конструкцій.

23. Об’єкти (класи). Наслідування.

24. Константи.

25. Об’єкти (класи). Поліморфізм.

26. Графіка.

27. Типи операцій.

28. Математичні функції.

29. Масиви символів.

30. Формати виводу.

Індивідуальні завдання для заочного та дистанційного відділів навчання

1. Побудувати спадний розпізнавач для оператору присвоювання арифметичного виразу. Арифметичний вираз містить: ідентифікатори і, j,к, операції: +, -; *, /.

Приклади ланцюжків:

1. i=k+k*j;

2. j=j+j*i/k;

3. k=i;

2. Побудувати спадний розпізнавач, який описує список змінних цілого та дійсного типів для мови Pascal. В якості змінних взяти ідентифікатори і, j,к. Змінні можуть бути покажчиками.

Приклади ланцюжків:

1. var i, i, ^j, i:integer;

2. var ^ j, i: real;

3. Побудувати спадний розпізнавач, який описує список змінних цілого та дійсного типів для мови С++. В якості змінних взяти ідентифікатори і, j,к. Змінні можуть бути покажчиками.

Приклади ланцюжків:

1. int i, *i, j, i;

2. float* j, i;

4. Побудувати спадний розпізнавач, який описує n-мірні масиви цілого та дійсного типів для мови Pascal. В якості змінних взяти ідентифікатори і,j. Приклади ланцюжків:

1. var i:array[1..n] of i:integer;

2. var j:array[1..n,1..n] of real;

5. Побудувати спадний розпізнавач, який описує n-мірні масиви цілого та дійсного типів для мови C++. В якості змінних взяти ідентифікатори і,j. Приклади ланцюжків:

1. int i[];

2. floatr j[2][3];

6. Побудувати спадний розпізнавач, який описує список одномірних масивів цілого та дійсного типів для мови Pascal. В якості змінних взяти ідентифікатори і,j,k,l Приклади ланцюжків:

1. var i:array[1..n] of real; j:array[1..n] of i:integer;

2. var k:array[1..n] of i:integer;

7.. Побудувати спадний розпізнавач, який описує список одномірних масивів цілого та дійсного типів для мови С++. В якості змінних взяти ідентифікатори і,j,k,l Приклади ланцюжків:

1. int i[]; float j[5]; int i[3];

2. int i[2]; float j[3];

ВСТУП

Дослідники, що вивчають питання появи розуму на нашій планеті, вважають, що вирішальну роль у його розвитку зіграла поява мови, яка дозволила не тільки виражати і зберігати знання, але й обмінюватися ними. Зі створенням комп'ютерів, виникла потреба в спілкуванні з подібними пристроями, оскільки виявилося необхідним передавати їм накази, завдання й описи роботи, що вони повинні виконувати. Для цієї мети почали розробляти спеціальні мови, що стали називатися штучними на відміну від природних мов спілкування людей. Штучні мови повинні бути, з одного боку, зручними і зрозумілими для людини, а з іншого боку - повинні сприйматися пристроями. Сполучення цих вимог в одній мові виявилося важкою задачею, тому з'явилися засоби для перетворення текстів з мови, зрозумілого людині, на мову пристрою. Такі засоби назвали трансляторами.

Транслятор може бути інтерпретуючого типу чи компілюю чого типу. У першому випадку його називають інтерпретатором вхідної мови, а в другому - компілятором.

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

На вхід компілятора подається текст, написаний вхідною мовою – мовою, зрозумілою людині, а результатом роботи компілятора є текст мовою, зрозумілому пристрою.

1. СТАДІЇ РОБОТИ КОМПІЛЯТОРА

Робота компілятора складається з декількох стадій, що можуть виконуватися послідовно, або сполучатися за часом. Перша стадія роботи компілятора називається лексичним аналізом, а програма, її реалізуюча, - лексичним аналізатором (ЛА). На вхід лексичного аналізатора подається послідовність символів вхідної мови. ЛА виділяє в цій послідовності найпростіші конструкції мови, що називають лексичними одиницями. Прикладами лексичних одиниць є ідентифікатори, числа, символи операцій, службові слова і т.д. ЛА перетворює вихідний текст, заміняючи лексичні одиниці їх внутрішнім представленням - лексемами. Лексема може включати інформацію про клас лексичної одиниці і її значення. Крім того, для деяких класів лексичних одиниць ЛА будує таблиці, наприклад, таблицю ідентифікаторів, констант, що використовуються на наступних стадіях компіляції.

Другу стадію роботи компілятора називають синтаксичним аналізом, а відповідну програму - синтаксичним аналізатором (СА). На вхід СА подається послідовність лексем, що перетвориться в проміжний код, що представляє собою послідовність символів дії чи атомів. Кожен атом включає опис операції, яку потрібно виконати, та містить вказівку на операнди, що використовуються. При цьому послідовність розташування атомів, на відміну від лексем, відповідає порядку виконання операцій, необхідному для одержання результату.

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

На четвертій стадії роботи компілятора генерується проміжний код, а на п’ятій стадії проходить його оптимізація.

На шостій стадії здійснюється побудова вихідного тексту. Програма, що реалізує цю стадію, називається генератором вихідного тексту (Г). Генератор кожному символу дії, що надходить на його вхід, ставить у відповідність одну чи кілька команд вихідної мови. У якості вихідної мови можуть бути використані команди пристрою, команди асемблера, або оператори якої-небудь іншої мови.

Всі стадії роботи компілятору тісно пов’язані з диспетчером таблиці символів та оброблювачем помилок. Неформально оброблювач помилок та диспетчер таблиці символів також можуть вважатися “стадіями” компілятору.

2. ПОБУДОВА КОМПІЛЯТОРА

Для побудови компілятора необхідно однозначне і точне завдання вхідної і вихідної мов. Таке завдання припускає визначення правил побудови допустимих конструкцій (виражень) мови. Множина таких правил називають синтаксисом мови. Крім того, завдання повинне включати опис призначення і змісту кожної конструкції мови. Такий опис називають семантикою мови.

3. ВИЗНАЧЕННЯ ФОРМАЛЬНОЇ ГРАМАТИКИ І МОВИ

Кінцева множина символів, неподільних у даному розгляді, називаєтьсясловником чи алфавітом, а символи, що входять у множину, - буквами алфавіту. Наприклад, алфавіт A = {a, b, c, +,?} містить 5 букв.

Послідовність букв алфавіту називається словом чи ланцюжком у цьому алфавіті. Число букв, що входять у слово, називається його довжиною.

Формальною породжуючою граматикою Г, називається наступна сукупність чотирьох об'єктів: Г = { Vт, VА, I Î VA, R },

де Vт - термінальний алфавіт (словник); букви цього алфавіту називаються термінальними символами; з них будуються ланцюжки, породжувані граматикою;

VA - нетермінальний, допоміжний алфавіт (словник); букви цього алфавіту використовуються при побудові ланцюжків; вони можуть входити в проміжні ланцюжки, але не повинні входити в результат породження;

I - початковий символ граматики I Î VA.

R - множина правил виводучи породжуючих правил виду a® b, де a і b - ланцюжки, побудовані з букв алфавіту Vт ÈVA, які називають повним алфавітом (словником) граматики Г.

У множині правил граматики можуть також входити правила з порожньою правою частиною виду Е ®. Щоб уникнути невизначеності через відсутність символу в правій частині правила, умовимося використовувати символ порожнього ланцюжка, записуючи таке правило у виді Е ®$.

Множина кінцевих ланцюжків термінального алфавіту Vт граматики Г виведених з початкового символу I називається мовою породжуваною граматикою Г.

Приклад

Нехай задана граматика Г:

Vт = {a, b, c}

VA = {I}

R = {I®abc}

Які ланцюжки можна одержати?

Мова: abc

Приклад

Дано граматику Г:

Vт = {a, b, c, d}

VA = {I, B, C}

R = {I®aB, B®Cd, B®dc C®$}

Які ланцюжки можна одержати?

Мова:

I®aB®aCd®a$d®ad

I®aB®adc

Якщо мова породжена граматикою Г не містить ні одного кінцевого ланцюжка, то вона називається порожньою мовою. Для того щоб мова не була порожня у правила граматики повинно входити хоча б одне правило

a®b

bÎVT

4. ТИПИ ФОРМАЛЬНИХ МОВ І ГРАМАТИК

У теорії формальних мов виділяються 4 типи граматик, яким відповідають 4 типи мов. Ці граматики виділяються шляхом накладення обмежень, що підсилюються, на правила граматики.





Дата публикования: 2014-12-10; Прочитано: 148 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...