- •Программирование на языке Паскаль
- •Содержание
- •Оформление лабораторных работ
- •Текст программы
- •Экранные меню и циклы Постановка задачи
- •Математическая модель
- •Описание алгоритма
- •Текст программы
- •Процедуры и функции Постановка задачи
- •Математическая модель
- •Описание алгоритма
- •Текст программы
- •Работа с файлами и алгоритмы сортировки Постановка задачи
- •Математическая модель
- •Описание алгоритма
- •Текст программы
- •Inc(Cmp); {Подсчет количества сравнений}
- •Inc(Cmp); {Подсчет количества сравнений}
- •Визуальное программирование Постановка задачи
- •Математическая модель
- •Основная форма программы
- •Основные свойства формы
- •Элементы формы
- •Текст программы
- •Библиографический список
-
Визуальное программирование Постановка задачи
Выполнить задание лабораторной работы №3 с использованием средств визуального программирования, т.е. расчет площадей прямоугольника, треугольника и круга с проверкой корректности ввода данных и возможности вычислений. Для выбора типа фигуры использовать управляющий элемент «Группа переключателей» (класс TRadioGroup) с тремя вариантами выбора, для задания параметров каждой фигуры использовать поля ввода (класс TEdit), текстовые надписи выполнить с помощью меток (класс TLabel). Необходимо реализовать две кнопки (класс TButton): «Рассчитать площадь» и «Выход», выполняющие соответствующие действия.
Также на форме должен присутствовать элемент «Изображение» (класс TImage) для отображения вида фигур. При расчете площади в этом элементе должно выводиться изображение соответствующей фигуры в соответствии с введенными параметрами.
Математическая модель
|
|
, где p – полупериметр, . |
Для отображения на экране необходимо задать координаты основных точек фигур:
Координаты углов прямоугольника для процедуры Rectangle
|
Координаты углов описывающего эллипс прямоугольника для процедуры Ellipse
|
Координаты точек для процедур MoveTo и LineTo
, |
Основная форма программы
Основные свойства формы
Name = 'MainForm'
Caption = 'Лабораторная работа №6'
Элементы формы
Группа переключателей:
Figure: TRadioGroup
Caption = ‘Фигура’
Items = ('Прямоугольник', 'Треугольник', 'Круг')
Метки:
Label1: TLabel
Caption = 'Параметры фигуры'
Label2: TLabel
Caption = 'a'
Label3: TLabel
Caption = 'b'
…
Поля ввода:
ra: TEdit
rb: TEdit
ta: TEdit
tb: TEdit
tc: TEdit
cr: TEdit
Кнопки:
Button1: TButton
Caption = ‘Рассчитать площадь’
OnClick = Button1Click
Button2: TButton
Caption = ‘Выход’
OnClick = Button2Click
Изображение:
Image: TImage
Transparent = True
Текст программы
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type
TMainForm = class(TForm)
Figure: TRadioGroup;
ra: TEdit;
rb: TEdit;
ta: TEdit;
tb: TEdit;
tc: TEdit;
cr: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Button1: TButton;
Button2: TButton;
Image: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
procedure TMainForm.Button1Click(Sender: TObject);
var
a,b,c,r,p,s,h:Real;
begin
with Image.Picture.Bitmap do
begin
Width:=0; { Для очистки изображения }
Height:=0;
Width:=Image.Width;
Height:=Image.Width;
end;
case Figure.ItemIndex of
0:begin
a:=StrToFloat(ra.Text);
b:=StrToFloat(rb.Text);
if (a<=0) or (b<=0) then
ShowMessage('Некорректный ввод')
else
begin
ShowMessage('Площадь прямоугольника равна '+
FloatToStr(a*b));
with Image.Picture.Bitmap.Canvas do
Rectangle(0,0,Round(a),Round(b));
end;
end;
1:begin
a:=StrToFloat(ta.Text);
b:=StrToFloat(tb.Text);
c:=StrToFloat(tc.Text);
if (a<=0) or (b<=0) or (c<=0) then
ShowMessage('Некорректный ввод')
else
if (a+b<=c) or (b+c<=a) or (a+c<=b) then
ShowMessage('Треугольник не существует')
else
begin
p:=(a+b+c)/2;
s:=Sqrt(p*(p-a)*(p-b)*(p-c));
ShowMessage('Площадь треугольника равна '+
FloatToStr(s));
with Image.Picture.Bitmap.Canvas do
begin
MoveTo(0,0);
LineTo(Round(a),0);
h:=2*s/a;
LineTo(Round(Sqrt(Sqr(c)-Sqr(h))),
Round(h));
LineTo(0,0);
end;
end;
end;
2:begin
r:=StrToFloat(cr.Text);
if r<=0 then
ShowMessage('Некорректный ввод')
else
begin
ShowMessage('Площадь круга равна '+
FloatToStr(Pi*Sqr(r)));
with Image.Picture.Bitmap.Canvas do
Ellipse(0,0,Round(2*r),Round(2*r));
end;
end;
end;
end;
procedure TMainForm.Button2Click(Sender: TObject);
begin
Close;
end;
end.