Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
67
Добавлен:
13.05.2015
Размер:
9.35 Mб
Скачать

Var // раздел переменных модуля Unit1

H : array [1..4,1..2] of integer; // объявление массива значений операндов

procedure TForm1.FormActivate(Sender: TObject); // активизация формы

begin //очистка меток и полей ввода

Label1.Caption := ''; Label2.Caption := ''; Label3.Caption := '';

Label4.Caption := ''; Label5.Caption := ''; Label6.Caption := '';

Label7.Caption := ''; Label8.Caption := ''; Label9.Caption := '';

Label10.Caption := ''; Label11.Caption := ''; Label12.Caption := '';

Label13.Caption := ''; Label14.Caption := '';

Edit1.Text := '0'; Edit2.Text := '0'; Edit3.Text := '0'; Edit4.Text := '0';

button2.Enabled:=False; //блокировка кнопки «Проверить»

Edit1.Enabled:=False; Editt2.Enabled:=False; Edit3.Enabled:=False; Edit4.Enabled:=False; Timer1.Interval:=0;

end;

procedure TForm1.Button1Click(Sender: TObject); // кнопка «Тест»

var R:integer; // объявление переменной «R»

begin Randomize; // включение счетчика случайных чисел

Timer1.Interval := 1000; // включение таймера с интервалом в одну секунду

H[1, 1] := Random(99) + 1; // первое слагаемое в интервале 1-100

H[1, 2] := Random(99) + 1; // второе слагаемое в интервале 1-100

H[2, 1] := Random(99) + 1; // уменьшаемое в интервале 1-100

H[2, 2] := Random(99) + 1; // вычитаемое в интервале 1-100

If H[2, 2] > H[2, 1] Then // вычитаемое строго больше уменьшаемого

Begin R := H[2, 1]; H[2, 1] := H[2, 2]; H[2, 2] := R; End; // обмен

H[3, 1] := Random(9) + 1; // первый множитель в интервале 1-10

H[3, 2] := Random(9) + 1; // второй множитель в интервале 1-10

H[4, 2] := Random(9) + 1; // делитель в интервале 1-10

H[4, 1] := round((Int(Random(9)) + 1) * H[4,2]); //делимое в интервале 1-100

Label1.Caption := IntToStr(H[1, 1]); // вывод первого слагаемого в Label1

Label2.Caption := IntToStr(H[2, 1]); // вывод уменьшаемого в Label2

Label3.Caption := IntToStr(H[3, 1]); // вывод первого множителя в Label3

Label4.Caption := IntToStr(H[4, 1]); // вывод делимого в метку Label4

Label5.Caption := IntToStr(H[1, 2]); // вывод второго слагаемого в Label5

Label6.Caption := IntToStr(H[2, 2]); // вывод вычитаемого в метку Label6

Label7.Caption := IntToStr(H[3, 2]); // вывод второго множителя в Label7

Label8.Caption := IntToStr(H[4, 2]); // вывод делителя в метку Label8

//очистка полей с ответами школьника и меток с правильными ответами

Edit1.Text := '0'; Edit2.Text:= '0'; Edit3.Text:= '0'; Edit4.Text:= '0';

Label9.Caption:= ''; Label10.Caption := '';

Label11.Caption :=''; Label12.Caption := '';

Label13.Caption := ''; // очистка метки с оценкой

Label14.Caption :='60'; // на ответ дается 60 секунд

button1.Enabled:=False; // блокировка кнопки «Тест»

button2.Enabled:=True; // разблокировка кнопки «Проверить»

Edit1.Enabled:=True; Edit2.Enabled:=True; Edit3.Enabled:=True; Edit4.Enabled:=True; Edit1.SetFocus; // установка фокуса на поле Edit1

end;

procedure TForm1.Button2Click(Sender: TObject); // кнопка «Проверить»

var b:byte; v,e:integer; // V‑значение ответа,E‑номер нецифрового символа

begin b := 5; // начальное значение балловой оценки

Val(Edit1.Text,v,e); // перевод ответа из строки в числовую переменную V

If (e<>0) or ((H[1, 1] + H[1, 2]) <> v) then // введенная сумма ошибочная

begin b := b - 1; // оценка уменьшается на один балл

Label9.Caption :=IntToStr(H[1, 1] + H[1, 2]); // вывод правильной суммы

end;

Val(Edit2.Text,v,e);

If (e<>0) or ((H[2, 1] - H[2, 2]) <> v) Then // введенная разность ошибочная

begin b := b - 1; Label10.Caption:=IntToStr(H[2,1]-H[2, 2]); end;

Val(Edit3.Text,v,e);

If (e<>0) or ((H[3, 1] * H[3, 2]) <> v) Then // произведение ошибочно

begin b := b - 1; Label11.Caption:=IntToStr(H[3,1]*H[3,2]); end;

Val(Edit4.Text,v,e);

If (e<>0) or ((H[4, 1] / H[4, 2]) <> v) Then // частное от деления ошибочно

begin b := b - 1; Label12.Caption:=IntToStr(round(H[4,1]/H[4,2])); end;

Label13.Caption := IntToStr(b); // вывод оценки в метку Label13

Timer1.Interval := 0; // отключение счетчика времени

button1.Enabled:=True; // разблокировка кнопки «Тест»

button2.Enabled:=False; // блокировка кнопки «Проверить»

Edit1.Enabled:=False; Edit2.Enabled:=False; Edit3.Enabled:=False; Edit4.Enabled:=False; // блокировка полей ввода ответов

end;

procedure TForm1.Button3Click(Sender: TObject); // кнопка «Выход»

begin form1.Close; end;

procedure TForm1.Timer1Timer(Sender: TObject); // таймер

Begin // уменьшение на одну секунду, оставшегося на ответ времени

Label14.Caption:=IntToStr(StrToInt(Label14.Caption)-1); //если время на //ответ закончилось, то вызов процедуры обработки кнопки «Проверить»

If Label14.Caption = '0' Then Button2Click(Button2); end; // конец процедуры