Время прочтения: 3 мин.

В современном многообразии языков программирования, созданный в далеком 1969 году язык Паскаль уже не так популярен, как, 5-7 лет назад, тем не менее его применение  еще не утратило актуальности, ведь изначально язык Паскаль создавался, как простой, эффективный и удобный язык для структурного программирования и работы со структурами данных.

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

Для проверки соблюдения сотрудниками внутренних регламентов по прохождению обучающих курсов, возникла необходимость выявить факты фиктивного прохождения обучения (например — на итоговое тестирование по курсу провайдером услуг по обучению было заложено максимальное время – 3 часа, а некоторыми сотрудниками организации на выполнение заданий было потрачено от 7 до 15 мин.).

Программа запрашивает контрольное время (в формате ЧЧ:MM – в нашем случае это, например, 0 час. 20 мин), а потом выводит массив данных в виде списка фамилий сотрудников и времени выполнения задания. В выводимый список попадают только сотрудники, время выполнения задания которыми меньше контрольного времени.

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

// Объявление структурированного типа переменных в секции Type
Type  dd = record
name:  string [40]; time: integer; 
end;

//Создание массива данных на 1000 элементов. Объявление типа переменных в секции Var
Var
d: array [1..1000]  of  dd;
q: dd; c, cl, cc: char;
i, j, n, timek: integer;


begin // Составной оператор в программе начинается со слова begin 
Read (c, cl); // Считаны  часы контрольного времени 
timek: = 60 * ((ord (c) – ord (‘0’)) *10+ord (cl) – ord (‘0’));
Readln (cc, c, cl); // Считаны  минуты контрольного времени
timek: = timek+(ord (c) – ord (‘0’)) *10+ord (cl) – ord (‘0’);
Readln (n); // Считано количество сотрудников по общей выборке
j: = 1;
For i: = 1 to n do // Задан цикл с условием
begin
d [j].name: =  ‘  ‘ ;
repeat
Read (c);
d [j].name: =  d [j].name + c;
until   c=  ‘  ‘ ; // Считана фамилия
Read (c, cl); // Считаны  часы времени первого сотрудника
d [j].time: = 60 * ((ord (c) - ord (‘0’)) *10+ ord (cl) – ord (‘0’));
Readln (cc, c, cl); // Считаны  минуты времени первого сотрудника
d [j].time: = d [j].time + (ord (c) - ord (‘0’)) *10+ ord (cl) – ord (‘0’);
If  (d[j].time <= timek)  then  // Сравнение времени сотрудника с контрольным
j: = j+1; // Данные занесены в массив
end;
n:=j-1;
For i:=1  to n do
writeln (d [j].name); // Вывод на экран
Readln;
end. 

Результатом работы программы будет вывод на экран следующего массива записей:

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