Универсальный генератор задач Math-o-Gen (Версия 2.0)
Приложение к странице «Упражнения и задачи»
1. Что такое Math-o-Gen?
Math-o-Gen — это большая коллекция онлайн-генераторов, позволяющих быстро создавать типовые задачи и упражнения по математике (и, как оказалось, не только по математике, но и по грамматике русского, немецкого, французского и английского языков). Ко всем упражнениям на отдельных страницах прилагаются ответы. Программа протестирована на современных версиях браузеров «Firefox», «Google Chrome» и «Edge».
2. Как генерировать и распечатывать задачи?
Для генерации задач надо перейти по ссылке на какой-либо из онлайн-генераторов (которые в обилии представлены, например, здесь). В порядке первого ознакомления можно также воспользоваться следующей ссылкой:
Генератор задач на понятие «больше»-«меньше»
После этого открывается окно с рядом кнопок наверху. Щелкаем левой кнопкой мыши по кнопке «Генератор». Начинается процесс генерации, который может занять пару секунд. После этого перед нами предстает список сгенерированных задач. Если мы хотим заглянуть в ответы, то для этого надо нажать на кнопку «Ответы». Вернуться к условиям задач можно с помощью кнопки «Задачи». При повторном нажатии на кнопку «Генератор» список задач будет продолжен.
Задачи в списке редактировать нельзя, но можно удалить из списка всю задачу целиком, если она по каким-то причинам нам не нравится. Для этого подводим к ней курсор мыши. При этом на месте номера задачи появляется пиктограмма с изображением мусорной корзины, по которой и следует щелкнуть.
Чтобы распечатать полученный список, нужно нажать кнопку «Файл» и в открывшемся меню выбрать пункт «Печать». Появится макет страницы, предназначенной для распечатывания. Его можно распечатать на принтере как всякую веб-страницу (для этой же цели можно воспользоваться кнопкой «Распечатать»). По умолчанию распечатываются оба списка: как условия задач, так и ответы. Но можно ограничиться только условиями или только ответами, нажав, соответственно, на кнопки «Задачи» или «Ответы». Кнопка «Задачи и Ответы» возвращает к представлению с обоими списками.
Вместо распечатывания макет можно сохранить на компьютере для дальнейшего использования. Для этого предусмотрена кнопка «Сохранить (HTML)». Сохранение происходит в файл формата html, который впоследствии можно открыть и распечатать в любом браузере.
Для возвращения в режим генерации нужно нажать кнопку «Назад».
3. Настройки
Настройки внешнего вида и печати осуществляются в окне, которое открывается кнопкой «Настройки». Здесь можно задать размер страницы, размер полей, число колонок (отдельно для условий и ответов) и т. п. Изменения в настойках сказываются только на задачах, которые будут сгенерированы в будущем. Если мы хотим применить изменения к уже сгенерированным задачам, то для этого надо нажать на кнопку «Переписать».
К настройки, касающиеся содержимого задач, можно перейти, нажав на кнопку «Скрипт». При этом открывается окно, содержащее так называемый скрипт — программу, которая, собственно, и занимается генераций. В верхней части окна находится программный код (на языке JavaScript), а в нижней — нумерованный список шаблонов. Эти шаблоны представляют собой заранее заготовленные тексты условий и ответов, в которых присутствуют некоторые переменные в виде условных символов. Для того чтобы превратить шаблоны в полноценные задачи, эти символы надо поменять, например, на конкретные числа. Именно такая замена происходит в процессе генерации в соответствии с программным кодом. Шаблоны написаны на языке разметки HTML, но можно перейти к более привычному виду, нажав внизу на кнопку «Визуализация». Возврат к HTML-представлению осуществляется кнопкой «HTML».
В стандартных генераторах, представленных на этом сайте, редактирование кода и шаблонов не предусмотрено (хотя такая возможность, в принципе, имеется — см. ниже). Тем не менее кое-какие полезные настройки могут быть сделаны.
Во-первых, в самом верху окна, как правило, содержится список управляющих констант, влияющих на работу генератора. Так, в приведенном выше генераторе задач на понятия «больше»-«меньше» определены константы, задающие диапазон чисел, встречающихся в условии. С их помощью мы можем, например, задать, что все операции сложения и вычитания, необходимые для решения задач, проводятся строго в пределах сотни. К каждой константе приложен комментарий, в который пояснен ее смысл. Значения всех этих констант можно свободно редактировать.
Во-вторых, представленные шаблоны можно активировать или деактивировать: в генерации участвуют только активные шаблоны. Для активации/деактивации шаблона надо поставить/убрать галочку в квадратике, который находится напротив шаблона слева. Тут же расположено число, которое задает «вес» шаблона: вероятность того, что данный шаблон будет использован при генерации задач, пропорциональна его «весу».
Порядок генерации задается в уже знакомом нам окне «Настройки». Здесь можно ограничить номера шаблонов каким-то определенным диапазоном, задать число задач, генерируемых за один раз, а также определить, в каком порядке будут использованы шаблоны в ходе генерации: либо в случайном порядке, либо подряд — в том порядке, как они представлены в окне «Скрипт». (Замечание: если в качестве диапазона шаблонов указаны нули, это означает, что никаких ограничений не введено).
Так же можно задать опцию «Показывать номера шаблонов в ответах». После этого ответы на задачи будут сопровождаться номером соответствующего шаблона. Это полезно для будущих настроек, если мы захотим в дальнейшем сосредоточиться на задачах, в которых наш ребенок в прошлый раз сделал больше всего ошибок.
Настройки можно сохранить командой «Файл»/«Сохранить»/«Настройки». Файл настроек имеет расширение .json. Для загрузки сохраненных настроек предусмотрена команда «Файл»/«Открыть»/«Настройки». При этом важно помнить, что настройки будут правильно работать только с тем скриптом, для которого они были созданы.
Полная коллекция скриптов
Генераторы, представленные на этом сайте, отличаются в первую очередь скриптами, но некоторые отличаются лишь настройками. При этом под скриптом подразумевается программный код и шаблоны, а под настройками — значения управляющих констант и выбор активных шаблонов (из окна «Скрипт»), а также все установки из окна «Настройки». Ниже приведена базовая коллекция генераторов с индивидуальными скриптами, на основе которой получены все остальные генераторы на этом сайте. Эта коллекция будет полезна тем, кто захочет проводить настройку самостоятельно или же, вообще, писать собственные скрипты (о том, как это делается — см. далее). Настройки в этих базовых генераторах подобраны таким образом, чтобы максимально наглядно продемонстрировать, на что способен соответствующий скрипт: все шаблоны активны и используются подряд друг за другом.
Примеры на умножение и деление из таблицы умножения
Простые примеры на сложение, вычитание, умножение и деление
Задачи в одно арифметическое действие, часть 1 (формальные):
То же с параметрами
Задачи в одно арифметическое действие, часть 2 (более жизненные)
То же с параметрами
Задачи в одно арифметическое действие, часть 3 (с возможным дополнительным прибавлением или вычитанием единицы)
То же с параметрами
Округление чисел и приближенные вычисления
Упражнения на быстрое нахождение арифметических ошибок
Простейшие упражнения на перевод единиц измерения
Перевод сложных единиц измерения
Простейшие упражнения на сложение, вычитание и сравнение цен и длин
Примеры в два-три действия, которые становятся особенно легкими при изменении порядка действий
Раскрытие скобок в выражениях типа (a+b)+(c+d)
Раскрытие скобок в выражениях типа (ab)(cd)
Параллель между сложением-вычитанием и умножением-делением в упражнениях на раскрытие скобок
Более сложные упражнения на раскрытие скобок и подстановки
Раскрытие скобок в выражениях типа (a+b)(c+d)
Примеры, состоящие из произвольного числа арифметических действий (целые числа и десятичные дроби)
Примеры на приближенные вычисления в несколько действий с десятичными дробями
Простые задачи в несколько арифметических действий
То же с параметрами
Уравнения первой степени
То же с параметром
Разложение чисел на простые множители
Арифметические операции с дробями
Перевод обыкновенных дробей в десятичные и обратно
Упражнения на построение отрицаний
То же с кванторами
Упражнения на доли и проценты
Преобразование выражений, содержащих квадрат суммы, разности и т.п.
А также:
Английский язык: упражнения на спряжение неправильных глаголов и образование времен. Вариант 1
То же. Вариант 2
Немецкий язык: упражнения на спряжение сильных и неправильных глаголов и образование времен
Французский язык: упражнения на спряжение глаголов и образование времен
Русский язык: упражнения на склонение имен числительных, прилагательных и существительных
И наконец:
Простейший demo-скрипт
«Пустой» генератор
5. Редактирование и создание собственных скриптов: первое ознакомление
[Этот и последующие разделы предполагают знакомство читателя с основами программного языка JavaScript]
Для первого ознакомления с тем, как работает скрипты, я бы посоветовал воспользоваться самым простейшим демонстрационным генератором, который генерирует примеры на сложение:
demo
Прежде всего мы хотим получить доступ к редактированию скрипта. С этой целью мы сохраняем программу Math-o-Gen на локальном компьютере в файл с расширением .html. Это делается командой «Файл»/«Сохранить»/«Программа»/«с редактором скрипта». Открыв сохраненный файл в браузере, убеждаемся, что редактирование на этот раз возможно.
Скрипт генератора demo содержит два шаблона, из которых заполнен и активирован только первый, а второй просто зарезервирован на случай, если мы захотим написать еще один шаблон. Условие задачи в активном шаблоне выглядит так:
Условие: [x] + [y] = ?
Для того чтобы превратить эту заготовку в полноценную задачу, надо вместо записей [x] и [y] поставить некоторые случайные числа. Программный код, расположенный над шаблоном, как раз и занимается тем, что подбирает эти числа. Посмотрим, как он устроен.
Прежде всего тут определена функция rnd(a, b), возвращающая целое случайное число в пределах от a до b. Далее, с помощью этой функции мы присваиваем случайные значения переменным x и y. В качестве нижнего возможного значения берем единицу, а в качестве верхнего — константу maxValue, определенную в разделе констант.
Теперь остается позаботиться о том, чтобы записи [x] и [y] были в шаблоне заменены на значения переменных x и y. Специально для этой цели в среде Math-o-gen определена функция replace(), которая применяется следующим образом:
replace('[x]', x); replace('[y]', y);
Эту же функцию мы используем, чтобы в заготовке ответа
Ответ: [sum]
заменить запись [sum] на сумму переменных x и y:
replace('[sum]', x + y);
Замечание. Применяемые тут квадратные скобки не являются обязательными. Их просто удобно использовать, чтобы сразу было видно, что именно подлежит замене.
Теперь, поняв, как работает скрипт, мы можем его произвольно менять, чтобы посмотреть, к каким результатам это приведет. Math-o-Gen, запущенный на локальном компьютере, запоминает все изменения скрипта и настроек, но для верности лучше сохранить все изменения в файл командой «Файл»/«Сохранить»/«Скрипт». Такой файл имеет расширение .mg. Впоследствии его можно загрузить обратно командой «Файл»/«Открыть»/«Скрипт».
6. Редактирование и создание собственных скриптов: подробности
6.1. Организация файлов
Для локальной работы с программой Math-o-Gen нам нужен прежде всего сам файл программы. Формально эта программа представляет собой веб-страницу и имеет расширение .html. В принципе ее можно скачать на локальный компьютер из любого генератора, представленного на этом сайте, с помощью команды «Файл»/«Сохранить»/«Программа»/«с редактором скрипта». Но лучше всего для этого подойдет «пустой» генератор, не содержащий никакого скрипта:
«Пустой» генератор
Имя сохраняемого html-файла может быть выбрано произвольно, например math-o-gen.html. Для работы программы ее следует загрузить в браузер. Обычно это происходит автоматически по двойному щелчку левой кнопкой мыши.
Далее, для работы программы нужны скрипты. Готовый файл скрипта, имеющий расширение .mg, можно скачать из любого генератора на этом сайте с помощью команды «Файл»/«Сохранить»/«Скрипт». Загрузка скрипта в локальную программу осуществляется командой «Файл»/«Открыть»/«Скрипт». На локальном компьютере скрипт можно отредактировать по своему усмотрению и сохранить в какой-либо новый файл скрипта.
Файл скрипта содержит в себе не только скрипт сам по себе (программный код + шаблоны), но и настройки к нему (управляющие константы + выборка активных шаблонов + параметры внешнего вида + параметры генерации). Иногда бывает удобно изменить только настойки и сохранить их в особый файл. Это делается командой «Файл»/«Сохранить»/«Настройки». Загрузить ранее сохраненные настройки, не меняя скрипта, можно командой «Файл»/«Открыть»/«Настройки». Файл настроек имеет расширение .json. Настойки будут правильно работать только с тем скриптом, для которого они были созданы.
Например, если у нас есть скрипт, генерирующий примеры на сложение, то имеет смысл использовать отдельные настройки для следующих разных случаев: сложение в пределах сотни, сложение в пределах тысячи, сложение натуральных чисел, сложение целых чисел и т.п. Конечно, ничто не мешает нам хранить информацию для всех этих случаев в файлах с расширением .mg, в которых присутствует как скрипт, так и настройки. Но скрипт — это не что-то такое, что пишется раз и навсегда. Например, в нем могут обнаружиться ошибки («баги»). И тогда почувствуется вся разница: одно дело исправить ошибку в одном-единственном файле, а другое дело — исправлять ее в полудюжине файлов.
6.2. Добавление и удаление шаблонов
Список шаблонов оформлен в виде таблицы, в которой каждому шаблону отведено три строки, соответствующих трем частям шаблона. Первая часть зарезервирована для локального программного кода, который выполняется только при генерации задачи на основе данного шаблона. Вторая часть содержит условие задачи, а третья часть — ответ. Слева от третьей части располагается кнопка с символом ☰. При нажатии на нее появляется меню, с помощью которого можно проводить различные операции с шаблонами: добавлять и удалять, смещать вверх или вниз и проч.
6.3. Структура программного кода
В качестве языка программного кода используется JavaScript.
Программный код, расположенный вверху окна «Скрипт» имеет глобальный характер — он выполняется при генерации всех задач из всех шаблонов. Однако каждый шаблон может иметь свой локальный код, для которого зарезервировано место в первой его части. Предусмотрена также возможность создание промежуточного («группового») кода, действие которого распространяется на несколько шаблонов, следующих подряд друг за другом. Для этого надо открыть меню первого из этих шаблонов (кнопка «☰») и выбрать там пункт «Добавить скрипт». После этого перед шаблоном появится дополнительное поле, которое как раз и предназначено для «группового» кода. Его действие распространяется на все последующие шаблоны вплоть до следующего поля с «групповым» кодом.
Следует иметь в виду, что переменные, определенные в глобальном коде, являются глобальными: они «видны» также на «групповом» и на локальном уровне. Переменные же, определенные в «групповом» коде, являются локальными: на других уровнях они не «видны».
При генерации задач сначала выбирается шаблон (случайно или в порядке очередности — в зависимости от настроек), затем выполняется глобальный код, потом — промежуточный, и в последнюю очередь — локальный.
6.4. Функция replace()
В среде Math-o-Gen определена функция replace(pattern, replacement), которая по своему действию аналогична (но не идентична) следующему JavaScript-коду:
question = question.replace(pattern, replacement);
answer = answer.replace(pattern, replacement);
где question — это строка (string), содержащая текст условия, а answer — строка, содержащая текст ответа. Первоначальные значения этих строк берутся из шаблона. Посредством последовательности преобразований, выполняемых функцией replace(), эти тексты доводятся «до готовности», то есть до полноценного условия задачи и ответа на нее. Как известно, функция text.replace(pattern, replacement) возвращает модифицированную строку text, в которой подстрока pattern заменена на подстроку replacement. В качестве параметра pattern может также фигурировать регулярное выражение (regular expression).
Функция replace(), определенная в среде Math-o-Gen имеет следующие особенности по сравнению со стандартной функцией языка JavaScript.
• Если параметр pattern представлен строкой, то производится глобальная замена всех его вхождений. (Если же в качестве pattern фигурирует регулярное выражение, то, как и в стандартном варианте, глобальная замена происходит только при наличии флага /g).
• Параметр replacement может быть представлен только строкой (или переменной, которая может быть автоматически преобразована в строку — в частности числом), но не функцией.
• Функция replace() в среде Math-o-Gen имеет третий аргумент priority, который по умолчанию равен нулю:
replace(pattern, replacement, priority = 0)
Вначале выполняются все замены с параметром priority равным 0, затем все замены с параметром priority равным 1 и так далее. При этом в множестве используемых значений этого параметра не должно быть пропусков: если в коде отсутствует вызов функции replace() с параметром priority равным 1, то вызовы функции с параметром равным 2 не будут иметь никакого эффекта.
6.5. Вставка математических формул с помощью MathJax
Для написания формул может быть использован формат MathJax в его LaTeX-подобной разновидности, при этом контекст формул задается символами \(...\) или \[...\].
6.6. Зарезервированные переменные
В среде Math-o-Gen определены две особые переменные:
• _questionNum_ — принимает значение номера используемого шаблона (что может быть полезно при отладке)
• _memory_ — изначально пустой объект, куда можно «складывать» любую информацию, которая сохраняется в ходе генерации от задачи к задаче. Этот объект «опустошается» только при нажатии кнопки «Сброс».
6.7. Отладка
Программный код при локальном использовании программы Math-o-Gen исполняется с помощью JavaScript-функции eval(), которая, как известно, затрудняет отладку. Но от этой неприятности всегда можно избавиться, воспользовавшись командой «Файл»/«Сохранить»/«Программа»/«без редактора скрипта». При этом на локальный диск сохраняется вариант программы Math-o-Gen, в котором функция eval() отсутствует, а вместо этого применяется жесткая кодировка. Однако в большинстве случаев без жесткой кодировки легко можно обойтись.
При наличие в коде синтаксических ошибок или же возникновении ошибок исполнения, генератор выдает сообщение о характере ошибки. К сожалению, в этом сообщение отсутствует локализация ошибки, но если писать и изменять код небольшими порциями (после каждой из которых проводить проверку на ошибки), то проблем, как правило, не возникает.
Гораздо бóльшие трудности вызывают логические ошибки, когда, например, генерация задач проходит, казалось бы, нормально, но при этом некоторые ответы к задачам оказывается неверными. Если в скрипте много шаблонов, то первое, что надлежит в этом случае сделать, — это выяснить, какой именно шаблон выдает ошибку. Проще всего это сделать, выбрав в окне «Настройки» опцию «Показывать номер шаблона в ответах».
Однако отладочная информация, выдаваемая вместе с генерацией задач, может быть сколь угодно полной. Для этого в окне «Скрипт» предусмотрен особый блок, который находится в самом низу списка шаблонов. Он по структуре похож на остальные шаблоны, но не имеет порядкового номера и состоит не из трех, и только из двух табличных строк. Первая строка предназначена для программного кода, а вторая представляет собой шаблон отладочного сообщения, который будет добавляться к ответам генерируемых задач. Для активации блока следует поставить галочку в расположенный напротив него чек-бокс.
7. Условия использования
Представленная здесь коллекция онлайн-генераторов под общим названием Math-o-Gen предназначена для частного пользования и распространяется автором бесплатно в том виде, как есть, без предоставления каких бы то ни было гарантий. В частности, не гарантируется верность ответов к генерируемым задачам. Распространение и коммерческое использование программы Math-o-Gen в исходном или модифицированном виде возможны только по согласованию с правообладателем. Сборники задач, полученные с помощью этого генератора, могут быть использованы безо всяких ограничений, в том числе для коммерческих целей, при условии что конечному пользователю будет предоставлена ссылка на этот сайт. Также не накладывается никаких ограничений на создание, модификацию и использование скриптов и настроек к программе Math-o-Gen.
вы классные