Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум1_2014.doc
Скачиваний:
19
Добавлен:
25.02.2016
Размер:
1.79 Mб
Скачать

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;

//Пройдет ли треугольник в квадрат?