ИДЗ-2 (МЛиТА)

   Работы должны быть выложены на студенческих сайтах в форме документов, к редактированию которых преподаватель имеет доступ.
В отчёт должны войти:
1. Набор граничных примеров и контрпримеров, демонстрирующих уточнение языка.
2. КС-грамматика языка.
2. Грамматический разбор одного примера.
4. Проверка того, что грамматика удовлетворяет однозначности ветвления по первому символу (принадлежит классу LL0).
5. Модифицированная грамматика (если исходная КС-грамматика не удовлетворяет условию однозначности ветвления).
6. Таблица перевода языка в диаграммы (может быть опущена, если используется алгоритм прямого перевода, который должен быть сформулирован вместо диаграмм). Оптимизация числа диаграмм подстановкой.
7. Таблица перевода синтаксических диаграмм в алгоритм синтаксического анализа.
8. Таблица перевода алгоритма в программу.
9. Исходный код программы.
10. Исполняемый файл программы (при запуске программы должно появляться условие задачи с примерами и инструкция по вводу, после выполнения программа должна предложить ввести другой пример выражения для анализа).
(На странице  http://ml.iposov.spb.ru/---2 И.А. Посов  выложил краткий разбор ИДЗ-2, с примером работающего кода).


Темы ИДЗ-2 по МЛ и ТА 2010 год

 Тема 1. Язык записей со скобками выражений с одной операцией, лишних скобок быть не должно, при этом, если каких-то скобок нет, то действия выполняются по очереди слева-направо.

Примеры: A*(B*C)*D – правильная запись, (A*B)*C*D – неправильная запись, так как без данной пары скобок действия выполнятся в том же порядке.

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

 

Тема 2. Язык записей со скобками выражений с одной операцией, лишних скобок быть не должно, при этом, если каких-то скобок нет, то действия выполняются по очереди справа-направо.

Примеры: (A*B)*C*D – правильная запись, A*B*(C*D) – неправильная запись, так как без данной пары скобок действия выполнятся в том же порядке.

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

 

Тема 3. Язык правильных записей размеров перемножаемых прямоугольных матриц Примеры: (nxm)*(mxk)*(kxl)*(lxp)– правильная запись, (nxm)*(kxl)– неправильная запись, так как матрицы таких размеров перемножить нельзя.

Замечание. Размеры обозначаются строчными латинскими буквами.

 

Тема 4. Язык правильных записей размеров перемножаемых прямоугольных матриц, результатом которых должна быть квадратная матрица.

Примеры: (2x3)*(3x3)*(3x1)*(1x2)– правильная запись, (2x3)*(3x3)– неправильная запись, так как результатом является матрица (2х3).

Замечание. Матрицы могут иметь размеры от 1 до 3.

 

Тема 5. Язык произведений комплексных чисел частного вида, у которых либо вещественная, либо мнимая часть равны нулю. 

Примеры: -23*1235i*(-5i)*(-7)*i*(-i) – правильная запись, 7*(123i)– неправильная запись, 1i – неправильная запись.

Замечание. Вещественная и мнимая часть являются целыми числами произвольной длины.

 

Тема 6. Язык произведений обыкновенных дробей и целых чисел. 

Примеры: (-23/3)*12/34*(-5)*724 – правильная запись, (23/5)*123 – неправильная запись,  (23/5)*123 – неправильная запись, 12/(-11) – неправильная запись.

Замечание. Минус в знаменателе считается ошибкой.

 

Тема 7. Язык двоичных наборов, определяющих функции 2, 3 или 4 переменных. 

Примеры: (01101111) – правильная запись, (0110111101101111) – правильная запись, (01101) – неправильная запись.

Замечание. Язык конечный, хотя и с большим числом слов.

 

Тема 8. Язык двоичных наборов, обладающих свойством «антисимметричности» (каким обладают «наборы» самодвойственных функций). 

Примеры: (011001) – правильная запись, (0111) – неправильная запись.

Замечание. Длина слова чётная, пустое слово не должно быть правильной записью.

 

Тема 9. Язык логических выражений с простыми отношениями.

Примеры: (x>y)&(x=0)=>(u<v).

Замечание. В качестве терминальных символов использовать знаки базовых логических операций, малые латинские буквы, ноль и скобки.

 

Тема 10. Язык сложных функций с простыми комбинациями переменных.

Примеры: f(x+h(z); g(m(u*v))).

Замечание. В качестве терминальных символов использовать арифметические операции, малые латинские буквы, точку с запятой и скобки.

 

Тема 11. Язык правильных скобочных записей с круглыми и квадратными скобками, причём внутри круглых скобок не могут быть квадратные.

Примеры: (()( ))[(  )[ ()] [   ] ].

Замечание. В качестве терминальных символов используются скобки и пробелы, последние на правильность записи не влияют.

 

Тема 12. Язык правильных скобочных записей с круглыми и квадратными скобками, причём внутри квадратных скобок обязательно должны стоять круглые.

Примеры: ([( )()])[(  )[ ()] ].

Замечание. В качестве терминальных символов используются скобки и пробелы, последние на правильность записи не влияют.

 

Тема 13. Язык правильных скобочных записей с круглыми и квадратными скобками, причём круглые и квадратные скобки при вложении чередуются.

Примеры: ([] [( ) ( )])(  )().

Замечание. В качестве терминальных символов используются скобки и пробелы, последние на правильность записи не влияют.

 

Тема 14. Язык правильных скобочных записей с круглыми и квадратными скобками, причём в последовательности идущих друг за другом пар скобок круглые и квадратные должны чередоваться.

Примеры: ([() [ ]] ( ))[(  )[ [ ]] ].

Замечание. В качестве терминальных символов используются скобки и пробелы, последние на правильность записи не влияют.

 

Тема 15. Язык правильных последовательностей нажатий кнопок для операций с целыми числами на простом калькуляторе с равенством.

Примеры: 123+45=*78=

Замечание. Натуральные числа имеют любую длину.

 

Тема 16. Язык правильных последовательностей нажатий кнопок для операций с целыми числами на калькуляторе с постфиксной записью и кнопками сброса всего выражения и текущего операнда.

Примеры: 123|45+78*C5|6X7–

Замечание. Натуральные числа имеют любую длину, С – полный сброс, X – сброс последнего операнда.

 

Тема 17. Язык арифметических выражений с НОД.

Примеры: НОД(a+b;c), a/НОД(a;b), НОД(НОД(a;b);c)

Замечание. Вместо НОД можно использовать однобуквенное имя, например, g.

 

Тема 18. Язык записи многоэтажных степеней без лишних скобок.

Примеры: 23^12^7, (23^12)^7 – правильные, 23^(12^7) – неправильная.

Замечание. Натуральные числа имеют любую длину.

Тема 19. Язык перечислений слов после двоеточия через запятую.

Примеры: Я знаю таких зверей: лев, тигр, слон.

Замечание. Предложение должно начинаться с заглавной буквы, после внутреннего знака препинания должен быть пробел, лишние пробелы не делать.

 

Тема 20. Язык списков в текстовых редакторах.

Примеры:

Это список:

первый элемент;

второй элемент;

последний элемент.

 

Это тоже список.

Первый элемент

Второй элемент

Последний элемент.

 

Замечание. Предложение должно начинаться с заглавной буквы, после внутреннего знака препинания должен быть пробел, лишние пробелы не делать, возможны два варианта организации списка.


Тема 20*. Язык записи тестов в формате SCORM.


Тема 21*. Язык транскрипций слов английского языка.


Comments