Задания на зачет 2011

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск

Реализовать грамматики и интерпретаторы следующих языков

1. Реализовать грамматику для систем линейных уравнений вида

2.5 * x + 3 * y = 7.1; - x - 3.4 * y = 3.2

Реализовать интерпретатор, выводящий ответ

2. Реализовать грамматику для многочленов, заданных в виде

2*x^2+3.1*x-2.4;-3*x^3+4*x;x+1

Написать интерпретатор, вычисляющий их сумму

3. Разработать грамматику логических выражений, содержащую T (True), F (False), знаки отношения и операции and, or. Написать интерпретатор, вычисляющий данное логическое выражение

4. Разработать грамматику, позволяющую вычислять определители матриц. Определитель записывать в виде: |[1,2.5,3],[4,5.6,6],[7.3,8.66,9]| Написать интерпретатор, вычисляющий записанный определитель

5. Усовершенствовать грамматику выражений, добавив в нее возможность использовать стандартные функции произвольного количества аргументов. Должны поддерживаться функции sqrt, abs, power, min(произвольное количество), max(произвольное количество) Написать интерпретатор, вычисляющий данное выражение с функциями.

6. Реализовать грамматику для множеств Паскаля в виде [1,2..5,10] с операциями + и * Написать интерпретатор, вычисляющий выражение с множествами вида [1,2..5,10] + [3..7] или [1,2..5,10] * [3..7]

7. Реализовать символьное дифференцирование для выражений, включающих умножение, деление, сложение, вычитание, скобки, функции sin, cos, ln

8. Реализовать язык программирования, включающий присваивание, вывод, целые константы, переменные, цикл for, составной оператор

9. Разработать грамматику, позволяющую вычислять сумму двух матриц, задаваемых в виде:

((1,2,3),(4,5,6))+((7,8,9),(1,3,5)) 

В случае неправильных размеров матриц должно выдаваться сообщение об ошибке.

10. Разработать грамматику языка, определяющего три плоскости

2x+13y-4z+1=0;3x-y=0;4x+3z-1=0;

и написать интерпретатор, определяющий точку их пересечения или выдающий точку их пересечения или информацию о неоднозначном (отсутствующем) решении

11. Разработать грамматику языка, определяющего список точек в пространстве

(2,3,-1), (4,-5,6), (1,1,3)

Написать интерпретатор, определяющий расстояния от каждой точки до начала координат.

12. Разработать грамматику языка, определяющего уравнение прямой и список точек:

x-2y+3=0; (2,1),(3,4),(5,-1)

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

13. Разработать грамматику языка, определяющего список троек точек на плоскости

 {(2,1),(3,4),(5,-1)},{(4,6),(2,6),(7,-3)},{(-2,2),(2,5),(1,-1)}

Реализовать интерпретатор, вычисляющий площади треугольников, построенных на этих точках

14. Разработать грамматику языка, задающего однородное дифференциальное уравнение 2 порядка вида

y’’+12y’-23y=0

Реализовать интерпретатор, выдающий общее решение этого ДУ

15. Разработать грамматику языка, определяющего функции:

let f(x)=x+y; let g(x,y)=f(x-y)+x;

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

16. Разработать грамматику языка, определяющего переменные

int x,y;
x = 1;
z=2;
int z;

Проверить корректность такой программы: переменные должны быть описаны до использования и только один раз