Ответы_экзамен_2009 (1115077), страница 5
Текст из файла (страница 5)
Ee ee
КРИТЕРИИ: порождается пустая цепочка: –5
имеется лишняя (непустая) или недостающая цепочка: –10
за каждое лишнее правило: –3 (количество правил в условии дано с запасом)
Замечание. Грамматика S EDSe | EDe
DE ED
D d
E e ошибочная, так как порождает лишние цепочки, напр.: ededee.
5. | (а) (б) | Сформулируйте достаточное условие применимости метода рекурсивного спуска с учетом возможной -альтернативы (т.н. «канонический вид» КС-грамматики). Выполняется ли это условие для грамматики G ? Обоснуйте ответ. G: S aAeS | bB | A aAd | bC | aC C cC | B eS | d |
Ответ: (а) Достаточное условие: каждая группа правил с одинаковой левой частью имеет один из перечисленных ниже видов и выполняются дополнительные условия:
-
либо 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)
(б) нет, не выполняется: для правила A aAd | bC | aC , имеющего вид (2), нарушено дополнительное условие, т.к. first (aAd ) first (aC ) {a} ≠ (две альтернативы начинаются одинаковыми терминалами).
КРИТЕРИИ: (а) нет ответа, ошибки в формулировке: –5
(б) нет ответа; неверный ответ; нет обоснования ; ошибочное обоснование: –5
6. | Описать грамматику, порождающую язык Lвх { cnd m | m n 0 }, и вставить в нее действия вида cout << ′символ′ ; так, чтобы для любых целых m n 0 в процессе анализа рекурсивным спуском входной цепочки cnd m печаталась бы цепочка bnad m-n. |
Ответ. Соглашение : запись a является сокращением cout << ′a ′;
Lвх { cnd m| m n 0 } { cnd nd m-n| m n 0 } (входной язык). Грамматика для Lвх, к которой применим метод рек. спуска, выглядит так:
S AB
A cAd |
B dB |
Lц { b nad m-n | m n 0 } (целевой язык).
Грамматика с действиями:
S AaB A cAd b | B d d B | | или : S AaB A c b Ad | B d d B | | или : S AB A c b Ad |a B d d B | |
КРИТЕРИИ:
Грамматика не порождает Lвх , или не генерирует Lц : 0
Порождает Lвх и формально генерирует соответствующие цепочки из Lц ,
но метод рек. спуска неприменим: -5
7. Что такое интегрированная среда разработки? Каковы преимущества (приведите три причины) использования ИСР по сравнению с классической СП?
Ответ: Современная ИСР — комплекс интегрированных программных средств, поддерживающих полный жизненный цикл ПП. Основные преимущества:
- ИСР объединяет в себе возможности текстовых редакторов исходных текстов программ, отладчиков и командный язык компиляции. Программист, не прерывая работу с ИСР, может в удобной форме воспользоваться услугами любого, входящего в ее состав компонента;
- ИСР обеспечивает многооконный интерфейс с поддержкой режима "буксировки" фрагментов текста мышкой (drag&drop);
- в текстовом редакторе ИСР благодаря интеграции с компилятором реализованы а) синтаксическая подсветка элементов языка (выделение цветом разных лексем), б) дополнение кода, интерактивная подсказка, в) всплывающие подсказки об атрибутах идентификаторов, если на них установить курсор, г) отображение ошибок, обнаруженных на этапе компиляции, в тексте программы;
- благодаря интеграции с отладчиком в текстовом редакторе ИСР реализованы, например, а) отображение контрольных точек останова при отладке, б) отображение текущего значения объекта, при наведении курсора на идентификатор, в) выполнение программы до строки, в которой в редакторе стоит курсор, г) выделение выполняемой в данный момент строки;
- часто ИСР поддерживает репозиторий прогр. проекта, являющийся основой ИСР, который обеспечивает хранение информации о проекте на всех этапах его жизненного цикла, версий проекта и его отдельных компонентов, синхронизацию поступления информации от различных разработчиков при групповой разработке, контроль данных о проекте на полноту и непротиворечивость;
- как правило, ИСР содержит графические средства анализа и проектирования ПП;
...............
КРИТЕРИИ: - есть только определение ИСР: 1 балл;
- безошибочно указано только одно из достоинств ИСР: –6;
- безошибочно указаны только два из достоинств ИСР: –3.
Замечание. Допускается «описательное» определение ИСР через свойства, например: «объединяет в себе возможности текстовых редакторов и командного языка компилятора, а также некоторых других компонентов системы программирования, например, редактора связей и отладчика».
8. Перечислите основные критерии проектирования стандартных библиотек. Кратко прокомментируйте каждый из критериев.
Ответ:
- Общезначимость содержимого (предоставлять программисту нетривиальные средства, на которые он может рассчитывать, заботясь о переносимости программ, например, средства работы со списками, функции сортировки, потоки ввода/вывода;)
- Эффективность (предоставлять функции, которые не могут быть написаны оптимально для всех вычислительных систем на данном языке программирования, например, функции вычисления квадратного корня sqrt() или пересылок блоков памяти memmove();)
- Безопасность (использование библиотеки не должно провоцировать ошибки, а наоборот, снижать их вероятность)
- Завершенность (библиотека должна обеспечить достаточную функциональность, чтобы ни у кого не возникало желания что-то заменить или доопределить)
- Сочетаемость с базовыми типами данных (предоставлять основу для расширения собственных возможностей, в частности, соглашения и средства поддержки, позволяющие обеспечить операции для данных, имеющих определяемые пользователями типы, в том же стиле, в котором обеспечиваются операции для встроенных типов (например, ввод/вывод);)
- Может служить фундаментом для создания других библиотек
- Поддержка свойств языка, (например, управление памятью и предоставление информации об объектах во время выполнения программ);
- Предоставление информации о зависящих от реализации аспектах языка, например, о максимальных размерах целых значений;
КРИТЕРИИ: - указаны и верно прокомментированы не менее 5 критериев: 10 баллов;
- если менее 5, то отсутствие (ошибочность) любого критерия: –2 (всего до –10);
- отсутствие каждого соответствующего критерию краткого комментария: –1.
9. Записать результат перевода в ПОЛИЗ (постфиксную запись) фрагмента программы на языке Си:
while (a < b) {S += a < 0 ? -a : b++; b = b - a - 1;}
Ответ:
ПОЛИЗ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
a | b | < | 28 | !F | &S | a | 0 | < | 16 | !F | a | @ | 18 | ! | &b | ++ |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | |
+= | &b | b | а | - | 1 | - | = | 1 | ! |
|
Соглашения: 1. Адреса ПОЛИЗа можно обозначать подчеркиванием ( а = &a).
2. Префиксный ++ обозначен в ПОЛИЗе как ## , унарный минус — @.
3. Различение префиксных и постфиксных ++ разрешается на уровне интерпретации.
4. "Мусор" в стеке после выполнения присваивания игнорируется.