Конспект урока "Создаем программу-тест на Delphi"
Юдин Андрей Борисович
учитель информатики МКОУ Плесской СОШ
Приволжского р-на, Ивановской обл
Презентация к уроку информатики в 11 классе
«Создаем программу-тест на Delphi»
Введение
Предлагаю вашему вниманию небольшую презентацию, которую я использую в 11
классе, перед созданием учащимися итогового проекта по информатике. Данная
презентация представляет собой иллюстративный материал к занятию по созданию
простейшей тестирующей программы. Создаваемая программа может содержать три типа
вопросов: вопрос с вводом ответа с клавиатуры, с одиночным выбором варианта ответа, с
множественным выбором варианта ответа. Вопросы могут содержать не только текст, но и
рисунки. В конце прохождения теста выставляется оценка. Создаваемая программа может
быть использована для компьютерного тестирования учащихся по различным школьным
дисциплинам. Однако здесь требуется некоторая доработка, в смысле защиты в программе
от попытки нерадивого ученика обмануть учителя.
Описание презентации
Слайд 1. Представлен интерфейс программы, которую мы будем создавать.
Слайд 2. Показано как разместить на форме панель с вкладками, элемент
PageControl. Ее мы будем использовать для формирования массива вопросов. По принципу
вкладка – вопрос. А так же две вкладки: одна титульный лист, с названием, инструкцией,
описанием проекта. Вторая, с подведением результатов теста и выставлением оценки.
Слайд 3. Показано как на элемент PageControl добавить новые вкладки.
Слайд 4. Показано как изменить названия вкладок.
Слайд 5. Показано, какие элементы расставляем на вкладке, содержащей вопрос с
вводом ответа с клавиатуры. Вообще оформление как здесь, так и далее может быть
совершенно другим. Это мое сугубо личное мнение как должен выглядеть интерфейс
программы. После рассмотрения вопроса, какие элементы мы расставляем на вкладке,
надписи на этих элементах изменяются на те, которые видит пользователь.
Слайд 6. Рассмотрена процедура (событие) которая происходит при щелчке
пользователя по кнопке «Принять ответ»
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button1Click(Sender: TObject);
begin
if (edit1.Text='4')then
begin
label2.Caption:='Правильно';
b:=b+1;
end
else
label2.Caption:='Неправильно';
Button1.Visible:=False;
end;
Если в окно ввода подразумевается вводить слово, то наиболее возможные варианты,
которые может ввести пользователь можно попробовать перечислить через связку ИЛИ.
Если правильный ответ слово КОТ (Например, животное на картинке), то вариант может
быть таким (строка 3):
if (edit1.Text='Кот') or (edit1.Text='кот') or
(edit1.Text='КОТ')then ...
Естественно если у пользователя включен Caps Lock а он не заметит этого и зажмет
для первой буквы Shift то у него напечатает кОТ. Но такие нелепые варианты (ученик видит
слово, которое печатает в окне ввода) можно не рассматривать, принимая все оставшиеся
варианты написания этого слова за ошибочные.
В 10 строке мы прячем кнопку. Если программа носит не контролирующий, а больше
обучающий характер, то можно считать попытки, которые затратит ученик на то что бы
правильно ответить на вопрос. Для этого добавляем на форму еще один label и заводим
переменную p или массив p[количество вопросов]. Вместо 10-ой строки пишем следующее:
p:=p+1;
label3.Caption:='Попыток - ' + IntToStr(p);
Количество попыток можно ограничить условием:
If (p=5) then begin
Button1.Visible:=False;
ShowMessage('Попытки кончились!');
End;
Слайд 7. Показано, какие элементы расставляем на вкладке, содержащей вопрос с
одиночным ответом.
Слайд 8. Рассмотрена процедура (событие) которая происходит при щелчке
пользователя по кнопке «Проверить»
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button2Click(Sender: TObject);
begin
if (RadioButton2.Checked=true) then
begin
label4.Caption:='Правильно';
b:=b+1;
end
else
label4.Caption:='Неправильно';
Button2.Visible:=False;
end;
В третьей строке мы проверяем только вторую радиокнопку. Проверять остальные
нет необходимости, так как система радиокнопок позволяет выбрать только одну. Давать
повторно отвечать на этот вопрос имеет смысл, только при количествах ответов больших
10. Иначе получится угадывание, а не выбор правильного варианта ответа.
Слайд 9. Показано, какие элементы расставляем на вкладке, содержащей вопрос с
множественным вариантом ответа.
Слайд 10. Рассмотрена процедура (событие) которая происходит при щелчке
пользователя по кнопке «Проверить»
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button3Click(Sender: TObject);
begin
if (CheckBox1.Checked=true)
and (CheckBox3.Checked=true)
and (CheckBox2.Checked=false)
and (CheckBox4.Checked=false)then
begin
label5.Caption:='Правильно';
b:=b+1;
end
else
label5.Caption:='Неправильно';
13
14
Button3.Visible:=False;
end;
В данной процедуре приходится проверять все кнопки (строки 3-6), так как могут
появиться «лишние» ответы. Что бы этого избежать проверяем все CheckBox-ы. Давать
повторно отвечать на такого вида вопросы тоже целесообразно при большом количестве
вариантов ответа.
Иногда требуется поставить квадратик справа от текста. Расположение этого
заголовка зависит от свойства Alignment:
taRightJustify - заголовок будет справа от квадратика,
taLeftJustify - заголовок будет слева от квадратика.
Это свойство работает и для радиокнопки RadioButton.
Слайд 11. Показано, какие элементы расставляем на вкладке, содержащей диалог о
выставлении оценки.
Слайд 12. Рассмотрена процедура (событие) которая происходит при щелчке
пользователя по кнопке «Получить оценку»
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button4Click(Sender: TObject);
begin
label9.Caption:='Набрано баллов - '+inttostr(b);
if (b=3) then
label10.Caption:=' Оценка 5 (отлично)';
if (b=2) then
label10.Caption:=' Оценка 4 (хорошо)';
if (b=1) then
label10.Caption:=' Оценка 3(удовлетворительно)';
if (b=0) then
label10.Caption:=' Оценка 2 (плохо)';
b:=0;
end;
Понятно, что здесь рассмотрен примитивный вариант с тремя вопросами. Для
реальной программы количество правильных ответов можно переводить в проценты. Я так
обычно не делаю, сравнивая количество набранных баллов без перевода в проценты.
Например:
if (b=15) or (b=14) then label10.Caption:='Оценка 5 (отлично)';
if (b>=10) and (b<=13)then label10.Caption:='Оценка 4 (хорошо)';
И так далее.
Слайд 13. Рассмотрена процедура (событие) которая происходит при щелчке
пользователя по кнопке «Начать заново»
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button5Click(Sender: TObject);
begin
PageControl1.ActivePageIndex := 0;
edit1.Text:='';
CheckBox1.Checked:=false;
CheckBox2.Checked:=false;
CheckBox3.Checked:=false;
CheckBox4.Checked:=false;
Button1.Visible:=True;
Button2.Visible:=True;
Button3.Visible:=True;
label5.Caption:='';
label7.Caption:='';
label8.Caption:='';
15
16
17
label9.Caption:='Набрано баллов - ';
label10.Caption:='Оценка ';
end;
В реальной программе эта процедура будет намного больше. Для того чтобы начать
тест заново я должен очистить все окна ввода - строка 4, выключить все CheckBox1-ы и
радиокнопки – строки 5-8 (в данном примере из-за экономии места радиокнопки не
выключаются), вернуть кнопки «Проверить» на место- строки 9-11, и убрать предыдущую
оценку – строки 15,16.
Иногда в этом месте целесообразно добавить пароль, что бы ученик не мог
многократно повторять тест в надежде получить хорошую оценку.
pas := InputBox('Ввод пароля ', 'Введи пароль ', '');
if (pas='123') then
begin
PageControl1.ActivePageIndex := 0;
edit1.Text:='';
……………..
end
else ShowMessage(' Пароль не верный ');
В принципе такой же пароль можно поставить и на кнопку «Завершить работу» что
бы выйти из программы мог только учитель.
Ну можно еще убрать кнопку закрыть с формы. Самый простой способ у свойства
формы BorderIcons значение biSystemMenu – ставим false. Правда пропадут и две другие
кнопки, но они и не особенно нужны.
Останется правда запуск второй копии, диспетчер задач… Но это уже совсем другая
история. Как правило, такой защиты и «зоркого глаза» учителя вполне достаточно, что бы
пресечь все махинации с программой.
Слайд 14. Рассмотрено оформление «титульного листа»
Слайд 15. Добавляем на «титульный лист» две кнопки для вызова новых форм,
«Инструкция» и «О программе»
Слайд 16. Рассмотрено как добавить новую форму в проект.
Слайд 17. Показано как переключиться между формой и редактором.
Слайд 18. Показано, в каком месте программы нужно подключить файлы новых
форм в проект.
Слайд 19. Показаны процедуры вызова новых форм.
Список литературы.
1. Delphi 2007. Алгоритмы и программы: О. В. Чеснокова — Санкт-Петербург, НТ
Пресс, 2008 г.
2. Основы программирования в интегрированной среде DELPHI: А. Желонкин —
Москва, Бином. Лаборатория знаний, 2004 г.
3. Программирование в Turbo Pascal. Переход к Delphi: Ю. А. Шпак — Москва, МК-
Пресс, 2006 г.
4. Занимательное программирование: М. Мозговой – СПб, Питер, 2005 г.
5. Delphi. Программирование на языке высокого уровня: Фаронов В.В. Учебник для
вузов. – СПб.: Питер, 2003. – 640 с.: ил.
Интернет ресурсы:
1. Королевство Delphi - виртуальный клуб программистов
http://www.delphikingdom.com
2. Мастера Delphi http://www.delphimaster.ru/
3. Сайт о Lazarus. Алгоритмы, статьи, библиотеки и много всего интересного
http://lazarus.su/