КОМПЬЮТЕРИЗАЦИЯ ПСИХОЛОГИЧЕСКОГО ТЕСТА

Освоим

  • ? Использование объектов: "Надпись/Текст", "Кнопка", "Список".
  • ? Программирование событий: "Выбор изменён" (Selection Changed), "Вход на страницу" (Page Enter), "Запуск проекта", "Выход проекта".
  • ? Настройку свойств проекта: стиль окна.
  • ? Работу с составными переменными.
  • ? Работу с Отладчиком.
  • ? Использование "вложенных файлов".
  • ? Использование Подпрограмм.
  • ? Глобальные переменные: [TempDir], [Embedded].

Скачать проект: http://orgpsiholog.ru/downloads/neobook/practicum/vygoranie.zip

"Компьютеризация психологического теста" - это проект-пример того, как можно избавить психолога (или его помощника) от нуднейшей и неблагодарной части его работы - ручной обработки бланков. Кроме того, психолог избавляется и от ошибок, которые можно совершить при подсчете ответов, особенно по специально запутанным ключам к психодиагностическим методикам. Компьютеризация даёт и уникальные возможности для автоматизации обработки результатов, как, например, в компьютеризированной версии методики диагностики корпоративной культуры (см. Лёвкин В.Е., 2016; 2017; Черенкова Д.А., Лёвкин В.Е., 2013).

Итак, приступим! Для примера компьютеризируем довольно известную методику оценки профессионального выгорания: Опросник "Профессиональное выгорание" (MBI, адаптирован Н.Е. Водопьяновой, Е.С. Старченковой).

1. Находим методику с ключом.

Берите методику из надёжного источника - из книги её автора, или сверяйте её текст с книгой автора, чтобы не скопировать чужие ошибки в свой проект). У данной методики несколько вариантов. Я здесь выбрал вариант методики для руководителей среднего звена[1].

2. Разбираемся в логике применения методики.

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

2.1. Предъявить инструкцию:

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

  • 2.2. Предъявить каждый вопрос (всего 22 вопроса/утверждения). Мы можем предъявить все вопросы сразу или по одному, или группами, как захотим. Преимущество компьютерных технологий в том, что мы можем создать сразу два разных списка вопросов, соответствующих мужскому и женскому роду, а предъявлять будем один из них. Так пользователю будет понятнее и комфортнее, чем если предъявить ему список "бесполых" вопросов:
  • 1) Я чувствую себя эмоционально опустошенным(-ной), без ярких эмоций и чувств.
  • 2) К концу рабочего дня я чувствую себя, как "выжатый лимон".
  • 3) По утрам в рабочие дни у меня плохое настроение, я считаю дни и часы до выходных.
  • 4) Результаты моей работы не стоят тех усилий, которые я затрачиваю.
  • 5) Меня раздражают мои подчиненные и коллеги, которые медлительны или некомпетентны.
  • 6) Я чувствую себя энергичным и эмоционально воодушевленным человеком.
  • 7) При разговоре с агрессивными или конфликтными работниками я умею договориться и избежать конфликтов.
  • 8) Я чувствую упадок сил и апатию по отношению к моей работе.
  • 9) Я умею внести "искру" в работу (заинтересовать) моих подчиненных (деловых партнеров).
  • 10) В последнее время я стал(а) более черствым (бесчувственным) во взаимоотношениях с коллегами (подчиненными).
  • 11) Люди, с которыми мне приходится работать, не интересны для меня. Они скорее утомляют, чем радуют меня.
  • 12) Я работаю с удовольствием, и у меня много планов на будущее, связанных с моим профессиональным развитием. Я верю в их осуществление.
  • 13) У меня много жизненных разочарований.
  • 14) Я чувствую равнодушие и потерю интереса ко многому, что радовало меня раньше.
  • 15) Мне безразлично, что происходит с моими подчиненными. Я предпочитаю формальное общение с ними, без лишних эмоций и стремлюсь свести общение с ними до минимума.
  • 16) Мне хочется уединиться и отдохнуть от всего и всех.
  • 17) Я легко могу создать атмосферу доброжелательности и сотрудничества в коллективе.
  • 18) Я легко общаюсь на работе со всеми (подчиненными, коллегами, техническим персоналом) независимо от их амбиций, эмоционального состояния и манеры общения.
  • 19) Я доволен(на) моими жизненными и профессиональными успехами (достижениями).
  • 20) Я чувствую себя на пределе возможностей.
  • 21) Я смогу еще много сделать в своей жизни.
  • 22) Я проявляю к подчиненным больше внимания и заботы, чем получаю от них признательности и благодарности.

2.3. Дать возможность выбрать один из семи вариантов ответа (при этом нужно в программе запомнить число баллов за выбранный пользователем ответ, по каждому вопросу):

Ответ

Баллов

никогда

0

очень редко

1

редко

2

иногда

3

часто

4

очень часто

5

ежедневно

6

3. Разбираемся в том, как обрабатывать ответы пользователей.

Смотрим в раздел "Обработка результатов" и обнаруживаем там три субшкалы. Для каждой субшкалы в методике указано -баллы по каким именно вопросам (номерам утверждений) следует суммировать в "итого" по данной субшкале:

Общий ключ

Субшкала

Номер утверждения

Максимальная сумма баллов

Эмоциональное истощение

1, 2, 3, 6*, 8, 13, 14, 16, 20

54

Деперсонализация

5, 10, 11, 15, 22

30

Профессиональная успешность (редукция персональных достижений)

4, 7, 9,12,17,18,19, 21

48

Примечание: * отмечен "обратный" вопрос, который считается в обратном порядке.

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

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

Уровни показателей выгорания

Субшкала

Группы

Низкий уровень

Средний уровень

Высокий уровень

Очень высокий уровень

Шкальные оценки

1 балл

2 балла

3 балла

5 баллов

Эмоциональное

Мужчины

5-15

16-24

25-34

Больше 34

истощение

Женщины

6-16

17-25

26-34

Больше 34

Деперсонализация/

Мужчины

2-4

5-12

13-15

Больше 15

цинизм

Женщины

1-4

5-10

11-13

Больше 14

Профессиональная

Мужчины

37-48

34-28

27-23

22 и меньше

успешность

Женщины

37-48

35-28

27-22

21 и меньше

Тестовые нормы для интегрального показателя выгорания

Низкая степень

Средняя степень

Высокая степень

Крайне высокая степень

3-4 балла

5-6 баллов

7-9 баллов

10 баллов и больше

4. Создаём программную форму методики.

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

Поэтому создайте новый проект, с размерами страницы 640x380.

Сразу, в свойствах проекта (F6) в разделе "Окно" уберите галочку "Раздвижное", поскольку это свойство окна нам не потребуется:

Затем выберите фоновое изображение в свойствах страницы (F5). После чего создайте текстовые объекты "Надпись/Текст" с заголовком и инструкцией, а также ? "Кнопки" для перехода на следующую страницу-для мужчин и для женщин. В итоге я получил следующую первую страницу программы:

ИНСТРУКЦИЯ

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

никогда очень редко редко иногда часто

очень часто ежедневно

Выберите свой вариант:

Для мужчин

Для женщин

На кнопки поместите код сохранения выбора варианта (Мужской или Женский) в переменную1 [Пол] и команду перехода на следующую страницу. Вот так этот код выглядит на кнопке "Для мужчин":

На кнопке "Для женщин" сделайте всё аналогично.

На следующей странице выберите тот же самый фоновый рисунок, затем с помощью объектов "Надпись/Текст" создайте

  • а) заголовок с указанием наименования и назначения методики,
  • б) надпись для поля с вопросами и в) само поле с вопросами (последнее - с рамкой). А поле для выбора варианта ответа сделайте из объекта U "Список". На скриншоте ниже я пометил разные части интерфейса этой страницы проекта иконками, обозначающими соответствующие объекты NeoBook:
    • 1 NeoBook прекрасно понимает имена переменных на кириллице! И в пособии, для большей понятности, я часто использую кириллицу в именах переменных. Однако, опытные программисты рекомендуют всё же именовать переменные латиницей. Сам я стараюсь придерживаться этого правила в своих проектах, хотя ещё ни разу не сталкивался с ошибкой в работе программы из-за того, что какая-то переменная названа по-русски.

Создайте объекты, ориентируясь на скриншоты выше, ис

пользуя на панели инструментов соответствующие им иконки.

С текстовыми объектами, думаю, у Вас трудностей уже не возникнет- Вы сможете их создать и настроить им нужный вид. Требует пояснения лишь указание на переменные в текстовых объектах. Напомню, что переменные в NeoBook всегда указываются в квадратных скобках.

В режиме проектирования мы видим имя переменной, но в режиме тестовой или в режиме финальной компиляции вместо имени переменной мы будем видеть её значение (её содержимое).

Так, вместо имени переменной [i] будет цифра номера вопроса, а вместо переменной с именем [ТекстВопроса] будет сам текст вопроса, который мы будем читать из файла с вопросами.

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

Вы можете назвать файлы как угодно, хоть l.txt и 2.txt. Но тогда нужно будет и в соответствующих местах исправить код. Если же Вы пока не собираетесь этого делать, то назовите файлы так, как я предложил.

Чтобы создать файл с вопросами откройте простой "Блокнот" и впишите (или скопируйте) туда вопросы методики, каждый вопрос с новой строки (и каждый вопрос только в одну строку). Номер вопроса указывать не нужно, поскольку номер строки будет играть роль номера вопроса. Сохраните файл в двух вариантах написания вопросов - в мужском и женском роде

(с именами: ВопросыМужскойЛх1 и ВопросыЖенскийЛх1) в папку с проектом. Теперь, с помощью команд NeoBook мы сможем выбрать нужный файл и читать из него строки. Пример такого файла:

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

А чтобы NeoBook смогла их прочитать во время работы нужно эти файлы перед использованием "извлечь" из тела программы на жесткий диск компьютера (или флеш-накопитель). Например, в папку Windows для временных файлов, как раз предназначенную для подобных целей. Путь к этой папке всегда хранится в глобальной переменной [TempDir], что очень удобно - нам не надо знать весь путь, достаточно просто указать имя этой переменной в начале имени файла. Извлекаются файлы командой ExtractFile. Эту команду поместите на событие "Запуск" в Свойствах проекта (F6):

Извлечем оба файла сразу. Хотя, правильнее, пожалуй, было бы извлечь только один файл, соответствующий полу респондента (например, в момент выбора пола). Но это совершенно не принципиально (никому не помешает файл размером 2КБ во временной папке), поэтому оставим как есть. Тем более,

Кстати, команда ExtractFile умеет и автоматически переименовывать файлы, в этом случае достаточно во втором параметре данной команды ввести новое имя файла.

______________Г

Извлекать файлы можно и в ту папку, в которой находится Ваша программа (в т.ч., на Вашей флешке), для этого вместо [TempDir] используйте глобальную переменную [PubDir].

что мы потом за собой приберём.

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

Теперь, настройте свойства объекта "Список" (ListBox) с по

Заметим, на будущее, что можно вместо объекта "Список" использовать и "Радиокнопки" (вполне привычный для пользователей способ представления вариантов выбора).

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

Не закрывая это окно, перейдём в раздел "Команды", на вкладку события "Выбор изменён" (Selection Changed) и пропишите следующий код:

Разберём этот код подробно. Первая команда SetVar:

SetVar "[V[i]]" "[ВыбранныйОтвет]-1"

Эту строку можно прочитать так:

ПрисвоитьПеременной "[с этим именем]" "это значение"

При этом, если переменной с указанным именем ещё не существует, то по команде SetVar она будет создана.

Напомню здесь, что имя переменной - это адрес, по которому находится ячейка памяти компьютера, хранящая какое-либо значение. Ячейка памяти, таким образом, может мыслиться как своего рода "коробочка с именем" в которой может быть пусто (в этом смысле говорят, что переменная хранит "пустоту", а пустота -это тоже значение переменной), а может хранить и другое значение (любую цифру, букву, текст или копию содержимого другой переменной и т.д.). Составная переменная - это адрес, содержащий в качестве части имени другой адрес (например: [V[i]]). При этом значение переменной имя которой размещено внутри имени

"внешней" (по отношению к ней) переменной будет являться частью имени этой "внешней" переменной. Так, в нашем проекте в переменной [i] будет хранить номер вопроса, поэтому "составная переменная" [V[i]] в случае ответа на первый вопрос должна интерпретироваться нами как [VI] (в этот момент [i] будет хранить значение "1"), потом, в случае ответа на второй вопрос - как [V2] (в этот момент [i] будет хранить значение "2") и так далее. А в реально работающем проекте (например, при тестовой компиляции) по адресу [V[i]] после выбора пользователем варианта ответа будет храниться цифра, означающая число баллов (от 0 до 6), начисленных за выбранный вариант ответа по данному вопросу.

Всего у нас 22 вопроса, поэтому благодаря вот этой команде

SetVar "[V[i]]" и[ВыбранныйОтвет]-Г

и благодаря составной переменной [V[i]] к завершению тестирования у нас будет двадцать две однотипно названных переменных ([VI], [V2], [V2] ... [V22])[2]. Все они будут храниться в оперативной памяти компьютера, а увидеть их значения мы сможем в процессе тестовой компиляции в Отладчике, на вкладке "Переменные". Только в Отладчике имена переменных будут обозначены без квадратных скобок.

Запустив проект в режиме тестовой компиляции, я ответил на 7 вопросов из 22-х. В результате код, указанный выше, на событии "Выбор изменён" (Selection Changed), отработал семь раз. На скриншоте Отладчика (см. ниже) мы видим, что в переменной [i] (хранящей номер вопроса) стоит значение 8, а также видим, что именно хранят переменные, предназначенные мною для хранения баллов по каждому вопросу (я ответил последовательно выбирая варианты ответов, по порядку в списке: Никогда, Очень редко,

Редко... и т.д.). В окне Отладчика видим также и содержимое переменной [ТекстВопроса] (т.е. строку с собственно текстом вопроса):

Давайте разберемся, почему переменная [VI] получила значение "О", хотя я выбрал по этому вопросу первый пункт из объекта "Список". Дело в том, что команда SetVar позволяет делать простые математические операции прямо внутри своего параметра. Таким образом, первой командой (на вкладке Selection Changed) мы присваиваем переменной [V[i]] значение, являющееся результатом вычитания единицы из номера пункта (хранящегося в переменной с именем [ВыбранныйОтвет]):

SetVar "[V[i]]" "[ВыбранныйОтвет]-!"

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

Если бы мы в свойствах объекта "Список" выбрали в качестве типа "Содержимого переменной" не "номер пункта", а "текст пункта", то переменная [ВыбранныйОтвет] хранила бы ответ пользователя в виде соответствующего текста пункта. Например, если бы мы выбрали первый пункт, то переменная [ВыбранныйОтвет] получила бы значение "Никогда" и нам пришлось бы как-то переводить это потом в баллы. Гораздо проще сделать в данном случае так, как мы и сделали - просто отняли единицу от номера пункта и получили нужное число баллов за выбранный пользователем вариант ответа.

Следующей строкой кода:

SetVar"[i]" "[i]+1"

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

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

.если номер вопроса меньше 23

IF”[!]" "<” ”23"

.тогда, читаем из файла Вопросы[Пол].1х1 строку с номером р] и помещаем копию строки в переменную [ТекстВопроса]

FileRead "[ТетрО1г]Вопросы[Пол].(хГ "pf "[ТекстВопроса]"

.в противном случае

Else

.переходим на следующую страницу

GotoNextPage

.конец логического условия IF

EndIF

Расшифруем имя файла "[ТетрО!г]Вопросы[Пол]Лх1".

В реальном проекте вместо глобальной переменной [TempDir] будет адрес к папке с временными файлами Windows

(в этой папке операционная система и различные программы хранят файлы, которые удаляются при закрытии программ или при перезагрузке операционной системы. Переменная [Пол] будет иметь значение, выбранное пользователем, поэтому в работающем проекте (если пользователем выбран мужской пол) имя файла "[ТетрО1г]Вопросы[Пол]Лх1" будет выглядеть так:

C:UsersVAppDataLocalTempBonpocbiMy>KCKoti.txt

На Вашем компьютере будет (скорее всего) другое имя пользователя, поэтому путь к файлу будет немного отличаться. Но нас это не волнует, поскольку NeoBook сама найдет путь к папке временных файлов, нам же для этого достаточно указать глобальную переменную [TempDir].

Завершаем код на вкладке "Выбор изменён" (Selection Changed) командой очистки переменной [ВыбранныйОтвет], хранящей выбранный пользователем вариант ответа. Если мы этого не сделаем, а пользователь выберет ответ идентичный предыдущему, то не случится событие "Выбор изменён" (ведь фактически выбор останется прежним) и, соответственно, не отработает код, прописанный нами на вкладке "Выбор изменён". Поэтому очистим переменную, присвоив ей "пустоту":

SetVar "[ВыбранныйОтвет]......

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

Сначала переменной [i] присвоим значение 1, а следующей строкой прочитаем первый вопрос из файла с вопросами и поместим копию строки с вопросом в переменную [ТекстВопроса]:

Благодаря этому коду первый вопрос будет отображен и номер вопроса будет показан. Мы обеспечили предъявление каждого вопроса и сбор ответов по ним (все они хранятся в оперативной памяти компьютера в переменных ([VI], [V2], [V2]... [V22]).

Теперь нужно обработать полученные результаты и показать их на новой странице, поэтому сразу создайте эту новую страницу проекта, выберите тот же фоновый рисунок и с помощью текстовых объектов впишите имена переменных в которых будем отображать для пользователя результаты интерпретации:

Страница есть. Зайдите в её свойства (F5), чтобы написать код обработки результатов.

Для начала нужно получить суммы баллов в соответствии с таблицей "Общий ключ" (приведена выше). Например, по субшкале "Эмоциональное истощение" нам нужно просуммировать баллы по вопросам 1, 2, 3, 6, 8,13,14,16, 20. При этом шестой вопрос, как мы помним из примечания к таблице, считается в обратном порядке. Поэтому нам придется, "перевернуть" баллы для шестого вопроса. Если переменная [V6] (с результатами шестого вопроса) хранит максимальный балл, то мы сохраним в неё же минимальный балл и т.п. по следующей схеме:

Имеющееся значение

Искомый результат

0

6

1

5

2

4

3

3

4

2

5

1

б

0

Для того, чтобы так "перевернуть" значение баллов по шестому вопросу сохраним в переменную [V6] результат вычитания полученных за выбранный ответ баллов от максимума, т.е. от шести. Помним, что простые математические операции можно произвести прямо в параметре команды SetVar ("Присвоить переменной значение"), что очень удобно:

SetVar "[V6]" "6-[V6]"

Если, к примеру, [V6] хранила значение 5, то 6-5=1, следовательно, в переменную [V6] запишется единица. Можно было бы "перевернуть" значение баллов по шестому вопросу и с помощью логических условий, но это потребовало бы намного больше строк кода, а результат был бы тот же:

If "[V6]" "=" "О”

SetVar "[V6]"

Else

If ”[V6]" "=" "1”

SetVar "[V6]" "5"

Else

If ”[V6]" ”=" "2”

SetVar "[V6]" "4"

Else

If ”[V6]" "=" ”4"

SetVar "[V6]" "2"

Else

If "[V6]" "=" "5"

SetVar ”[V6]" "1"

Else

If "[V6]” "=" ”6"

SetVar "[V6]" "0"

EndIF

EndIF

EndIF

EndIF

EndIF

EndIF

Теперь просуммируем баллы по субшкалам, согласно данным из таблицы "Общий ключ". Для операции суммирования воспользуйтесь командой Math ("Выполнить математическое вычисление и сохранить результат в переменной"). Переменные для полученных сумм назовём по имени субшкал, чтобы не путаться. Например, переменная [Истощение] будет хранить сумму набранных пользователем баллов по субшкале "Эмоциональное истощение":

Math "[V1 ]+[V2]+[V3]+[V6]+[V8]+[V13]+[V14]+{V16]+[V20] [Истощение]'[3]

Добавьте ещё две команды Math для двух других субшкал.

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

Чтобы понять, что означает то или иное число набранных баллов (о каком уровне выгорания говорит) обращаемся к приведенным выше таблицам "Уровни показателей выгорания" и "Тестовые нормы для интегрального показателя выгорания".

Показатели для мужчин и женщин различаются, поэтому код обработки результатов для них придется сделать отдельно. Чтобы нам проще было обращаться к коду для мужчин и отдельно к коду для женщин сделаем для них отдельные "подпрограммы" в секции для подпрограмм (в свойствах проекта), а здесь (в свойствах страницы), с помощью команды GoSub, сделаем ссылки на эти "куски кода" (т.е. на подпрограммы1).

Чтобы учесть пол и направить NeoBook выполнять нужную подпрограмму мы поставим логическое условие с помощью оператора IF.

Если переменная [Пол] хранит значение "Мужской", то запускаем подпрограмму с именем "man", в ином случае запускаем подпрограмму для женщин - "female".

Получился следующий код на событии "Вход на страницу" с результатами (вкладка Page Enter):

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

Начинается подпрограмма всегда с имени, первым символом которого обязательно является двоеточие. А заканчивается подпрограмма всегда командой Return.

Вот так выглядит код подпрограммы для мужчин:

Проанализируем этот код на примере первой его части. Все значения мы берём из таблицы "Уровни показателей выгорания": .Если сумма баллов по субшкале "Истощение" больше 34 If "[Истощение]" ">""34"

.тогда присваиваем переменной [ИстощениеРезультат] значение "Очень высокий уровень!" SetVar "[ИстощениеРезультат]” "Очень высокий уровень!"

.и переменной [ИстощениеОценка] присваиваем значение "5"

SetVar "[ИстощениеОценка]" "5"

.в противном случае (т.е. если сумма баллов по субшкале "Истощение" не больше 34)

Else

.Если сумма баллов по субшкале "Истощение" больше или равна 25 (т.е. от 25 до 34)

If "[Истощение]" ">=""25"

.тогда присваиваем переменной [ИстощениеРезультат] значение "Высокий уровень!"

SetVar "[ИстощениеРезультат]" "Высокий уровень!"

.и переменной [ИстощениеОценка] присваиваем значение "3"

SetVar "[ИстощениеОценка]" "3"

.в противном случае

Else

.Если сумма баллов по субшкале "Истощение" больше или равна "16" (т.е. от 16 до 24)

If "[Истощение]" ">=" "16"

.присваиваем переменной [ИстощениеРезультат] значение "Средний уровень!" SetVar "[ИстощениеРезультат]" "Средний уровень!"

.и переменной [ИстощениеОценка] присваиваем значение "2"

SetVar "[ИстощениеОценка]" "2"

.в противном случае (т.е. если сумма баллов по субшкале "Истощение" меньше 16) Else

.присваиваем переменной [ИстощениеРезультат] значение "Низкий уровень!"

SetVar "[ИстощениеРезультат]” "Низкий уровень!"

.и переменной [ИстощениеОценка] присваиваем значение "1"

SetVar "[ИстощениеОценка]" "1"

EndIF

EndIF

EndIF

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

В конце подпрограммы "man", непосредственно перед закрывающей подпрограмму команды Return есть строка:

GoSub "Rezult"

Это ссылка на ещё одну подпрограмму, с именем Rezult.

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

Логическая схема этого кода полностью идентична тому, что мы только что рассмотрели (только значения берём из таблицы "Тестовые нормы для интегрального показателя выгорания"), поэтому комментировать этот код уже нет смысла.

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

Далее я скопировал подпрограмму "man" и вставил её ниже подпрограммы Rezult, после чего сразу заменил имя скопированной подпрограммы на "female" и скорректировал те цифровые значения, которые отличаются у женщин от мужчин (по таблице "Уровни показателей выгорания"). Таким образом подпрограмма "female" отличается от подпрограммы "man" только цифрами "порогов" уровней выгорания, ну и именем, конечно. Поэтому не станем её здесь приводить.

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

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

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

В общем, всегда есть в каком направлении развивать полезную программу!

  • [1] Водопьянова Н.Е. Психодиагностика стресса. - СПб.: Питер, 2009. - 336 с. (С.144-155).
  • [2] Их ещё называют массивами.
  • [3] Подпрограмма - это последовательность команд (скрипт), вынесенная в специальную секцию (раздел) для подпрограмм. Подпрограмма может быть маленькой или состоять из большого числа строк - не важно. Удобство её в том, что можно обратиться к ней (вызвать её по имени) из любого события, доступного в NeoBook, из любой строчки другого скрипта (в т.ч., из другой подпрограммы). Завершается любая подпрограмма командой Return. Соответственно, всё, что находится между именем подпрограммы и командой Return и есть текст подпрограммы - её код.
 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >