MarkScript: различия между версиями

Материал из MyTestXPro Wiki Help
Перейти к навигации Перейти к поиску
 
(не показано 28 промежуточных версий этого же участника)
Строка 1: Строка 1:
<font color='#ff0000'>Эта функция доступна только в бета-версии! Для апробации свяжитесь с разработчиком. </font>
+
== Выставление оценки за тест используя свой скрипт ==
  
'''Выставление оценки за тест используя свой скрипт (небольшую программу на языке программирования JavaScript).'''
+
<font color='#aaaaaa'>Эта информация для версии 11.0.0.62 (и, возможно, для следующих).</font>
  
В бета-версии кроме обычной шкалы оценивания можно добавить еще свой скрипт, учитывающий какие-то особые требования. Если вычисление оценки завершится неудачно, то оценка будет выставлена обычным образом.
+
Настройка оценивания теста находится в Редакторе тестов на странице [[Параметры_теста_MyTestXPro|Параметры теста]].
  
[[File:mtx_editor_markedit.png]] [[File:mtx_editor_markscript1.png|580px]]
+
[[File:mark_param1.png]]
  
Для сохранения неизменным формата теста, оценочный скрипт записывается в конце заметок к тесту после строки ''/*MarkScript*/'' (до нее можно писать в заметках все что угодно).
+
Для изменения критерия оценивания нажмите кнопку [[Оценивание_теста_и_заданий_MyTestXPro|Изменить]]...
  
Например, если требуется поставить оценку в соответствии со следующими критериями:
+
В редких случаях обычной шкалы оценивания может быть недостаточно и нужно учитывать какие-то особые требования. Например, кроме набранных баллов нужно еще учесть результаты по каждой группе в отдельности. В этом случае для вычисления оценки за тест можно использовать свой скрипт (небольшую программу на языке программирования JavaScript).
  
а) если хотя бы из одной группы не решено верно хотя бы одно задание, то "2"
+
<font color='#ff0000'>Предупреждение: не используйте эту возможность без необходимости. Это бета-версия, реализация может измениться в дальнейшем. </font>
  
б) иначе (если в каждой группе есть хотя бы одно верное решенное задание), то на "3" - 30% от возможного кол-ва баллов, на "4" - 60%, на "5" - 90%.
+
Работа скрипта может зависеть от операционной системы. Если вычисление оценки завершится неудачно, то оценка будет выставлена обычным образом.  
  
то можно задать вот такой скрипт:
 
  
<pre>
+
Для настройки скрипта используйте кнопку:
/*MarkScript*/
+
[[File:mark_script_onoff.png]]
function main(R, G){
+
 
  var m = {};
+
Откроется окно:
  var f = true;
+
 
  for (var key in G){
+
[[File:mark_script_editor.png]]
    if(G[key]['CountLimit']!=0 && G[key]['CountCorrectTask']<1){
+
 
      f = false;
+
Если скрипт уже задан ранее, то он будет показан в этом окне.
      break;
 
    }
 
  }
 
  var X = {3:30, 4:60, 5:90};
 
  if(f){
 
    m['value'] = 2;
 
    for (var i in X){
 
      if (X[i]<=(100*R['Score']/R['ScoreMax'])){
 
          m['value'] = i;
 
      }
 
    }
 
    m['note'] = 'Все хорошо!';
 
  }else{
 
    m['value'] = 2;
 
    m['note'] = 'Есть нулевые темы!';   
 
  }
 
  return m;
 
}
 
</pre>
 
  
Функция для вычисления оценки называется main. Она получает два параметра: общие результаты по тесту и результаты по каждой группе. Эти два объекта создаются автоматически. Например, они могут выглядеть так:
+
Функция вычисления оценки получает два параметра: общие результаты по тесту и результаты по каждой группе. Эти два объекта создаются автоматически и зависят от теста и его результатов. Например, они могут выглядеть так:
  
 
<spoiler>  
 
<spoiler>  
Строка 116: Строка 96:
 
</spoiler>
 
</spoiler>
  
Функция main должна вернуть объект с оценкой и (необязательно) с названием оценки и примечанием.
+
Для отладки скрипта вы можете изменять эти данные в верхнем поле.
 +
 
 +
 
 +
Скрипт оценивания может содержать несколько функций. Для вычисления оценки вызывается функция main().
 +
Эта функция main должна вернуть объект с оценкой и (необязательно) с названием оценки и примечанием. Примечание можно увидеть в журнале (столбец "Примечание") и всплывающей подсказкой наведя мышь на оценку в окне результата.
 +
 
 +
В контекстном меню (правой кнопкой) поля скрипта есть несколько заготовок, облегчающих понимание и написание своих скриптов.
 +
 
 +
Пример №1 показывает как скрипт должен возвращать результат:
 
<pre>
 
<pre>
 +
function main(R, G){
 
   var m = {};
 
   var m = {};
  //...
+
   m['value'] = 3;
   m['value'] = 3;  
 
 
   m['title'] = 'Зачет';
 
   m['title'] = 'Зачет';
   m['note'] = 'Есть нулевые темы!';   
+
   m['note'] = 'Примечание!';
 +
   return m;
 +
}
 +
</pre>
 +
 
 +
Пример №2 соответствует обычному способу оценивая (делает тоже самое):
 +
<pre>
 +
function main(R, G){
 +
  var m = {};
 +
  var X = {3:30, 4:60, 5:90};
 +
  m['value'] = 2;
 +
  for (var i in X){
 +
    if (X[i] <= (100*R['Score']/R['ScoreMax'])){
 +
      m['value'] = i;
 +
    }
 +
  }
 
   return m;
 
   return m;
 +
}
 
</pre>
 
</pre>
 +
 +
Пример №3 это уже один из возможных способов использования этой функции:
 +
<pre>
 +
function main(R, G){
 +
  var m = {};
 +
  var f = true;
 +
  for (var key in G){
 +
    if(G[key]['CountLimit']!=0 && G[key]['CountCorrectTask']<1){
 +
      f = false;
 +
      break;
 +
    }
 +
  }
 +
  var X = {3:30, 4:60, 5:90};
 +
  if(f){
 +
    m['value'] = 2;
 +
    for (var i in X){
 +
      if (X[i] <= (100*R['Score']/R['ScoreMax'])){
 +
          m['value'] = i;
 +
      }
 +
    }
 +
    m['note'] = 'Все хорошо!';
 +
  }else{
 +
    m['value'] = 2;
 +
    m['note'] = 'Есть нулевые темы!';
 +
  }
 +
  return m;
 +
}
 +
</pre>
 +
 +
Его можно применять, например, если требуется поставить оценку в соответствии со следующими критериями:
 +
 +
а) если есть хотя бы одна группа из которой не решено верно хотя бы одно задание, то "2"
 +
 +
б) иначе "3" - 30% от возможного кол-ва баллов, на "4" - 60%, на "5" - 90%.
 +
 +
[[File:mark_script_editor2.png]]
 +
 +
После запуска скрипта в поле ниже отобразиться результат (для данных примерных результатов). Если скрипт работает без ошибок и выдает оценку, то его можно сохранить.
 +
 +
После изменения скрипта кнопка {{Клавиша|Сохранить}} становится не активной, это предназначено, что уменьшения рисков задать не рабой скрипт.
 +
 +
Кнопка {{Клавиша|Удалить}} удаляет скрипт из оценивания, при этом поле скрипта не очищается и вы можете еще с ним поработать.

Текущая версия на 21:15, 24 июля 2021

Выставление оценки за тест используя свой скрипт

Эта информация для версии 11.0.0.62 (и, возможно, для следующих).

Настройка оценивания теста находится в Редакторе тестов на странице Параметры теста.

Mark param1.png

Для изменения критерия оценивания нажмите кнопку Изменить...

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

Предупреждение: не используйте эту возможность без необходимости. Это бета-версия, реализация может измениться в дальнейшем.

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


Для настройки скрипта используйте кнопку: Mark script onoff.png

Откроется окно:

Mark script editor.png

Если скрипт уже задан ранее, то он будет показан в этом окне.

Функция вычисления оценки получает два параметра: общие результаты по тесту и результаты по каждой группе. Эти два объекта создаются автоматически и зависят от теста и его результатов. Например, они могут выглядеть так:

Показать


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


Скрипт оценивания может содержать несколько функций. Для вычисления оценки вызывается функция main(). Эта функция main должна вернуть объект с оценкой и (необязательно) с названием оценки и примечанием. Примечание можно увидеть в журнале (столбец "Примечание") и всплывающей подсказкой наведя мышь на оценку в окне результата.

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

Пример №1 показывает как скрипт должен возвращать результат:

function main(R, G){
  var m = {};
  m['value'] = 3;
  m['title'] = 'Зачет';
  m['note'] = 'Примечание!';
  return m;
}

Пример №2 соответствует обычному способу оценивая (делает тоже самое):

function main(R, G){
  var m = {};
  var X = {3:30, 4:60, 5:90};
  m['value'] = 2;
  for (var i in X){
    if (X[i] <= (100*R['Score']/R['ScoreMax'])){
      m['value'] = i;
    }
  }
  return m;
}

Пример №3 это уже один из возможных способов использования этой функции:

function main(R, G){
  var m = {};
  var f = true;
  for (var key in G){
    if(G[key]['CountLimit']!=0 && G[key]['CountCorrectTask']<1){
      f = false;
      break;
    }
  }
  var X = {3:30, 4:60, 5:90};
  if(f){
    m['value'] = 2;
    for (var i in X){
      if (X[i] <= (100*R['Score']/R['ScoreMax'])){
          m['value'] = i;
      }
    }
    m['note'] = 'Все хорошо!';
  }else{
    m['value'] = 2;
    m['note'] = 'Есть нулевые темы!';
  }
  return m;
}

Его можно применять, например, если требуется поставить оценку в соответствии со следующими критериями:

а) если есть хотя бы одна группа из которой не решено верно хотя бы одно задание, то "2"

б) иначе "3" - 30% от возможного кол-ва баллов, на "4" - 60%, на "5" - 90%.

Mark script editor2.png

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

После изменения скрипта кнопка Сохранить становится не активной, это предназначено, что уменьшения рисков задать не рабой скрипт.

Кнопка Удалить удаляет скрипт из оценивания, при этом поле скрипта не очищается и вы можете еще с ним поработать.