Из опыта создания универсальных тестовых редакторов — страница 4

  • Просмотров 3780
  • Скачиваний 181
  • Размер файла 108
    Кб

операторов> {выполнение функции} End; 's','ы':Begin l4:<набор операторов> {выполнение функции} End; End; <набор опреаторов> Writeln('Новый файл(New),)Открыть файл(Open),Редактировать(Redact)'); {запрос о выборе перед выходом} Writeln('Просмотр результатов(Search),Выход(Any key)'); b:=readkey; {выбор варианта} <набор операторов> case b of {оператор варианта} 'n','т':GoTo l1; {ссылка на метку} 'o','щ':GoTo l2; 'r','к':GoTo l3; 's','ы':GoTo l4; End; Набор операторов безусловного перехода для

возвращения к той или иной функции. <набор операторов> End. На экран выводится список возможных функций программы. Для выбора определенной функции необходимо нажать соответствующую клавишу (указана в скобках заглавной буквой). Затем оператор варианта запускает нужную функцию. Как видно, учтен случай непереключенного алфавита (буквы вводятся как латинские, так и русские). Перед выходом вновь выводится данный запрос (так как

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

самое главное- это усовершенствование интерфейса, введение оконной диалоговой системы. Рассмотрим перечисленные функции. Функция подсчета результата записана так: z:=p*100 div z; {расчет количества правильных ответов} Writeln('количество правильных ответов: ',p); Write('оценка '); {выставление оценки} If z>=90 Then Begin Writeln('5') Writeln(b1,’5’); End; else If z>=70 Then Begin Writeln('4') Writeln(b1,’4’); End; else If z>=40 Then Begin Writeln('3') Writeln(b1,’3’); End; else Begin Writeln('2') Writeln(b1,’2’); End; Readln;

Write('Фамилия: '); {вписывание фамилии} Readln(a); d:=length(a); {выставление пробелов} Write(b1,a); {запись в файл} For i:=1 to 14-d do Write(b1,' '); Write('Имя: '); {вписывание имени, процедура повторяется} Readln(a); Write(b1,a); d:=length(a); For i:=1 to 11-d do Write(b1,' '); Write('Отчесчтво: '); {вписывание отчества, процедура повторяется } Readln(a); Write(b1,a); d:=length(a); For i:=1 to 17-d do Write(b1,' '); Write(b1,f); d:=length(f); For i:=1 to 8 do Write(b1,' '); GetDate(g1,g2,g3,g4); {проставление даты} Writeln(b1,g3,'.',g2,'.',g1); close(b1); Window(15,10,50,19); TextBackGround(black); clrscr;

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