OCA Учебник online                   

"Узнать можно лишь тогда, когда учишься".
Вьетнамская пословица

Повторный (двойной) ввод
(OCA MakeFormWin)
Идея двойного ввода состоит во вводе одних и тех же данных двумя разными людьми. При этом ведется автоматическое сравнение данных введенных первым и вторым человеком.

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



На нижней панели программы отображается то, что ведется двойной ввод.



Следует отметить, что поиск анкеты для сравнения из введенного массива, осуществляется по значению ключевого признака (признака отмеченного директивой @key). Обычно этим признаком является номер анкеты, так как именно он является ключом, позволяющим выделить анкету среди других, найти ее аналог среди бумажных вариантов анкет. При использовании двойного ввода необходимо ключевой признак поставить первым в списке признаков (так как только после его ввода будет найден аналог введенной анкеты и начнется сравнение). Теперь при вводе каждое значение, введенное оператором, будет сравниваться с аналогичным ему в массиве для сравнения. В случае несовпадения, будет выведено соответствующее сообщение.



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

При двойном вводе автоматически создается файл, в той же папке что и массив, имеющий такое же, как и массив, имя, но с расширением err. В этом файле сохраняется ключевой номер анкеты и после него через точку с запятой сохраняются результаты для ввода каждого признака в виде следующих кодов:
0 - и первый, и второй операторы ввели одно и то же значение признака.
1 - дважды оператором было введено одно и тоже значение отличное от значения в массиве для сравнения (предположительно, ошибка оператора вводившего первый массив, с которым ведется сравнение).
2 - оператор первый раз ввел значение отличное от соответствующего ему значения в массиве для сравнения, после чего ввел значения совпадающее со значением в массиве для сравнения (предположительно, ошибка оператора вводившего конечный массив).

Открыть такой файл можно, например, в Microsoft Excel, указав при открытии файла тип "все файлы".


Указав файл, Вы попадете в специальное меню, где следуют указать его структуру. Наш файл является файлом с разделителями:



Указав тип файла, нажимаем кнопку "Далее". На следующей форме указываем точку с запятой в качестве разделителя. После этого нажимаем кнопку "Готово".



После этого таблица будет загружена.
Следует отметить, что если количество признаков более 254, то Microsoft Excel не отобразит данные относительно признаков с номером более 254, так как имеет ограничение на количество колонок в таблице.

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

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