Проф-Диалог
Конструктор ProfMapper – Модуль математических расчетов
Введение
В этой статье мы рассмотрим модуль математических расчётов в конструкторе опросников ProfMapper.

Если вы создаёте анкеты без шкал или простые тесты, в которых не нужны математические расчёты, то этот модуль вам не понадобится. Например, вы создали тест, в котором 15 вопросов, и можно получить максимум15 баллов. Если вас устраивает, что в вашем отчёте будет выводиться просто количество правильных ответов (например, 7 из 15 или 12 из 15), то в таком случае модуль математических расчётов вам не нужен.

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

Для того чтобы найти модуль математических расчётов в вашем кабинете, вам нужно перейти в «Конструктор опросников».
Далее перейдите во вкладку «Созданные вами».
И выберите какой-либо из уже созданных вами тестов или опросников. Далее нажмите на кнопку «Редактировать» и перейдите во вкладку «Шкалы».
В нашем примере уже создано три шкалы.
К каждому ответу теста привязаны какие-либо значения шкал. Они все суммируются системой. Например, у нас есть шкала «Потребности в привлечении внимания», и по этой шкале есть пять вопросов, где пользователь может получить максимум пять «сырых» баллов. Этот балл будет подаваться на вход в модуль математических расчетов, и потом вы можете производить с этими баллами какие-либо операции.

Например, если сырой балл будет от 0 до 5, и вы захотите привести его к стобалльной шкале, то в данном случае можно будет просто умножить этот балл на 20, то есть 5 превратится в 100, 4 — в 80, 3 — в 60, и так далее. Но для приведения одной шкалы к другой есть и специальная функция – ИНТШКАЛ, которую мы рассмотрим позже.

Изначально для работы с модулем нужно задать все «сырые» шкалы и привязать вопросы теста к этим шкалам. Подробнее о том, как это можно сделать, вы можете прочитать в статье базе знаний «Как создавать тесты в конструкторе».

Предположим, что вы уже создали опросник и привязали «сырые» значения шкал, и теперь вы движетесь дальше. Перейдите во вкладку «Мат. расчеты».
Здесь вы видите ряд доступных функций, операторов и идентификаторов.
Далее вы видите поле «Список выражений», здесь пишутся выражения, которые производятся над сырыми значением шкал.
В примере ниже вы видите три выражения. Первое выражение в списке округляет значение шкалы А, то есть, если сырое значение шкалы является дробным значением, происходит его округление. То же самое мы делаем со шкалой B и шкалой C (второе и третье выражение).
Далее расположено поле «Тестовое значение шкал», где вы можете протестировать, как работают ваши расчёты. Если есть какие-либо ошибки, то здесь их можно выявить.
Идентификаторы
Теперь рассмотрим «Идентификатор значения шкалы или переменной», который показан как квадратные скобки.
В квадратных скобках находится краткое значение шкалы. Оно задаётся во вкладке «Описание». Чтобы обратиться в расчётах к шкале А, вы будете обращаться к букве А. Для другой шкалы будет обозначение буквой B.
Обратите внимание, что вы не должны путать раскладку клавиатуры! То есть краткое обозначение с кириллической А и латинской A – это два разных обозначения.
Для другой шкалы будет обозначение буквой B. Обратите внимание, что система не даст вам назначить две шкалы с одинаковым буквенным обозначением.
На примере видно, что значениям шкал присвоено округление. Чтобы обратиться к сырому значению шкалы, мы используем идентификатор [А].
Итак, у нас на входе было «сырое» значение шкалы, например [A] было равно 10.2. Затем в ходе выполнения выражения значение округлилось до целого, то есть 10.2 округлилось до 10. И поскольку дальше никаких операций не выполнялось, то вы получите на выходе — 10. Соответственно, в отчёте в шкале «Потребность в привлечении внимания» будет выведено число 10. Если не производить математические расчёты, то в отчёт пойдёт значение 10.2.
Все выражения в расчётах выполняются последовательно. В итоговом отчёте будет использовано самое последнее выражение из списка, которое прошло после всех предыдущих операций.
Например, мы можем добавить еще одно выражение в конце, прибавив к значению [A] два: [A]=[A]+2

Таким образом, последовательность выполнения выражений будет следующей:
1. [A]=[A].ОКРУГЛ (10.2 преобразуется в 10)
2. [B]=[B].ОКРУГЛ
3. [C]=[C].ОКРУГЛ
4. [A]=[A]+2 (10 преобразуется в 12)

Итоговое значение шкалы [A], которое пойдет в отчет – 12.
Также с помощью идентификатора [] вы можете задавать те переменные, которых у вас изначально не было.

Например, у вас есть шкалы A, B и C, но вы хотите посчитать среднее этих трех шкал. Под него у вас нет шкалы. Иными словами, вы хотите использовать это среднее в каких-то вычислениях, но не хотите его отображать в отчете.
Задайте дополнительную переменную [M], и она будет равна значению А+В+С, делённому на 3.
[M]=([A]+[B]+[C])/3
Далее вы записываете этот результат и после можете использовать его в необходимых расчетах. После этого значение будет теряться, если оно вам не нужно. То есть, по сути, это «на ходу» создаваемая переменная, которую после для удобства можно использовать в расчетах.
Арифметические операторы
Первый оператор, который мы рассмотрим — «Присваивание». В нашем примере значению шкалы А присвоено её округлённое значение. Тому, что слева от оператора (то есть [A]), присваивается то, что справа (то есть [A].ОКРУГЛ).
Например, вы можете просто присвоить значению шкалы А число 2.
Следующий оператор — «Сложение» (+). Он просто что-то с чем-то складывает. В примере видно, что значение шкалы S может быть увеличено на 5.
Либо вы можете сложить значения нескольких шкал. Для примера, шкале С вы можете назначить значение суммы шкал A и B или просуммировать два выражения в скобках.
«Оператор вычитания» (-) позволяет вам что-то из чего-то вычесть.
По аналогии есть операторы умножения (*), деления (/) и возведения в степень (**).

Нужно помнить, что в математике существует определённая последовательность выполнения операций. Сначала выполняется возведение в степень, затем умножение и деление, и только после этого — сложение и вычитание. Если вы захотите изменить этот порядок по умолчанию, то должны использовать скобки.
Функции поиска минимального и максимального значения
Рассмотрим первую функцию — «Функция поиска минимального значения» (МИН)
Используйте ее, если у вас есть несколько значений шкал или переменных, и вы хотите найти из них минимальное.
К примеру, возьмем три шкалы [G],[H] и [J], и найдем минимальное значение из них. Результат запишем в значение шкалы [G].
Получится выражение:
[G]=([G],[H],[J]).МИН
Если G равно 8, H равно 5, J равно 12, то минимум этих значений – 5. Он запишется в шкалу G. После выполнения операций G будет равно 5, H равно 5, J равно 12.

Вместо переменных вы можете подставить число. Например, у вас есть шкалы А, B и число 10, и из этих трёх вы можете искать минимум.
В таком случае выражение будет иметь вид:
[A]=([[A],[B],10).МИН

Полностью аналогичная функция — «.МАКС», только она ищет не минимальное, а максимальное значение.
Функции округления
Следующая функция — «.ОКРУГЛ», которая округляет значение до целого. Например, если у вас значение шкалы [A] равно 4,25, оно округлится до 4. (4,5 округлится до 5, а 4,4 округлится до 4).
Функция «.ОКРУГЛВВЕРХ» округляет до целого, но в верхнюю сторону. Например, 4,1 округлится до 5.
Функция «.ОКРУГЛВНИЗ» округляет до целого, но в нижнюю сторону. Например, 4,4 округлится до 4, а 3,99 округлится до 3.

Все дробные значения, которые будут выводиться в отчёте, в конце имеет смысл округлять до целого числа, чтобы они выглядели более презентабельно.
Функция проверки условия
«Следующая функция» – «Проверки условия» ("ЕСЛИ") и связанные с ней логические операторы.
Функция если записывается как ЕСЛИ()()()
В первых скобках пишется условие, которое будет проверяться. Во вторых скобках пишется выражение, которое выполняется, если выражение в первых скобках истинно. В третьих скобках пишется выражение, которое выполняется, если выражение в первых скобках ложно.
Пример:
ЕСЛИ([GE]===2)([T]=[T2])([K]=2)

Если значение шкалы GE равно 2, то выполняется выражение, то значению шкалы Т присваивается значение шкалы Т2 (выражение во вторых скобках).

Если же значение шкалы GE не равно 2, то значению шкалы K присваивается значение 2 (выражение в третьих скобках).
Три знака равно (===) – это оператор сравнения в данном выражении. Он проверяет условие. Этот оператор используется только в первых скобках функции ЕСЛИ. Не стоит путать его с оператором присваивания (=).
Рассмотрим другой пример.
ЕСЛИ([X]>10)([Y]=[Y]+5])([Z]=[Z]-3)

Если значение шкалы X строго больше 10, то значение шкалы Y увеличивается на 5. В противном случае, если X не больше 10, а меньше или равно 10, то в таком случае значению шкалы Z присваивается старое значение шкалы Z минус 3.
При использовании функции ЕСЛИ важно не пропускать никакие скобки. Если вам в каком-то случае не нужно выполнять выражение, то вы оставляете эту пару скобок пустой (вторую или третью).
Логические операторы
Следующий к рассмотрению оператор - это «Больше или равно» (>=).

ЕСЛИ([A]>=10)([B]=1)()

Если значение шкалы А больше или равно 10, то шкале B присваивается значение 1.

Аналогичный оператор «Меньше или равно» (<=).
Также есть операторы со строгим условием – «Больше» (>) и «Меньше » (<). То есть, чтобы условие выполнилось значение должно быть строго больше или строго меньше.

Примеры:
1. ЕСЛИ([A]>=10)([B]=1)()
Предположим A равно 10. В таком случае выражение в первых скобках будет истинно, и шкале B присвоится 1.
2. ЕСЛИ([A]>10)([B]=1)()
Предположим A тоже равно 10. В таком случае выражение в первых скобках будет ложно, и не будет произведено никаких действий. В данном случае у нас строгое условие (не больше или равно, а строго больше).
Следующий оператор «или» (||). Он также используется только в первых скобках функции ЕСЛИ.
Пример:
ЕСЛИ([A]>10 || [B]<5)([C]=1)()

Если А больше 10 ИЛИ B меньше 5, то тогда С присваиваем значение 1. Это означает, что может быть выполнено любое одно из условий: либо А больше 10, либо B меньше 5.
Похожий оператор «и» (&&). Этот оператор проверяет, чтобы были выполнены все условия.

Например:
ЕСЛИ([A]>10 && [B]<5)([C]=1)()

Если А больше 10 И B меньше 5, то тогда С присваиваем значение 1. Это означает, что должны быть выполнены все условия: и А больше 10, и B меньше 5. Если хотя бы одно из условий не выполнено, то выражение не будет считаться истинным.
Рассмотрим комбинированный пример, где мы используем одновременно «и» и «или».
ЕСЛИ(([A]>2&&[B]<2)||([C]===5)&&[D]===3)([K]=1)()
Если А больше 2 и B меньше 2 ИЛИ С равно 5 и D равно 3, то K присваиваем 1.
Обратите внимание, что внутри первых скобок функции ЕСЛИ мы создали еще две пары скобок. В одну из них мы поместили выражение ([A]>2&&[B]<2), а в другую ([C]===5)&&[D]===3). Эти две пары скобок мы разделили оператором ||. Таким образом, чтобы выражение целиком было истинно, нужно чтобы ИЛИ выражение в левых скобках было истинно, ИЛИ выражение в правых скобках было истинно.
Функция интервального масштабирования
Перейдем к следующей функции – «Интервального масштабирования шкалы» (ИНТШКАЛ).
Например, у вас есть тест, в котором максимум можно набрать 15 баллов, и вы хотите конвертировать эту шкалу в 100-балльную. Чтобы это сделать, необходимо использовать функцию ИНТШКАЛ.

В ней мы будем задавать 2 интервала. Первый — это начальный от 0 до 15, а второй — это тот, который вы хотите получить от 0 до 100.

[A]=[A].ИНТШКАЛ([0,15],[0,100])
Давайте протестируем работу нашего выражения. Предположим, пользователь дал один правильный ответ (сырое значение шкалы [A]=1).
Как видите, 1 балл по 15-балльной шкале преобразовался в 6.66666666666667 баллов по 100-балльной.

Чтобы убрать дробную часть вычисления, используйте функцию округления.
[A]=[A].ОКРУГЛ
Как видите, 6.66666666666667 преобразовалось в 7.



В интервалах функции ИНТШКАЛ может быть большее количество чисел, нежели 2. Предположим, у вас в тесте можно набрать максимум 30 баллов.

Запишем следующее выражение:
[A]=[A].ИНТШКАЛ([0,10,20,30],[0,10,50,100])

Обратите внимание, что количество чисел (интервалов) в первой и второй скобках должно быть одинаковым.
У нас есть изначальные интервалы от 0 до 10, от 10 до 20 и от 20 до 30. То есть у вас будет 3 интервала.

Значения от 0 до 10 будут конвертироваться также в значение от 0 до 10. Значения от 10 до 20 будут конвертироваться в значения от 10 до 50.
А значение от 20 до 30 будут конвертироваться в значения от 50 до 100.

Как можно заметить, мы сделали неравномерной скорость изменения конечной шкалы. Если в первом интервале она растет с такой же скоростью как изначальная, то во втором интервале она растет быстрее в 4 раза, а в последнем она растет быстрее в 5 раз.
Что же будет, если изначальное значение шкалы не попадает ни в один из заданных интервалов? В таком случае оно будет приведено к ближайшему заданному значению.
Например,
[A]=[A].ИНТШКАЛ([0,10,20,30],[0,10,50,100])
Если изначальное значение A равно минус 20, то после выполнения функции A станет равным нулю (ноль ближайшее к -20 значение из левых скобок, затем ноль конвертируется также в ноль).
Если изначальное значение A равно 50, то после выполнения функции A станет равным 100 (30 ближайшее к 50 значение из левых скобок, затем 30 конвертируется в 100).

Также в функции ИНТШКАЛ вы можете сделать задавать обратные интервалы, например:
[A]=[A].ИНТШКАЛ([30,20,10,0],[100,50,10,0])
или
[A]=[A].ИНТШКАЛ([0,10,20,30],[100,50,10,0])

Первая группа интервалов (левые скобки) должна быть всегда либо строго возрастающей, либо строго убывающей. Вторая же группа (правые скобки) может чередовать интервалы возрастания и убывания.
Например:
[A]=[A].ИНТШКАЛ([0,10,20,30],[0,100,50,0])


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