===== Кейс 005: Сокращение полиномов (gram:case-005) ===== === Общая информация === ^ Уровень сложности ^ 🟡 Средний ^ ^ Рекомендуемые языки ^ Python ^ ^ Основные инструменты ^ ANTLR4, SymPy (опционально) ^ ^ Предметная область ^ Алгебра 7-9 класс ^ === Описание кейса === Система для работы с полиномами: проверка сокращения, разложение на множители, операции с алгебраическими дробями. === Грамматика языка === // Лексемы NUMBER : [0-9]+ VARIABLE : [a-zA-Z] POW : '^' PLUS : '+' MINUS : '-' MUL : '*' DIV : '/' LPAREN : '(' RPAREN : ')' WS : [ \t\r\n]+ -> skip // Синтаксис polynomial : term ( (PLUS | MINUS) term )* term : (number MUL)? monomial monomial : variable (POW number)? variable : VARIABLE number : NUMBER fraction : polynomial DIV polynomial expression : polynomial | fraction === План лабораторных работ === ==== ЛР1: Лексический анализ ==== **Задачи:** - Распознавание мономов и полиномов - Поддержка степеней переменных - Обработка алгебраических дробей ==== ЛР2: Синтаксический анализ ==== **Задачи:** - Парсер полиномиальных выражений - Построение AST для дробей - Валидация структуры выражений ==== ЛР3: Семантический анализ ==== **Задачи:** - Проверка эквивалентности полиномов - Сокращение дробей - Разложение на множители ==== ЛР4: Генерация заданий ==== **Задачи:** - Создание задач на сокращение - Генерация ответов и решений - Экспорт в GIFT-формат === Примеры задач === // Сокращение дробей (x^2 - 4)/(x - 2) → x + 2 (2x^2 + 4x)/(2x) → x + 2 (x^2 - 1)/(x^2 - 2x + 1) → (x + 1)/(x - 1) === Педагогическое применение === **Использование в школе:** - Автоматическая проверка заданий на сокращение - Тренажер алгебраических преобразований - Подготовка к ОГЭ по алгебре ---- [[gram:labs|← К списку]] | [[gram:case-004|← 004]] | [[gram:case-006|006 →]]