Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №2

.pdf
Скачиваний:
19
Добавлен:
27.05.2015
Размер:
229.46 Кб
Скачать

Лабораторная работа № 2.

Программирование ветвлений (компоненты Radio Button, RadioGroup, GroupBox, Shape, ComboBox)

Цель работы: Познакомится с компонентами визуального программирования Radio Button, RadioGroup, GroupBox, Shape, ComboBox и программированием ветвления.

Теоритическая часть

Условный оператор

Условные операторы – это такие операторы, с помощью которых можно изменять последовательность выполнения операторов программы.

Оператор If …then

Этот оператор имеет вид:

if условие then оператор;

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

Оператор if …then ... else

Этот оператор записывается следующим образом:

if условие then оператор 1

else

оператор 2;

1

Обратите внимание, что перед else точка с запятой (;) не ставится. В этом операторе, в зависимости от значения условия, будет выполняться либо оператор 1, либо оператор 2.

Оператор выбора case

Оператор case имеет следующий синтаксис:

case <выражение> of значение 1: оператор 1; значение 2: оператор 2;

………………………………………

значение n: оператор n; else

оператор; end;

В этой конструкции операторы могут быть составными, <выражение> должно быть порядкового типа, т.е. integer, char, boolean, перечислимого или интервального типа.

Тип <значение> должен совпадать с типом <выражение>, может быть одно или несколько, разделенных запятыми, а также может представлять собой некоторый диапазон значений. Вся конструкция должна завершаться ключевым словом end.

Ветвь else вместе с оператором может отсутствовать. Оператор работает следующим образом:

1.вычисляется значение <выражения>.

2.выполняется оператор, метка которого <значение> совпадает со значением <выражение>.

3.Если ни одно<значение> не совпадает со значением <выражение>, выполняется оператор после else.

2

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

В свойстве Caption для формы запишите название «Изменение цвета». Поместите на форму следующие компоненты: Label (метка), TComboBox (редактируемый список) со страницы Standard, TBitBth (кнопка с графикой) и Shape (фигура) со страницы Additional. Вид формы представлен на

Label (Caption)

ComboBox (Items)

BitBth (Caption)

Shape (Shape)

Button (Caption)

Рис.1 Окно формы «Изменение цвета»

рисунке 1:

Всвойстве Caption (заголовок) объекта Label1 запишите «Выбери цвет». В свойстве Items (элементы) ComboBox1 запишите названия цветов: синий, красный, зелёный, а в свойстве Text удалите текст.

Всвойстве Caption для кнопки BitBth1 запишите «Применить». Теперь для кнопки нужно записать процедуру изменения цвета фигуры. Для этого щёлкните два раза мышью по кнопке и в открывшейся заготовке процедуры

TForm1.BitBtn1Click(Sender: TObject); наберите следующий код:

if ComboBox1.Text='Синий' then Shape1.brush.Color:=clBlue

else

if ComboBox1.Text='Красный' then Shape1.brush.Color:=clRed

3

else

if ComboBox1.Text='Зелёный' then Shape1.brush.Color:=clGreen ;

Создадим кнопку «Выход». Со страницы Standard на форму поместим ещё один компонент Button, а в свойстве Caption объекта Button1 запишем «Выход». Запрограммируем кнопку, щёлкнув два раза по ней мышью. Откроется заготовка процедуры TForm1.Button1Click. Между словами begin и end запишем close;.

Запустите полученную программу, убедитесь в её правильности.

Сохраним

свой проект. Для этого зайдите в меню File

→ Save all.

Обратите внимание, что программу лучше сохранять в отдельную папку.

Пример 2.

Рассмотрим тот же пример, но с использованием оператора

выбора. Однако теперь для решения задачи будем использовать объекты Shape, ComboBox, Button, создавая другую форму. Создадим новое приложение (File→ New→ Application).

В свойстве Text объекта ComboBox1 запишите: «Выбери цвет».

Для смены изображения фигуры будем менять цвет заливки объекта Shape с помощью оператора case. Для этого создадим процедуру, реагирующую на изменение значения в списке. Щёлкнем два раза по списку и впишем процедуру:

procedure TForm1.ComboBox1Change(Sender: TObject); var a: integer;

begin a:=ComboBox1.ItemIndex; case a of

0:shape1.Brush.Color := clblue;

1:shape1.Brush.Color := clRed;

2:shape1.Brush.Color := clwhite;

3:shape1.Brush.Color := clgreen;

4:shape1.Brush.Color := clblack;

end;

Запустите программу. Сохраните проект.

4

Пример 3. Создадим программу-тест, в которой на каждый вопрос надо будет выбрать ответ из предложенных вариантов. Результаты теста определяются по количеству верных ответов.

Назовите форму: «Тест». Вид формы представлен на рисунке 3:

Рис.3 Окна формы «Тест»

Поместите на форму три компонента GroupBox (групповое окно) со страницы Standard. В свойстве Caption (заголовок) для них запишите: «Первый вопрос», «Второй вопрос», «Третий вопрос». В каждое групповое окно вставьте по одному компоненту Label (метка). В свойстве Caption для них запишите: «2*2», «30/5», «15+6». В каждое групповое окно вставьте по одному компоненту RadioGroup (группа радиокнопок). В свойстве Caption для групп радиокнопок запишите: «Варианты ответов» (либо «Варианты»). В группы радиокнопок вставьте по четыре компонента Radio Button. В свойстве Caption для радиокнопок запишите:

(3; 7; 4; 5), (7; 6; 4; 5), (24; 22; 29; 21).

5

Итак, правильными будут ответы: RadioButton3, RadioButton6, RadioButton12. Объявите переменную s переменной целого типа, которая будет служить счётчиком верных ответов:

var

Form1: TForm1; s: integer=0;

Переменной s присвоено значение «0». При щелчке на кнопке, содержащей правильный ответ, значение переменной s будет увеличиваться на единицу. Для этого событие OnClick (щелчок) для кнопок RadioButton3, RadioButton6, RadioButton12 должно содержать в теле процедуры следующий оператор:

s:=s+1;

В нижней части формы расположите кнопку «Результат» (свойство Caption для кнопки) и три компонента Label (метка). В свойстве Visible (видимый) меток выберите значение: False (ложь). При щелчке на кнопке будут происходить следующие события: в объекте label4 будет отображаться количество верных ответов, в объекте label5 будут отображаться слова: «Молодец!», «Хорошо», «Плохо» или «Очень плохо» в зависимости от того, сколько дано правильных ответов. Для третьей метки в свойстве Caption запишите: «Количество верных ответов:».

Процедура для кнопки «Результат»:

procedure TForm1.Button1Click(Sender: TObject); begin

label6.Visible:=True;

label4.Visible:=True;

label4.Caption:=IntToStr(s); if s=3 then

begin label5.Visible:=True; label5.Caption:='МОЛОДЕЦ!'; end

else

if s=2 then begin

6

label5.Visible:=True; label5.Caption:='ХОРОШО'; end

else

if s=1 then begin

label5.Visible:=True; label5.Caption:='ПЛОХО'; end

else

if s=0 then begin

label5.Visible:=True; label5.Caption:='Очень ПЛОХО'; end ;

end;

Запустите программу и попробуйте с ней поработать. Вы видите, что при ответе на вопрос можно несколько раз нажимать разные кнопки. Для того чтобы ответ состоял из единственного щелчка, надо для щелчка на каждой кнопке написать процедуру невозможности щелчка на любой другой кнопке. Вот пример для кнопки RadioButton1:

procedure TForm1.RadioButton1Click(Sender:TObject); begin

Form1.RadioButton2.Enabled:=False;

Form1.RadioButton3.Enabled:=False;

Form1.RadioButton4.Enabled:=False; end;

Следует по аналогии написать процедуры и для остальных кнопок вариантов ответа на первый вопрос.

Теперь, после ответа на первый вопрос тестируемый будет вынужден перейти ко второму вопросу. Напишите процедуры отключения кнопок для всех вариантов ответов на вопросы. Проверьте работу программы. Вы видите, что теперь следует снять ограничения для кнопок, если вы хотите

7

использовать тест ещё раз. Добавьте на форму кнопку «Очистить». Запишите следующую процедуру щелчка на этой кнопке:

procedure TForm1.Button2Click(Sender: TObject); begin

s:=0;

label4.Visible:=False;

label5.Visible:=False;

Form1.RadioButton1.Enabled:=True;

Form1.RadioButton2.Enabled:=True;

Form1.RadioButton3.Enabled:=True;

Form1.RadioButton4.Enabled:=True;

Form1.RadioButton5.Enabled:=True;

Form1.RadioButton6.Enabled:=True;

Form1.RadioButton7.Enabled:=True;

Form1.RadioButton8.Enabled:=True;

Form1.RadioButton9.Enabled:=True;

Form1.RadioButton10.Enabled:=True;

Form1.RadioButton11.Enabled:=True;

Form1.RadioButton12.Enabled:=True;

Form1.RadioButton1.Checked:=False;

Form1.RadioButton2.Checked:=False;

Form1.RadioButton3.Checked:=False;

Form1.RadioButton4.Checked:=False;

Form1.RadioButton5.Checked:=False;

Form1.RadioButton6.Checked:=False;

Form1.RadioButton7.Checked:=False;

Form1.RadioButton8.Checked:=False;

Form1.RadioButton9.Checked:=False;

Form1.RadioButton10.Checked:=False;

Form1.RadioButton11.Checked:=False;

Form1.RadioButton12.Checked:=False; end;

В этой процедуре обнуляется счётчик, выключается отображение суммы правильных ответов и оценки, выключается ограничение щелчка на кнопке, выключается сам щелчок на кнопке.

Сохраните изменения, запустите программу.

8

Задания для самостоятельной работы:

1.Составить тест, состоящий из семи вопросов с выводом количества правильных ответов и оценки.

2.При правильном ответе на вопрос организовать подсветку с помощью заливки Shape ответа зеленным цветом, а при не правильном – красным.

3.Организовать подсветку результата теста (количество правильных и неправильных ответов и общий результат: молодец – заливка зеленая; хорошо – желтая заливка; плохо – красная заливка).

4.Организовать кнопку «Очистки формы».

9