===== Кейс 007: Кинематика - равномерное движение (gram:case-007) ===== === Общая информация === ^ Уровень сложности ^ 🟡 Средний ^ ^ Рекомендуемые языки ^ Python ^ ^ Основные инструменты ^ ANTLR4 ^ ^ Предметная область ^ Физика 9 класс ^ === Описание кейса === Система для задач на равномерное прямолинейное движение: генерация условий, проверка решений, работа с формулами. === Грамматика языка === // Лексемы NUMBER : [0-9]+ ('.' [0-9]+)? UNIT : 'м' | 'с' | 'м/с' | 'км' | 'ч' | 'км/ч' ID : [vVsStT] PLUS : '+' MINUS : '-' MUL : '*' DIV : '/' EQ : '=' LPAREN : '(' RPAREN : ')' WS : [ \t\r\n]+ -> skip // Синтаксис problem : 'движение' body conditions question body : 'тело' | 'автомобиль' | 'пешеход' conditions : condition+ condition : (speed | distance | time) EQ value speed : 'скорость' | 'v' distance : 'расстояние' | 's' time : 'время' | 't' value : NUMBER UNIT? question : 'найти' (speed | distance | time) expression : term ( (PLUS | MINUS) term )* term : factor ( (MUL | DIV) factor )* factor : NUMBER | ID | LPAREN expression RPAREN === План лабораторных работ === ==== ЛР1: Лексический анализ ==== **Задачи:** - Распознавание физических величин и единиц - Поддержка различных обозначений (v, скорость) - Обработка математических операций ==== ЛР2: Синтаксический анализ ==== **Задачи:** - Парсер условий задач по кинематике - Построение AST физической задачи - Валидация структуры условия ==== ЛР3: Семантический анализ ==== **Задачи:** - Проверка размерностей величин - Решение уравнений движения - Контроль применения формул ==== ЛР4: Генерация задач ==== **Задачи:** - Создание вариантов задач на движение - Генерация числовых данных - Проверка решений учащихся === Примеры задач === // Формулировка задачи движение автомобиль скорость=60 км/ч, время=2 ч, найти расстояние // Проверка решения s = v * t = 60 * 2 = 120 км === Педагогическое применение === **Использование в школе:** - Тренажер решения задач по кинематике - Автоматическая проверка домашних работ - Подготовка к ОГЭ по физике ---- [[gram:labs|← К списку]] | [[gram:case-006|← 006]] | [[gram:case-008|008 →]]