Table of Contents

Кейс 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: Лексический анализ

Задачи:

  1. Распознавание мономов и полиномов
  2. Поддержка степеней переменных
  3. Обработка алгебраических дробей

ЛР2: Синтаксический анализ

Задачи:

  1. Парсер полиномиальных выражений
  2. Построение AST для дробей
  3. Валидация структуры выражений

ЛР3: Семантический анализ

Задачи:

  1. Проверка эквивалентности полиномов
  2. Сокращение дробей
  3. Разложение на множители

ЛР4: Генерация заданий

Задачи:

  1. Создание задач на сокращение
  2. Генерация ответов и решений
  3. Экспорт в 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)

Педагогическое применение

Использование в школе:

  1. Автоматическая проверка заданий на сокращение
  2. Тренажер алгебраических преобразований
  3. Подготовка к ОГЭ по алгебре

← К списку | ← 004 | 006 →