GIFT-формат файлов импорта

GIFT - формат разметки текста, позволяющий в одной процедуре установить в МООДОС набор тестовых заданий. Он поддерживает тестовые задания закрытой и открытой форм таких типов как: выбор из множества, верно-неверно, короткий ответ, выбор соответствия, числовой ответ, а также задания "пропущенное слово" ( ______ ). Кроме того, GIFT-формат позволяет создавать комментарии к вариантам ответов, заголовки тестовых заданий, весовые коэффициенты оценивания вариантов ответов и другое.

Все типы тестовых заданий могут быть скомпонованы в одном текстовом файле. Текст файла импорта должен иметь кодировку юникод (UTF-8) (если вы используете не ASCII символы). Название файла должно иметь расширение .txt.

ОБЩИЕ ПРАВИЛА ФОРМАТА "GIFT"

Тестовое задание состоит, как правило, из вопроса и вариантов ответов на него (закрытая форма). Варианты ответов отделяются от вопроса фигурными скобками ( {} ). Текст отдельного тестового задания в файле не должен содержать пустых строк. Тестовые задания отделяются друг от друга пустой строкой (двойное нажатие клавиши ENTER). Если при написании текста вопроса тестового задания нужно перейти на НОВУЮ СТРОКУ, то необходимо использовать комбинацию символов \n (прямой слеш, латинская буква n). Если необходимо вставить в файл строку с комментарием, она должна начинаться с двух обратных слешей ( // ). Комментарии можно делать в любом месте файла.

РАЗМЕТКА ТЕСТОВЫХ ЗАДАНИЙ

Тестовое задание "Выбор из множества"

Для тестовых заданий выбор из множества неправильные варианты ответов помечаются символом тильда ( ~ ), а правильные символом "знак равенства"( = ).

Пример:

	Кто написал роман "Война и мир"?{~Пушкин А.С. ~Лермонтов Ю.М. =Толстой Л.Н. ~Толстой А.К.}
	

Тестовое задание "Пропущенное слово"

Это разновидность тестового задания "Выбор из множества". При показе тестового задания слово, выбор варианта которого необходимо осуществить, автоматически заменяется символами подчеркивания ( _____ ). Для разметки тестового задания такого типа варианты ответа необходимо разместить в том месте, где должно размещаться "пропущенное слово".

Пример:

	C/C++ является языком программирования {~Низкого =Высокого ~Нулевого} уровня.
	

Если варианты ответов размещены перед последним символом пунктуации вопроса тестового задания, то в этом месте всегда будут вставлены символы "пропущенного слова". Все типы тестовых заданий могут быть написаны с использованием "пропущенного слова".

Для ясности варианты ответов могут быть записаны в отдельных строках и даже с абзацным отступом.

Пример:

	C/C++ является языком программирования
	{
	~Низкого
	=Высокого
	~Нулевого
	} уровня .

	Кто написал роман "Война и мир"?
	{
	~Пушкин А.С.
	~Лермонтов Ю.М.
	=Толстой Л.Н.
	~Толстой А.К.
	}
	

Тестовое задание "Короткий ответ"

Ответы в этом типе тестового задания всегда начинаются с префикса "занак равенства" ( = ), который обозначает, что все ответы правильные. В этом типе тестовых заданий не должно быть вариантов ответов с префиксом "тильда" ( ~ ).

Пример:

	Кто написал роман "Война и мир"? {=Толстой =Толстой Л.Н. =Лев Толстой}

	Два плюс два равняется: {=4 =четыре}
	

Если указывается только один вариант правильного короткого ответа, то он может быть записан без префикса "знак равенства " ( = ). Следует отметить, что в этом случае его можно спутать с тестовым заданием "Верно-неверно".

Тестовое задание "Верно-неверно"

В тестовых заданиях такого типа необходимо указать верно ли утверждение или нет (Истинно или Ложно). Верное утверждение записывается как {TRUE} или {T}, а ложное как {FALSE} или {F}.

Пример:

	Лев Николаевич Толстой автор романа "Война и мир"? {T}

	Язык программирования C/C++ является языком низкого уровня? {F}
	

Тестовое задание "Выбор соответствия"

Разметка соответствующих пар начинается с символа равенства ( = ), а подвопрос и правильный ответ разделяются двумя символами ->. Стоит указать, что в таком типе тестового задания должно быть не менее трех соответствующих пар.

Пример:

	Вопрос о соответствии?
	{
	=подвопрос1 -> ответ1
	=подвопрос2 -> ответ2
	=подвопрос3 -> ответ3
	}

	Укажите столицы ниже перечисленных стран:
	{
	=Канада -> Оттава
	=Украина -> Киев
	=Италия -> Рим
	=Япония -> Токио
	}
	

Тестовые задания "Выбор соответствия" не поддерживают методических указаний и весовых коэффициентов оценивания к каждому варианту ответа.

Тестовое задание "Числовой ответ"

Правильный ответ в тестовом задании "числовой ответ" должен начинаться со знака номера ( # ). Разделителем между целой и дробной частями числа является точка ( . ). Описание числового ответа может содержать величину погрешности, в пределах которой ответ будет считаться правильным. Правильный ответ и погрешность должны быть разделены двоеточием ( : ). Так, например, если правильным ответом является величина, находящаяся в пределах от 1.5 до 2.5, то описание правильного ответа должно иметь вид {#2:0.5}. Последнее означает, что правильным ответом есть число 2+- 0.5. Если погрешность не указана, то ее величина по умолчанию считается нулевой.

Пример:

	В каком году родился Тарас Шевченко? {#1814}

	Какое значение имеет число Pi (до 3-х знаков после десятичной точки)? {#3.1415:0.005}
	

Кроме того, числовой ответ может быть описан следующим образом {#минимальноеЗначение..максимальноеЗначение}. Разделителем между максимальным и минимальным значениями допустимого диапазона правильного ответа является двойная точка ( .. ).

Пример:

	Какое значение имеет число Pi (до 3-х знаков после десятичной точки)? {#3.141..3.142}
	

В МООДОС возможно создание тестового задания выбора из множества числовых ответов. Этот вариант может быть использован, например, для комбинации множества числовых ответов с весовыми коэффициентами оценки правильности ответов. Множество числовых ответов должно быть разделено знаком равенства ( = ), как это делается при разметке тестовых заданий "короткого ответа".

Пример:

	Какое значение имеет число Pi (до 4-х знаков после десятичной точки)?
	{#
	=3.1415:0
	=%50%3.1415:0.002
	=%25%3.1415:0.004
	}
	

Тестовое задание "Эссе"

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

Пример:

	Напишите краткую биографию М.Ю.Лермонтова. {}
	

Тестовое задание "Описание"

Тестовое задание описание не имеет вариантов ответов и служит для создания пояснений на страничках показа тестовых заданий - страничках теста.

Пример:

	Следующие тестовые задания содержат арифметические операции.
	

ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ

В дополнение к выше перечисленному, GIFT-формат позволяет создавать строковые комментарии в файле, название тестовых заданий, методические указания к вариантам ответов, весовые коэффициенты оценивания вариантов ответов.

Строковые комментарии

Комментарии не импортируются на сайт и не отображаются при прохождении теста, они видны только при просмотре текстового файла с тестом. Комментарии используются для введения в файл дополнительной информации о тесте, тестовом задании, варианте ответа.

Строка с комментарием начинается с двойного обратного слеша ( // ), которые не должны быть разделены пробелом или табуляцией. При импорте строки с комментариями игнорируются.

Пример:

	// Тестовое задание "Верно-неверно"
	Является ли язык программирования C/C++ языком низкого уровня? {F}
	

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

Каждое тестовое задание имеет обязательный элемент - название. Для разметки названия используются два двойных двоеточия ( :: ), между которыми располагается текст названия. Название размещается в начале описания тестового задания.

Пример:

	::Произведения Л.Н.Толстого::
	Кто написал роман "Война и мир"?
	{
	~Пушкин А.С.
	~Лермонтов Ю.М.
	=Толстой Л.Н.
	~Толстой А.К.
	}

	::Столицы мира::
	Укажите столицы ниже перечисленных стран: {=Канада -> Оттава =Украина -> Киев =Италия -> Рим =Япония -> Токио}

	::Задание 01_01::
	Язык программирования C/C++ является языком низкого уровня? {F}
	

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

Методические указания

Методические указания и пояснения к варианту ответа могут включаться в состав каждого тестового задания. Вставка осуществляется с помощью символа номера (#) и следующего после него текста указания или пояснения.

Пример:

	C/C++ является языком программирования
	{
	~Низкого#Внимательно перечитай раздел учебника.
	=Высокого#Отлично!
	~Нулевого#Очень плохо! Такого уровня для языков программирования не существует.
	} уровня.

	Кто написал роман "Война и мир"? {=Толстой#Молодец! Верно. =Толстой Л.М.#Молодец! Верно. =Лев Толстой#Молодец! Верно.}

	Язык программирования C/C++ является языком низкого уровня? {F#Ошибаешься! Язык C/C++ не является языком низкого уровня.#Молодец! Верно.}
	

В процессе тестирования для заданий "Выбор из множества", указания или пояснения показываются только для тех ответов, которые выбрал студент. Для заданий "Короткий ответ" указания или пояснения показываются только тогда, когда студент выбрал правильный ответ. Для тестовых заданий "Верно-неверно" указания или пояснения могут иметь два значения. Первое, когда студент выбрал неправильный ответ, второе - правильный ответ.

Весовые коэффициенты оценивания

Весовой коэффициент оценивания варианта ответа доступен для двух типов тестовых заданий: выбор из множества и короткий ответ. Вставка значения весового коэффициента в текст импорта тестового задания осуществляется с помощью символов процента ( % значение %) после тильды ( ~ ) для заданий выбора из множества или после знака равенства ( = ) для заданий короткого ответа. Эти записи могут быть дополнены методическими указаниями или пояснениями.

Пример:

	Текст вопроса{~неверный ответ ~%50%частично верный =абсолюто верный}
	

Множественные ответы

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

Пример:

	Кто создавал прототипы предшественников современных компьютеров?
	{
	~ Рузвельт#Не верно
	~%50%Бэбидж
	~%50%Нейман
	~ Бил Гейтс#Не верно
	}
	

Обратите внимание, ни перед одним из ответов не стоит знак равенства ( = ) и поэтому суммарная оценка не может быть больше чем 100%. Если это не так, то система покажет ошибку.

Для заданий этого типа существует проблема, согласно которой если студент выберет все варианты ответов, то автоматически получит оценку в 100%. Для устранения этой проблемы необходимо вводить отрицательные значения весовых коэффициентов для неверных ответов.

Пример:

	Кто создавал прототипы предшественников современных компьютеров?
	{
	~%-50%Рузвельт#Не верно
	~%50%Бэбидж
	~%50%Нейман
	~ %-50%Бил Гейтс#Не верно
	}
	

Особенности форматирования текста

Текст вопроса тестового задания (только он) может быть размечен в соответствии с требованиями форматирования web-страниц. Доступными форматами являются системный формат МООДОС (Moodle Auto-Format), HTML (HTML-формат), формат простого текста (Plain text format), формат markdown (Markdown format). Формат текста задается с помощью квадратных скобокх ( [тип формата] ) перед вопросом задания.

Пример:

	[markdown]Является ли язвк C++ языком программирования высокого уровня? {T}

	::Тестовое задание 01::
	[html]Кто создавал прототипы предшественников современных компьютеров?
	{
	~%-50%Рузвельт#Не верно
	~%50%Бебідж
	~%50%Нейман
	~%-50%Біл Гейтс#Не верно
	}
	

Специальные символы ~ = # {}

Символы ~ = # {} специальное назначение и поэтому не могут использоваться в качестве сиволов текста вопроса и вариантов ответа. Системные фильтры отслеживают эти символы и выполняют соотвтствующии им действия. Это так называемые контрольные символы. Однако, если вам необходимо применить эти символы в текстах, например, для того, чтобы математическую формулу в вопросе, то избежания появления ошибок перед контрольным символом необходимо поставить обратный слеш ( \ ).

Пример:

	Какая сумма равняется 5?
	{
	~ \=2+2
	= \=2+3
	~ \= 2+4
	}

	::Контрольные символы GIFT-формата::
	Какие символы НЕ являются контрольными символами формата импорта GIFT?
	{
	~ \~     # \~ является контрольным символом.
	~ \=     # \= является контрольным символом.
	~ \#     # \# является контрольным символом.
	~ \{     # \{ является контрольным символом
	~ \}     # \} является контрольным символом.
	= \      # Верно! \ (backslash) НЕ является контрольным символом.
	}
	

Разделы тестовых заданий

В формате GIFT существует возможность задавать в текстовом файле разделы, в которые будут импортированы тестовые задания. Задание разделов осуществляется с помощью модификатора ( $CATEGORY: ). В файле можна задаль любое разумное количество модификаторов. Модификатор в файле выделяется пустыми строками. Все тестовые задания после модификатора (до следующего модификатора) будут импортированы в указанный раздел.

Пример:

	$CATEGORY:  Философия/Тема_01

	или просто

	$CATEGORY: Тема_01
	

В этом случае вопросы будут импортированы в раздел Тема_01. Если такого раздела в банке тестовых заданий нет, то он будет создан автоматически.

Другие функции

Вопросы с короткими ответами могут быть офорлены по принципу выбора из "0" и "1", как в примере:

	$вопрос->usecase = 0;