Реферат: Генерация дидактических материалов по математике

IV Гомельская научно-практическаяконференция школьников по математике, ее приложениям и информационнымтехнологиям «Поиск»

Учебно-исследовательскаяработа

«Генерациядидактических материалов по математике»

Ученицы

11/А класса

ГУО СОШ№22 г. Гомеля

Прохоренко Елены Александровны

Научный руководитель –

Горский СергейМихайлович, учитель математики Государственного учреждения образования СОШ №22г.Гомеля

Гомель, 2009


Содержание

 

Введение

1 Описание работы программы

1.1 Запуск программ

1.2 Описание файла шаблона

2 Использование постобработчиков

Заключение

Список использованных источников

Приложение 1

Введение

На данный моментнекоторые преподаватели уже пытались привлечь компьютер к составлениюсамостоятельных работ, контрольных работ, домашних заданий. Наиболееформализуемые и параметризуемые задачи относятся к таким предметам какматематика, физика, химия. В литературе приведены примеры генерации заданий поматематике для квадратных уравнений, по геометрии на объемы и поверхности телвращения, по химии на концентрации растворов, по физике на решениетреугольников (векторы сил в механике). Однако в описанных примерах каждаяработа создается отдельной программой, вид параметризованных формул«вшит» в программный код и недостаток данного подхода отмечается дажесамими авторами [2].

В данной работеизлагается метод генерации произвольных задач с решениями, позволяющий избежатьколоссальных трудозатрат по верстке и составлению задач, а такжедемонстрируется программа генерации заданий по математике, удовлетворяющихусловиям различности и равноценности. Отличие предлагаемого метода от методов,реализованных, в уже существующих программах заключается в том, чтопользователю предоставляется механизм создания параметризованных задач иаппарат для их клонирования (создание нескольких вариантов). То естьклонируемые задачи не обязаны подходить под определенный тип, а число вариантовзадается во внешнем файле-сценарии или определяется через условия,накладываемые на параметры.

Следует заметить, что вбольшинстве существующих программ предлагается генерировать только задания дляпоследующего их распечатывания. Наличие отдельного напечатанного варианта припроведении контрольной или самостоятельной работы имеет ряд преимуществ передотсутствием такового: например, решается проблема списывания — каждый учащийсявынужден обрабатывать свои данные. Есть и свои недостатки — учителю затем нужнопроверить не 2 варианта, а 25–30.

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

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

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

— составлять шаблоныфайлов в различных форматах, близких к plain text (LaTeX,MathML+HTML),

— проводить обработкуиными средствами, такими как MatLab,Mathematica и др.

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

Данная программа широкоиспользуется для подготовки контрольных и самостоятельных работ в 5–7 классахГУО СОШ№ 22 г. Гомеля.


1 Описание работы программы

 

Программа, являющаясяскриптом, написана на языке программирования Python 2.4. Данный язык является свободно распространяемыминтерпретатором, а свободно распространяемая программа py2exe позволяетсоздать из скрипта программу для систем семейства Windows. Текст скрипта приведен в приложении 1.

1.1Запуск программы

Для запуска программынеобходимо в командной строке набрать команду ex2. количество вариантов имя файла шаблона имя файла. Послевыполнения программы появится файл имя файла.txt содержащий текст сгенерированных вариантов и файл имяфайла answ.txt содержащий ответы к файлам.

1.2Описание файла шаблона

Файл шаблона являетсяобычным plain-text файлом, содержащим строки с маркерами в началестроки.

Маркер code означает, что после него идетинициализация переменных используемых в тексте шаблона.

Маркер отв.означает, что строка, содержащая маркер переходит в файл с ответами.

Маркер choiceозначает, что из заданий и ответов,разделенных символом ` следует выбрать случайным образом только один.

Маркер test означает, что варианты ответов длятеста, разделенные символом ` следует перемешать, правильный вариант долженбыть помечен символом!.. В файл с заданием переноситься все варианты ответов, ав файл с ответами номера правильных.

При инициализациипеременных можно использовать все арифметические операции (/ — деление, * —умножение), все математические функции в американской нотации, следующиеспециальные функции:

·          abs(x) — модульчисла,

·          pow(x,y[,m]) —возведение x в степень y по модулю m,

·          math.sqrt(x) —квадратный корень из x,

·          round(n[,z]) —округление чисел до заданного знака после (до) точки,

·          random.random() —случайное число из диапазона [0;1),

·          random.randrange([start,]stop[,step])— выдает случайное число из диапазона [start,stop) с интервалом step (поумолчанию step=1, start=0),

·          условный операторif условие: оператор

·          del переменная удаляем переменную

·          s.replace(‘что-то’, ‘чем-то’) замена в строке s “что-то” “чем-то”.

Примерфайлашаблона

codea=random.randrange(100)+10

codeb=random.randrange(100)+10

codec=random.randrange(100)+10

2. Найдите неизвестный членпропорции x:{a}={b}:{c}.

При необходимости ответокруглите.

отв 2.

test{c*b/a}`{c*c/b}`!{a*b/c}`{a/b/c}

Данный шаблон генерируетследующее задание:

2. Найдите неизвестныйчлен пропорции x:17=97:63.

При необходимости ответокруглите.

1)    26 2) 40 3) 0 4) 359


2. Использование постобработчиков

В случае, когдасоставляемое задание содержит более сложные с точки зрения математики проблемы,программа для его генерации будет довольно громоздкой. Значительно облегчитьпроцесс генерации заданий позволит система компьютерной алгебры Mathematicaфирмы Wolfram Research, Inc. Этот программный продукт является признанныммировым лидером среди множества компьютерных инструментов, используемых внаучных исследований и в педагогическом процессе. С помощью этой системы легкоосуществлять широкий спектр символьных преобразований, в том числе и в сферематематического анализа (дифференцирование, интегрирование). Она позволяетрешать уравнения, находить пределы, строить разнообразные графики и многоедругое.

Mathematica позволяет пользователю писатьпрограммы на ее встроенном языке, поддерживая при этом различные стилипрограммирования — как функциональный, так ипроцедурный. В данной заметке не затрагиваются вопросы программированиясобственно в среде Mathematica. Насбудет интересовать возможность взаимодействия этой программы с файлами,содержащими команды разметки TeX. В такие файлы (а также, в файлы,содержащие программы на языках C или Fortran) можно вставлять выражения системы Mathematica, ограничивая их, слева и справакомбинаций знаков <*и *>.Получившийся файл обрабатывается системой Mathematica, которая заменяет заключенное междуэтими символами выражение на результат его вычисления.

Файл,содержащий команды разметки языка TeX и функции системы Mathematica, должен иметь расширение mtex. При обработке такого файла командойSplice[], сформировавшийся результат будетавтоматически сохранен в файл с расширением tex.

Например,пусть файл task2.mtex содержит следующий фрагмент текста:

Рассмотрим неравенство

$\dfrac{<*u=(3x-5)(x+4); v=(x+4)(x-5); PolynomialRemainder[u,-v,x]*>}

{<*Expand[-v]*>}

\leqslant <*-PolynomialQuotient[u,-v,x]*>.$ \hfill $(*)$

\bigskip

и эквивалентное ему

$\dfrac {(3x-5)(x+4)}{(x+4)(x-5)}\geqslant 0.$ \hfill $(**)$

Тогда послевыполнения команды Splice["task2.mtex"] автоматически

созданныйфайл task2.tex уже будет содержать результатвыполнения функций системы Mathematica:

/>Рассмотримнеравенство

 

/>

 

$\dfrac{40 + 10\,x}

{20 + x — {x^2}}

\leqslant 3.$ \hfill $(*)$

\bigskip

и эквивалентное ему

$\dfrac {(3x-5)(x+4)}{(x+4)(x-5)}\geqslant 0.$ \hfill $(**)$

В данномпримере использовались следующие функции системы Mathematica:

Expand[v] — раскрывает скобки в выражении v;

PolynomialRemainder[u,v,x] — вычисляет остаток от делениямногочлена u(x) на многочлен v(x);

PolynomialQuotient[u,v,x] — находит частное от деления этихмногочленов.

Результатобработки данного файла программой TeX показан на врезке.


Заключение

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

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

Список использованных источников

1.        Г. Россум, Языкпрограммирования Python. / Г. Россум,Ф.Л.Дж. Дрейк, Д.С. Откидач, М. Задка, М. Левис, С. Монтаро, Э.С. Реймонд, А.М.Кучлинг, М.-А. Лембург, К.-П.Йи, Д. Ксиллаг, Х.Г. Петрилли, Б.А. Варсав, Дж.К.Ахлстром, Дж. Роскинд, Н. Шеменор, С. Мулендер.— 2001 — 454 c.

2.        Шестаков А.П.,Генерация дидактических материалов по математике, //http://comp-science.narod.ru

Приложение 1

# -*- coding: cp1251 -*-

#

# запуск:

# имя_программыколичество_вариантов файл_шаблона

# файл_заданий

#

import re

import random

import math

import sys

import string

n=int(sys.argv[1]) # считываем количество вариантов

templet=sys.argv[2]# считываем имя файла шаблона

output=sys.argv[3] #считываем имя файла вывода заданий

problems=open(output+'.txt','w')# открываем файл заданий для

# записи

answers=open(output+'_answ.txt','w')

pattern=r"\{(.+?)\}"# создаем регулярное выражение

expression=re.compile(pattern)

for i in range(1,n+1): #цикл по количеству вариантов

task=open(templet,'r')# открываем шаблон

problems.write('Вариант '+str(i)+'\n')

answers.write('Вариант '+str(i)+'\n')

for line intask:

if line.find('code')>-1: # инициализация переменных в

шаблоне

line=line.replace('code','')

exec line

else:

k=expression.findall(line)# замена выражения его

значением

for element ink:

line=line.replace(element,str(eval(element)))

line=line.replace('{','')# косметическое удаление

# фигурных скобок

line=line.replace('}','')

if line.find('отв ')>-1:

line=line.replace('отв ','')

answers.write(line)

elif line.find('test')>-1: # обработка вариантов

тестового задания

line=line.replace('test','')

line=line.replace('\n','')

test=line.split("`")

random.shuffle(test)

for i inrange(0,len(test)):

iftest[i].find('!')>-1:

test[i]=test[i].replace('!','')

problems.write(str(i+1)+')'+test[i]+' ')

answers.write(str(i+1)+'\n')

else:

problems.write(str(i+1)+')'+test[i]+' ')

problems.write('\n')

elifline.find('choice ')>-1: # обработка вариантов

# выбора

line=line.replace('choice','')

line=line.replace('\n','')

variant=line.split("`")

num=2*random.randrange(round(len(variant)/2))

problems.write(variant[num]+'\n')

answers.write(variant[num+1]+'\n')

else:

problems.write(line)

problems.write('\n\n')

answers.write('\n\n')

task.close

problems.close

answers.close

еще рефераты
Еще работы по информатике, программированию