Ответы_экзамен_2009 (1115077), страница 3
Текст из файла (страница 3)
A .
Следовательно, L(G2){ }. Таким образом, L(G1)L(G2), т.к. L(G2), L(G1).
КРИТЕРИИ: (а) нет ответа; определение с ошибками: –5
(б) нет ответа; неверный ответ; нет обоснования; неверное обоснование: –5
Замечание. Для обоснования неэквивалентности достаточно привести одну различающую цепочку.
Ответ почти эквивалентны считать верным.
3. По леволинейной грамматике G была построена диаграмма состояний A:
| ( (б) Детерминирован ли разбор по данной диаграмме ? Объясните ответ. | |
(в) Если разбор по диаграмме состояний A недетерминированный (т.е. конечный автомат A — недетерминированный), то с помощью соответствующего алгоритма построить эквивалентный детерминированный автомат AD , иначе — написать для A программу-анализатор на языке C++. |
Ответ: (a) G: S c | Sc | Ac
A Bb| Aa
B Aa | Bb | b
(б) Разбор недетерминирован, т.к. автомат A не является детерминированным: из состояния A возможен переход в более чем одно состояние (по символу а). [или: т.к. из состояния B возможен переход в более чем одно состояние (по символу b)]
(в)
Построим таблицу переходов для AD :
a b с { H } { B } { S } { B } { A, B } { A, B } { A, B } { A, B } { S } { S } { S }
Начальное состояние: { H }. Заключительное состояние: { S }.
AD :
Допускаются другие способы построения, дающие в итоге такой же автомат AD с точностью до обозначений вершин.
КРИТЕРИИ: (а) нет ответа; грамматика построена, но неэквивалентная или не соответствующая
диаграмме : –3
(б) нет ответа; неверный ответ; ошибочное объяснение : –3
(в) нет ответа или программа на C++ приведена;
неэквивалентный или недетерм. автомат построен : –4
4. | И | |
f — переместить перо по диагонали на одну клетку вправо-вниз. Например, по последовательности cccccfffffccccc интерпретатор построит букву «N» размера 55, изображенную на рисунке. Построить грамматику с терминальным алфавитом {c, f }, описывающую буквы «N» любого размера nn, n 1. В грамматике должно быть не более 7 правил вывода (считая альтернативы). |
Ответ: Описание буквы «N» размера nn — это цепочка cnf ncn. Следовательно, требуется построить грамматику, порождающую язык { cnf ncn | n 1}: S CFSc | Cfc
FC CF
Ff ff
Cf cf
Cc cc
КРИТЕРИИ: порождается пустая цепочка: –5
имеется лишняя (непустая) или недостающая цепочка: –10
за каждое лишнее правило: –3 (количество правил в условии дано с запасом)
Замечание. Грамматика S CFSc | CFc
FC CF
F f
C c ошибочная, так как порождает лишние цепочки, напр.: cfcfcc.
5. | (а) (б) | Сформулируйте достаточное условие применимости метода рекурсивного спуска с учетом возможной -альтернативы (т.н. «канонический вид» КС-грамматики). Выполняется ли это условие для грамматики G ? Обоснуйте ответ. G: S dDS | cBA | D dD | aAc| b A aAca | bB B cB | |
Ответ: (а) Достаточное условие: каждая группа правил с одинаковой левой частью имеет один из перечисленных ниже видов и выполняются дополнительные условия:
-
либо X → ,
где (T N)* и это единственное правило вывода для этого нетерминала; -
либо X → a11 | a22 | ... | ann,
где ai T для всех i 1, 2,..., n ; ai aj для i j; i (T N )*, т. е. если для нетерминала X правил вывода несколько, то они должны начинаться с терминалов, причем все эти терминалы должны быть попарно различными; -
либо X → a11 | a22 | ... | ann | ,
где ai T для всех i 1, 2,..., n; ai aj для i j; i (T N )*, и first (X ) follow (X ) .
Замечание. Допускаются обозначения VT , VN для обозначения алфавитов терминальных и нетерминальных символов, и обозначение V для их объединения. V T N (V VT VN)
(б) нет, не выполняется: т.к. для правила B cB | не выполняется условие first (B ) follow (B ) .
[ first (B ) {c}, follow (B ) {a,b,c} first (B ) follow (B ) {c}≠ ]
КРИТЕРИИ: (а) нет ответа, ошибки в формулировке: –5
(б) нет ответа; неверный ответ; нет обоснования ; ошибочное обоснование: –5
6. | Описать грамматику, порождающую язык Lвх { ckbm | m k 0 }, и вставить в нее действия вида cout << ′символ′ ; так, чтобы для любых целых m k 0 в процессе анализа рекурсивным спуском входной цепочки ckbm печаталась бы цепочка ad kbm-k. |
Ответ. Соглашение : запись a является сокращением cout << ′a ′;
Lвх { ckbm| m k 0 } { ck bk bm-k| m k 0 } (входной язык). Грамматика для Lвх, к которой применим метод рек. спуска, выглядит так:
S AB
A cAb |
B bB | .
Lц { ad k bm-k | m k 0 } (целевой язык).
Грамматика с действиями:
S AB A cAb d |a B b b B | | или : S aAB A c d Ab | B b b B | |
КРИТЕРИИ:
Грамматика не порождает Lвх , или не генерирует Lц : 0
Порождает Lвх и формально генерирует соответствующие цепочки из Lц ,
но метод рек. спуска неприменим: -5
7. Перечислите этапы технологического цикла создания программного продукта. Кратко охарактеризуйте каждый этап, указав назначение и результат его прохождения.
Ответ:
ЭТАП | ХАРАКТЕРИСТИКА |
Анализ (определение) требований Постановка задачи | внешние спецификации ПП |
| |
Проектирование: - структуры ПП - отдельных модулей | схема иерархии и внешняя спецификация отдельных модулей; выбор алгоритма работы каждого модуля и способ внутреннего представления данных |
| |
Н | а |
Верификация, тестирование; о | проверка программы на правильность, выявление наличия ошибок; локализация и исправление ошибок |
Документирование Внедрение Тиражирование О | написание текстовой документации, инструкций для пользователей и т.п. |
Сопровождение (повторяющее все предыдущие этапы) и эксплуатация ПП | попытка приспособить ПП к измененным целям и исправление не выявленных на более ранних этапах ошибок |
КРИТЕРИИ: - за каждый пропущенный (крупный) этап, кроме последнего: –2;
- за каждое неверное или отсутствующее пояснение: –1;
- за отсутствие последнего этапа: –1.
8. Перечислите основные типы библиотек, используемых в современных системах программирования (не путать со способами подключения!). Дайте их краткую характеристику.
Ответ: 1. Библиотеки функций (или подпрограмм). 2. Библиотеки классов. 3. Библиотеки компонент.
Библиотеки функций во многом определяют возможности системы программирования в целом. Различают библиотеки для языков программирования (например, функции ввода-вывода, работа со строками) и библиотеки для решения задач в конкретной проблемной области (например, функции, реализующие алгоритмы линейной алгебры). Библиотеки функций представляют собой откомпилированные объектные модули.
Библиотеки классов - для СП, базирующихся на ООЯП. Все их классы должны быть написаны на том же ЯП, на котором пишется программа, куда интегрируются библиотечные классы.
В библиотеке классов различают конкретные классы, абстрактные классы, шаблоны классов.