Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
lbl1: TLabel;
img1: TImage;
lbl2: TLabel;
lbl3: TLabel;
lbl4: TLabel;
lbl5: TLabel;
edt1: TEdit;
edt2: TEdit;
edt3: TEdit;
edt4: TEdit;
btn1: TButton;
btn2: TBitBtn;
lbl6: TLabel;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
a,b,x,y:real;
flag:Boolean;
begin
a:=StrToFloat(edt1.Text);
b:=StrToFloat(edt2.Text);
x:=StrToFloat(edt3.Text);
y:=StrToFloat(edt4.Text);
flag:=False;
if x>=0 then
if x<=a then
if y>=0 then
if y<=b then
Flag:=True;
if flag then
lbl6.Caption:='Принадлежит'
else
lbl6.Caption:='Не принадлежит'
end;
end.
Для иллюстрации применения структуры «выбор» и, следовательно, оператора case, решим следующую задачу.
Пример 3. Дана оценка по десятибалльной системе. Получите ее эквивалент по пятибалльной системе. Предполагается, что между системами имеется следующее соответствие:
10-балльная система |
5-балльная система |
0 |
1 |
1 – 3 |
2 |
4 – 5 |
3 |
6 – 8 |
4 |
9 – 10 |
5 |
Решение. Данную задачу можно решить и с помощью структуры «ветвление» (оператора if…then…else), но удобней воспользоваться структурой «выбор» (рис. 1.8).
Рис. 1.8. Схема алгоритма программы
Текст программы
program lr1_3_1;
{Дана оценка по десятибалльной системе. Получить ее эквивалент по пятибалльной системе. Предполагается, что между системами имеется следующее соответствие:}
{$APPTYPE CONSOLE}
uses
SysUtils;
var
oc10,oc5:byte;
begin
write('Vvedite oc10 ');
readln(oc10);
case oc10 of
0 : oc5:=1;
1..3 : oc5:=2;
4,5 : oc5:=3;
6,7 : oc5:=4;
8..10: oc5:=5
else
begin
writeln(oc10,' –takoy ocenki net.');
readln;
exit; {Выход из программы}
end;
end;
writeln(‘Ocenka’,oc10,' po 10-ballnoy systeme sootvetstvuet ', oc5,'po 5-ballnoy');
readln;
end.
Форма (рис. 1.9) и соответствующий Unit приведены ниже.
Рис. 1.9 Форма примера 1_3
Текст Unit-a
unit Uni1;
{Дана оценка по десятибалльной системе.
Получить ее эквивалент по пятибалльной системе.
}
Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls;
type
TForm1 = class(TForm)
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
edt1: TEdit;
btn1: TButton;
btn2: TBitBtn;
procedure btn1Click(Sender: TObject);
procedure edt1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
oc10,oc5:byte;
flag:Boolean;
begin
oc10:=StrToInt(edt1.Text);
flag:=True;
case oc10 of
0 : oc5:=1;
1..3 : oc5:=2;
4,5 : oc5:=3;
6,7 : oc5:=4;
8..10: oc5:=5
else
flag:=False;
end;
if flag then
lbl3.Caption:='Осенка по 5-балльной системе '
+IntToStr(oc5)
else
lbl3.Caption:=edt1.Text + ' -такой оценки нет.';
end;
procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
//Обработка нажатых клавиш в поле ввода оценки
begin
if not(Key in ['0'..'9',#8]) then
key:=#0;
end;
end.
В данном приложении обрабатывается событие OnKeyPress для компонента Edt1, предназначенного для ввода оценки по 10-балльной системе. Пользователь может вводить только цифры от 0 до 9 и пользоваться клавишей Backspace.
Рассмотрим более сложный пример.
Пример 4. Даны сторона квадрата и стороны треугольника. Определите пройдет ли данный треугольник в квадрат.
Разработаем только полноэкранное приложение.
Форма приложения имеет вид (рис. 1.10).
Рис.1.10 Форма примера 4
Соответствующий Unit:
unit Unit1;
//Пройдет ли треугольник в квадрат?