Скачать:
Отчет по лабораторным работам
Дисциплина: «Объектно-ориентированное
моделирование
и программирование»
ЗАДАНИЕ
по выполнению лабораторных работ
студенту Якименко Олегу Геннадьевичу, обучающегося по специальности: 09.03.03 «Прикладная информатика».
1. Разработка приложений линейной и разветвляющейся структуры в среде программирования Delphi.
2.Разработка приложений с применением циклов. Работа с массивами.
3.Разработка приложения содержащего строковую информацию, записи и файлы.
4.Разработка приложений с использованием подпрограмм и модулей. График в среде программированияDelphi.
5. Разработка приложений управляемого с помощью панели инструментов.
Научный руководитель лабораторных работ Кромина Л.А, доцент кафедры АСУ.
Срок сдачи студентом законченной ВКР на кафедру до «23» декабря 2016 г.
1 |
Разработка приложений линейной и разветвляющейся структуры в среде программирования Delphi |
4 |
2 |
Разработка приложений с применением циклов. Работа с массивами |
11 |
3 |
Разработка приложения содержащего строковую информацию, записи и файлы |
16 |
4 |
Разработка приложений с использованием подпрограмм и модулей. График в среде программирования Delphi |
23 |
5 |
Разработка приложений управляемого с помощью панели инструментов. |
41 |
РАЗРАБОТКА ПРИЛОЖЕНИЙ ЛИНЕЙНОЙ И РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ В СРЕДЕ ПРОГРАММИРОВАНИЯ DELPHI
Цель лабораторной работы: изучить основы среды Delphi, основы пользования стандартными компонентами организации переключений (TCheckBox, TRadioGroup и др.). Составить простейшую программу для линейной структуры, также используя компоненты организации переключений разработать интерфейс и программу для заданного разветвляющегося алгоритма.
Ход лабораторной работы:
1. Запустил среду программирования Delphi.
2. Выбрал необходимый размер формы.
3. Разместили на форме компоненты Edit, label, предварительно выбрав их из Tool Palette.
4. Отредактировал стандартное содержимое компонентов (очистил), изменив их Caption в Object Inspector.
5. Написал программу по представленному образцу, программа в среде разработки представлена на рисунке 1.
Рисунок 1 – Форма программы в среде разработки
6.Запустил отладку программы. Запущенная программа представлена на рисунке 2.
Рисунок 2 – Запущенная программа
Код программы:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z:real;
a,b,c,u:real;
begin
x:=StrToFloat(Edit1.Text);
Memo1.Lines.Add('x='+Edit1.Text);
y:=StrToFloat(Edit2.Text);
Memo1.Lines.Add('y='+Edit2.Text);
z:=StrToFloat(Edit3.Text);
Memo1.Lines.Add('z='+Edit3.Text);
a:=Sqr(Sin(x+y)/Cos(x+y));
b:=Exp(y-z);
c:=Sqrt(Cos(Sqr(x))+Sin(Sqr(z)));
u:=a-b*c;
Memo1.Lines.Add('ðåçóëüòàò u='+FloatToStrF(u, ffFixed, 8,2));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='3,4';
Edit2.Text:='0,74';
Edit3.Text:='19,43';
Memo1.Clear;
end;
end.
7. Написал программу с разветвляющимся вычислительным процессом. Программа в среде разработки представлена на рисунке 3.
Рисунок 3 – Программа с разветвляющимся вычислит. процессом в среде разработки
8. Запустил отладку программы. Запущенная программа представлена на рисунке 4.
Рисунок 4 – Программа с разветвляющимся вычисл. процессом в процессе работы
Код программы:
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Memo1: TMemo;
Button1: TButton;
CheckBox1: TCheckBox;
RadioGroup1: TRadioGroup;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z,u,max:extended;
begin
x:=StrToFloat(Edit1.Text);
Memo1.Lines.Add('x='+Edit1.Text);
y:=StrToFloat(Edit2.Text);
Memo1.Lines.Add('y='+Edit2.Text);
z:=StrToFloat(Edit3.Text);
Memo1.Lines.Add('z='+Edit3.Text);
case RadioGroup1.ItemIndex of
0: u:=cos(x);
1: u:=sin(x);
2: u:=sin(x)/cos(x);
end;
if CheckBox1.Checked then
begin
u:=abs(u);
y:=abs(y);
z:=abs(z);
end;
if u>y then max:=u
else max:=y;
if z>max then max:=z;
if CheckBox1.Checked then Memo1.Lines.Add('MaxAbs='+FloatToStrF(max, ffFixed, 8,2))
else Memo1.Lines.Add('max='+FloatToStrF(max, ffFixed, 8,2));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='0,1';
Edit2.Text:='0,356';
Edit3.Text:='0,0';
Memo1.Clear;
end;
end.
Вывод: изучил основы среды Delphi, основы пользования стандартными компонентами организации переключений (TCheckBox, TRadioGroup и др.). Составил простейшую программу для линейной структуры, также используя компоненты организации переключений, разработал интерфейс и программу для заданного разветвляющегося алгоритма.
Лабораторная работа №2
РАЗРАБОТКА ПРИЛОЖЕНИЙ С ПРИМЕНЕНИЕМ ЦИКЛОВ. РАБОТА С МАССИВАМИ.
Цель работы: изучить средства отладки программ в среде Delphi, свойства компонента TStringGrid.Написать и отладить программу для циклического вычислительного процесса. Написать программу с использованием массивов.
Задание: написать и отладить программу, которая выводит таблицу значений функций S(x) для х изменяющихся в интервале от x1 до x2 с шагом h.
Ход лабораторной работы:
1.Запустил среду программирования Delphi.
2.Выбрал необходимый размер формы.
3.Разместили на форме компоненты Edit, label, предварительно выбрав их из Tool Palette.
4.Отредактировал стандартное содержимое компонентов (очистил), изменив их Caption в Object Inspector.
5.Добавил компонент StringGrid на форму.
6.Добавил возможность выбора функции в программе.
7.Добавил Button на форму и присвоил ей выполнение необходимых действий. Получившая программа представлена на рисунке 1.
Рисунок 1 – Форма программы в среде разработки
8.Запустил отладку программы. Запущенная программа указана на рисунке 2.
Рисунок 2 – Запущенная программа
Код программы:
unit Unit5;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Grids;
type
TForm5 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Edit3: TEdit;
RadioGroup1: TRadioGroup;
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject);
var x1,x2,x,h,s,k,m:integer;
y:extended;
I,j:integer;
tabl:array[1..150] of extended;
begin
for i := 1 to 5 do begin
StringGrid1.Cells[i,0]:=' ';
StringGrid1.Cells[i,1]:=' ';
StringGrid1.Cells[i,2]:=' ';
end;
h:=StrToInt(Edit1.Text);
x1:=StrToInt(Edit2.Text);
x2:=StrToInt(Edit3.Text);
j:=1;
s:=0;
k:=x1;
StringGrid1.Cells[0,0]:='№элемента';
StringGrid1.Cells[0,1]:='x';
StringGrid1.Cells[0,2]:='S(x)';
m:=2;
repeat
StringGrid1.Cells[1,1]:=FloatTostrF(x1, ffFixed, 8,2);
tabl[j]:=k;
k:=k+h;
if k>x2 then break;
StringGrid1.Cells[m,1]:=FloatTostrF(k, ffFixed, 8,2);
s:=s+1;
j:=j+1;
m:=m+1;
until (k>=x2);
tabl[j]:=k;
for I := 1 to s+1 do begin
StringGrid1.Cells[I,0]:=FloatTostrF(I, ffFixed, 8,2);
end;
case RadioGroup1.ItemIndex of
0: begin for i:=1 to s+1 do tabl[i]:=5*tabl[i]+3; end;
1: begin for i:=1 to s+1 do tabl[i]:=sqr( tabl[i]); end;
2: begin for i:=1 to s+1 do tabl[i]:=sqr( tabl[i])*tabl[i]; end;
3: begin for i:=1 to s+1 do tabl[i]:=sin( tabl[i]); end;
4: begin for i:=1 to s+1 do tabl[i]:=cos( tabl[i]); end;
5: begin for i:=1 to s+1 do tabl[i]:=sin( tabl[i])/cos( tabl[i]); end;
end;
for I := 1 to s+1 do begin
StringGrid1.Cells[I,2]:=FloatTostrF(tabl[i], ffFixed, 8,2);
end;
end;
procedure TForm5.FormCreate(Sender: TObject);
begin
Edit1.Text:=' ';
Edit2.Text:=' ';
Edit3.Text:=' ';
end;
end.
Вывод: изучил средства отладки программ в среде Delphi, свойства компонента TStringGrid.Написал и отладил программу для циклического вычислительного процесса с использованием массивов.
Лабораторная работа № 3
РАЗРАБОТКА ПРИЛОЖЕНИЯ СОДЕРЖАЩЕГО СТРОКОВУЮ ИНФОРМАЦИЮ, ЗАПИСИ И ФАЙЛЫ.
Цель работы: Изучить методы программирования с использованием строк и правила работы с компонентами TListBox и TComboBox.
Задание: написать программу, вводящую в файл или читающую из файла ведомость абитуриентов, сдавших вступительные экзамены. Каждая запись должна содержать фамилию, а также оценки по физике, математике и сочинению. Вывести список абитуриентов, отсортированный в порядке уменьшения их среднего балла и записать эту информацию в текстовой файл.
Ход лабораторной работы:
1.Запустили среду программирования Delphi.
2.Выбрали необходимый размер формы.
3.Разместили на форме компоненты Edit, label, предварительно выбрав их из Tool Palette.
4.Отредактировали стандартное содержимое компонентов (очистили), изменив их Caption в Object Inspector. Затем, в Label4 сделали невидимым.
5.Разместил кнопки ввода записи, создания файла, вывода записей, сортировки записей, и кнопку bitbtn.
6.Прописал кнопкам исполняемый код, получившаяся форма представлена на рисунке 1.
Рисунок 1 – Форма программы в среде разработки
7.Запустил отладку программы. Работающая программа показана на рисунке 2.
Рисунок 2 – Программа в режиме внесения записей
Рисунок 3 – Программа сохранила и отсортировала записи
Код программы:
unit Unit3;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, Vcl.StdCtrls;
type
TForm6 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
BitBtn1: TBitBtn;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Type
TStudent= record
FIO:string[40];
ocn:array[1..3]of word;
sball:extended;
end;
var
FZ: file of TStudent;
Ft: TextFile;
Stud: array [1..100] of TStudent;
Nzap: integer;
FileNameZ, FileNameT: string;
var
Form6: TForm6;
implementation
{$R *.dfm}
procedure TForm6.BitBtn1Click(Sender: TObject);
begin
CloseFile(FZ);
end;
procedure TForm6.Button1Click(Sender: TObject);
begin
Nzap:=Nzap+1;
with Stud[Nzap] do
begin
FIO:=Edit1.Text;
ocn[1]:=StrToInt(Edit2.Text);
ocn[2]:=StrToInt(Edit3.Text);
ocn[3]:=StrToInt(Edit4.Text);
sball:=(ocn[1]+ocn[2]+ocn[3])/3;
Memo1.Lines.Add(FIO+''+IntToStr(ocn[1])+' '+IntToStr(ocn[2])+' '+IntToStr(ocn[3]));
end;
Write(FZ, Stud[Nzap]);
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
end;
procedure TForm6.Button2Click(Sender: TObject);
begin
OpenDialog1.Title:='Создать новый файл';
if OpenDialog1.Execute then begin
FileNameZ:=OpenDialog1.FileName;
AssignFile(FZ, FileNameZ);
Rewrite(FZ);
Button1.Show;
end;
end;
procedure TForm6.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
FileNameZ:=OpenDialog1.FileName;
AssignFile(FZ, FileNameZ);
Reset(FZ);
end;
while not EOF(FZ) do begin
Nzap:=Nzap+1;
Read(FZ, Stud[Nzap]);
with Stud[Nzap] do Memo1.Lines.Add(FIO+''+IntToStr(ocn[1])+' '+IntToStr(ocn[2])+' '+IntToStr(ocn[3]));
end;
Button1.Show;
end;
procedure TForm6.Button4Click(Sender: TObject);
var i,j: word;
st:Tstudent;
begin
for i:= 1 to Nzap-1 do
for j := i+1 to Nzap do
if Stud[i].sball<Stud[j].sball then begin
st:=Stud[i];
Stud[i]:=Stud[j];
Stud[j]:=st;
end;
Memo1.Clear;
for i := 1 to Nzap do with Stud[i] do
Memo1.Lines.Add(IntToStr(i)+' '+FIO+' ' +FloatToStrF(sball, ffFixed, 4,2));
end;
procedure TForm6.Button5Click(Sender: TObject);
var i:word;
begin
if SaveDialog1.Execute then begin
FileNameT:=SaveDialog1.FileName;
AssignFile(Ft, FileNameT);
Rewrite(Ft);
end;
for i := 1 to Nzap do with Stud[i] do
Writeln(Ft, i:4,' ',FIO, sball, 8,2);
CloseFile(Ft);
end;
procedure TForm6.FormCreate(Sender: TObject);
begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Memo1.Clear;
Button1.Hide;
Nzap:=0;
end;
end.
Вывод: изучил методы программирования с использованием строк и правила работы с компонентами TListBox и TComboBox. Написал программу согласно заданию.
Лабораторная работа № 4
РАЗРАБОТКА ПРИЛОЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ ПОДПРОГРАММ И МОДУЛЕЙ. ГРАФИК В СРЕДЕ ПРОГРАММИРОВАНИЯ DELPHI
Цель лабораторной работы: изучить возможности Delphi для написания подпрограмм и создания модулей, построения графиков с помощью компонента отображения графической информации TChart, изучить основные графические компоненты, их свойства и методы. Составить и отладить программу, использующую внешний модуль Unit с подпрограммой, программу построения на экране графика заданной функции.
Задание
1.По указанию преподавателя выберите вариант задачи из заданий, приведенных в работе 2. Предусмотрите возможность выбора функции, для которой будет рассчитываться таблица. Функции поместите в отдельный модуль. Вызывать выбранную функцию должна процедура, использующая в качестве входного параметра имя соответствующей функции.
2.Построить графики функций для соответствующих вариантов из работы №1. Таблицу данных получить путем изменения параметра X с шагом h. Вывод исходных данных организовать через окна TЕdit. Самостоятельно выбрать удобные параметры настройки.
3. Разработать приложение, содержащее три формы – три способа представления графической информации.
На 1-й форме продемонстрировать отображение графических картинок, созданных в других графических редакторах.
На 2-й форме с помощью кнопочного меню рисовать различные графические фигуры посредством компоненты класса TShape.
На 3-й форме реализовать рисование простейшими примитивами, типа линия, прямоугольник, эллипс и т.д.
Ход лабораторной работы:
1.Запустил среду программирования Delphi.
2.Выбрал необходимый размер формы, разместил необходимые компоненты, указанные в методических указаниях.
3.К кнопкам Button, написал код, который выполняет задание. Полученная форма показана на рисунке 1.
Рисунок 1 – Форма приложения задания 1 в среде разработки
4.Запустил отладку программы. Запущенная программа представлена на рисунке 2.
Рисунок 2 – Запущенная программа задания 1
Код программы:
unit Unit9;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VclTee.TeeGDIPlus, VCLTee.TeEngine,
VCLTee.Series, Vcl.StdCtrls, Vcl.ExtCtrls, VCLTee.TeeProcs, VCLTee.Chart;
type
TForm9 = class(TForm)
Chart1: TChart;
Edit1: TEdit;
Series1: TLineSeries;
Series2: TLineSeries;
Button1: TButton;
Button2: TButton;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form9: TForm9;
Xmin, Xmax, Ymin, Ymax, Hx, Hy, h:extended;
implementation
{$R *.dfm}
procedure TForm9.Button1Click(Sender: TObject);
var x, y1, y2:extended;
begin
Series1.Clear;
Series2.Clear;
Xmin:=StrToFloat(Edit1.Text);
Xmax:=StrToFloat(Edit2.Text);
h:=StrToFloat(Edit7.Text);
x:=Xmin;
repeat
y1:=sin(x);
Series1.AddXY(x, y1,' ', clTeeColor);
y2:=cos(x);
Series2.AddXY(x, y2,' ', ClTeeColor);
x:=x+h
until (x>Xmax);
end;
procedure TForm9.Button2Click(Sender: TObject);
begin
Halt;
end;
procedure TForm9.FormCreate(Sender: TObject);
begin
Xmin:=0;
Xmax:=2*Pi;
Ymin:=-1;
Ymax:=1;
Hx:=Pi/2;
Hy:=0.5;
h:=0.01;
Edit1.Text:=FloatToStr(Xmin);
Edit2.Text:=FloatToStr(Xmax);
Edit3.Text:=FloatToStr(Ymin);
Edit4.Text:=FloatToStr(Ymax);
Edit5.Text:=FloatToStr(Hx);
Edit6.Text:=FloatToStr(Hy);
Edit7.Text:=FloatToStr(h);
Chart1.BottomAxis.Automatic:=false;
Chart1.BottomAxis.Minimum:=Xmin;
Chart1.BottomAxis.Maximum:=Xmax;
Chart1.LeftAxis.Automatic:=false;
Chart1.LeftAxis.Minimum:=Ymin;
Chart1.LeftAxis.Maximum:=Ymax;
Chart1.BottomAxis.Increment:=Hx;
Chart1.LeftAxis.Increment:=Hy;
end;
end.
5.Создал формы программы для третьего задания.
6.Разместил на них необходимые элементы. Полученные формы представлены на рисунках 3 – 6.
Рисунок 3 – Меню программы из задания 3 в среде разработки
Код программы:
unit Unit10;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons;
type
TForm10 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form10: TForm10;
implementation
{$R *.dfm}
uses Unit11, Unit12, Unit13;
procedure TForm10.Button1Click(Sender: TObject);
begin
if (not Assigned(Form11)) then Form11:=TForm11.Create(Self);
Form11.Show;
end;
procedure TForm10.Button2Click(Sender: TObject);
begin
if (not Assigned(Form12)) then Form12:=TForm12.Create(Self);
Form12.Show;
end;
procedure TForm10.Button3Click(Sender: TObject);
begin
if (not Assigned(Form13)) then Form13:=TForm13.Create(Self);
Form13.Show;
end;
end.
Рисунок 4 – Форма открытия изображения в среде разработки
Код программы:
unit Unit11;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtDlgs, Vcl.ExtCtrls, jpeg;
type
TForm11 = class(TForm)
Button1: TButton;
Image1: TImage;
OpenPictureDialog1: TOpenPictureDialog;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form11: TForm11;
implementation
{$R *.dfm}
procedure TForm11.Button1Click(Sender: TObject);
begin
Form11.Close;
end;
procedure TForm11.Button2Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
end.
Рисунок 5 – Форма рисования изображений в среде разработки
Код программы:
unit Unit12;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TForm12 = class(TForm)
Button1: TButton;
Shape1: TShape;
RadioGroup1: TRadioGroup;
Button2: TButton;
RadioGroup2: TRadioGroup;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form12: TForm12;
implementation
{$R *.dfm}
procedure TForm12.Button1Click(Sender: TObject);
begin
Form12.Close;
end;
procedure TForm12.Button2Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0:Shape1.Shape:=stRectangle;
1:Shape1.Shape:=stSquare;
2:Shape1.Shape:=stRoundRect;
3:Shape1.Shape:=stRoundSquare;
4:Shape1.Shape:=stEllipse;
5:Shape1.Shape:=stCircle;
end;
case RadioGroup2.ItemIndex of
0:Shape1.Brush.Color:=clBlack;
1:Shape1.Brush.Color:=clRed;
2:Shape1.Brush.Color:=clBlue;
3:Shape1.Brush.Color:=clGreen;
4:Shape1.Brush.Color:=clYellow;
5:Shape1.Brush.Color:=clNavy;
end;
Shape1.Show;
end;
procedure TForm12.FormCreate(Sender: TObject);
begin
Shape1.Hide;
end;
end.
Рисунок 6 – Форма рисования графическими примитивами в среде разработки
Код программы:
unit Unit13;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TForm13 = class(TForm)
Button1: TButton;
Image1: TImage;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Edit3: TEdit;
Edit4: TEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Label9: TLabel;
Edit7: TEdit;
Edit8: TEdit;
Label10: TLabel;
Label11: TLabel;
Edit9: TEdit;
Edit10: TEdit;
Label12: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form13: TForm13;
xb, yb:integer;
var xr, yr, ndx, ndy, kdx, kdy:integer;
implementation
{$R *.dfm}
procedure TForm13.Button1Click(Sender: TObject);
begin
Form13.Close;
end;
procedure TForm13.Button2Click(Sender: TObject);
var xl, yl:integer;
begin
Image1.Canvas.Pen.Color:=clBlack;
xl:=StrToInt(Edit3.Text);
yl:=StrToInt(Edit4.Text);
Image1.Canvas.Lineto(xl,yl);
end;
procedure TForm13.Button3Click(Sender: TObject);
begin
Image1.Canvas.Pen.Color:=clBlack;
xr:=StrToInt(Edit3.Text);
yr:=StrToInt(Edit4.Text);
Image1.Canvas.Rectangle(xb, yb, xr, yr);
end;
procedure TForm13.Button4Click(Sender: TObject);
var rad1, rad2:integer;
begin
Image1.Canvas.Pen.Color:=clBlack;
xr:=StrToInt(Edit3.Text);
yr:=StrToInt(Edit4.Text);
rad1:=StrToInt(Edit5.Text);
rad2:=StrToInt(Edit6.Text);
Image1.Canvas.RoundRect(xb, yb, xr, yr, rad1, rad2);
end;
procedure TForm13.Button5Click(Sender: TObject);
begin
Image1.Canvas.Pen.Color:=clBlack;
Image1.Canvas.Ellipse(xb, yb, xr, yr);
end;
procedure TForm13.Button6Click(Sender: TObject);
begin
Image1.Canvas.Pen.Color:=clBlack;
xr:=StrToInt(Edit3.Text);
yr:=StrToInt(Edit4.Text);
ndx:=StrToInt(Edit7.Text);
ndy:=StrToInt(Edit8.Text);
kdx:=StrToInt(Edit9.Text);
kdy:=StrToInt(Edit10.Text);
Image1.Canvas.Arc(xb, yb, xr, yr, ndx, ndy, kdx, kdy);
end;
procedure TForm13.Button7Click(Sender: TObject);
begin
Image1.Canvas.Pen.Color:=clBlack;
xr:=StrToInt(Edit3.Text);
yr:=StrToInt(Edit4.Text);
ndx:=StrToInt(Edit7.Text);
ndy:=StrToInt(Edit8.Text);
kdx:=StrToInt(Edit9.Text);
kdy:=StrToInt(Edit10.Text);
Image1.Canvas.Pie(xb, yb, xr, yr, ndx, ndy, kdx, kdy);
end;
procedure TForm13.Button8Click(Sender: TObject);
begin
Image1.Canvas.Pen.Color:=clWhite;
Image1.Canvas.Rectangle(0, 0, 1121, 705);
end;
procedure TForm13.Button9Click(Sender: TObject);
var x, y :integer;
begin
Image1.Canvas.Pen.Color:=clWhite;
Image1.Canvas.Lineto(xb,yb+10);
x:=StrToInt(Edit1.Text);
y:=StrToInt(Edit2.Text);
Image1.Canvas.MoveTo(x,y);
Image1.Canvas.Pen.Color:=clRed;
Image1.Canvas.Lineto(x,y+10);
Image1.Canvas.Pen.Color:=clBlack;
xb:=x;
yb:=y;
end;
procedure TForm13.FormCreate(Sender: TObject);
begin
Image1.Canvas.Pixels[0,0];
Image1.Canvas.MoveTo(0,0);
Edit1.Text:='0';
Edit2.Text:='0';
Edit3.Text:='0';
Edit4.Text:='0';
Edit5.Text:='0';
Edit6.Text:='0';
Edit7.Text:='0';
Edit8.Text:='0';
Edit9.Text:='0';
Edit10.Text:='0';
xb:=0;
yb:=0;
end;
end.
9.Запустил отладку программы. На рисунках 7-10 представлена работающая программа.
Рисунок 7 – Меню программы
Рисунок 8 – Открытое изображение в формате jpg
Рисунок 9 - Окно рисования фигур
Рисунок 10 – Окно рисования примитивами
Вывод: изучил возможности Delphi для написания подпрограмм и создания модулей, построения графиков с помощью компонента отображения графической информации TChart, изучил основные графические компоненты, их свойства и методы. Составил и отладил программу построения на экране графика заданной функции sin(x) и cos(x).
Лабораторная работа № 5
РАЗРАБОТКА ПРИЛОЖЕНИЙ УПРАВЛЯЕМОГО С ПОМОЩЬЮ ПАНЕЛИ ИНСТРУМЕНТОВ.
Цель лабораторной работы: научиться подключать инструментальную панель, изучить основные свойства и типы кнопок, и их использование для управления вычислительным процессом
Задание
Разработать программу, в которой предусмотреть управление вычислительным процессом с помощью кнопок, расположенных на инструментальной панели. Задание использовать из лабораторной работы № 4.
Ход лабораторной работы:
1.Запустил среду программирования Delphi.
2.Создал форму и разместил на ней необходимые компоненты. Полученную форму указал на рисунке 1.
Рисунок 1 – Форма программы в среде разработки
3.Запустил отладку программы. Полученную программу указал на рисунке 2
Рисунок 2 – Запущенная программа
Код программы:
unit Unit14;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.ComCtrls,
Vcl.ExtCtrls, Vcl.ToolWin;
type
TForm10 = class(TForm)
ToolBar1: TToolBar;
Image1: TImage;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton9: TToolButton;
ToolButton8: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton15: TToolButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton7Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure ToolButton11Click(Sender: TObject);
procedure ToolButton13Click(Sender: TObject);
procedure ToolButton15Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Allhide;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form10: TForm10;
var xr, yr, ndx, ndy, kdx, kdy, xb, yb:integer;
implementation
{$R *.dfm}
procedure TForm10.Allhide;
begin
Edit1.Hide;
Edit2.Hide;
Edit3.Hide;
Edit4.Hide;
Edit5.Hide;
Edit6.Hide;
Edit7.Hide;
Edit8.Hide;
Edit9.Hide;
Edit10.Hide;
end;
procedure TForm10.FormCreate(Sender: TObject);
begin
Allhide;
Image1.Canvas.Pixels[0,0];
Image1.Canvas.MoveTo(0,0);
Edit1.Text:='0';
Edit2.Text:='0';
Edit3.Text:='0';
Edit4.Text:='0';
Edit5.Text:='0';
Edit6.Text:='0';
Edit7.Text:='0';
Edit8.Text:='0';
Edit9.Text:='0';
Edit10.Text:='0';
xb:=0;
yb:=0;
end;
procedure TForm10.ToolButton11Click(Sender: TObject);
begin
Allhide;
Edit3.Show;
Edit4.Show;
Edit7.Show;
Edit8.Show;
Edit9.Show;
Edit10.Show;
Image1.Canvas.Pen.Color:=clBlack;
xr:=StrToInt(Edit3.Text);
yr:=StrToInt(Edit4.Text);
ndx:=StrToInt(Edit7.Text);
ndy:=StrToInt(Edit8.Text);
kdx:=StrToInt(Edit9.Text);
kdy:=StrToInt(Edit10.Text);
Image1.Canvas.Pie(xb, yb, xr, yr, ndx, ndy, kdx, kdy);
end;
procedure TForm10.ToolButton13Click(Sender: TObject);
begin
Allhide;
Image1.Canvas.Pen.Color:=clWhite;
Image1.Canvas.Rectangle(0, 0, 1121, 705);
end;
procedure TForm10.ToolButton15Click(Sender: TObject);
var x, y :integer;
begin
Allhide;
Edit1.Show;
Edit2.Show;
Image1.Canvas.Pen.Color:=clWhite;
Image1.Canvas.Lineto(xb,yb+10);
x:=StrToInt(Edit1.Text);
y:=StrToInt(Edit2.Text);
Image1.Canvas.MoveTo(x,y);
Image1.Canvas.Pen.Color:=clRed;
Image1.Canvas.Lineto(x,y+10);
Image1.Canvas.Pen.Color:=clBlack;
xb:=x;
yb:=y;
end;
procedure TForm10.ToolButton1Click(Sender: TObject);
var xl, yl:integer;
begin
Allhide;
Edit3.Show;
Edit4.Show;
Image1.Canvas.Pen.Color:=clBlack;
xl:=StrToInt(Edit3.Text);
yl:=StrToInt(Edit4.Text);
Image1.Canvas.Lineto(xl,yl);
end;
procedure TForm10.ToolButton3Click(Sender: TObject);
begin
Allhide;
Edit3.Show;
Edit4.Show;
Image1.Canvas.Pen.Color:=clBlack;
xr:=StrToInt(Edit3.Text);
yr:=StrToInt(Edit4.Text);
Image1.Canvas.Rectangle(xb, yb, xr, yr);
end;
procedure TForm10.ToolButton5Click(Sender: TObject);
var rad1, rad2:integer;
begin
Allhide;
Edit3.Show;
Edit4.Show;
Edit5.Show;
Edit6.Show;
Image1.Canvas.Pen.Color:=clBlack;
xr:=StrToInt(Edit3.Text);
yr:=StrToInt(Edit4.Text);
rad1:=StrToInt(Edit5.Text);
rad2:=StrToInt(Edit6.Text);
Image1.Canvas.RoundRect(xb, yb, xr, yr, rad1, rad2);
end;
procedure TForm10.ToolButton7Click(Sender: TObject);
begin
Allhide;
Edit3.Show;
Edit4.Show;
Edit1.Show;
Edit2.Show;
Image1.Canvas.Pen.Color:=clBlack;
Image1.Canvas.Ellipse(xb, yb, xr, yr);
end;
procedure TForm10.ToolButton8Click(Sender: TObject);
begin
Allhide;
Edit3.Show;
Edit4.Show;
Edit7.Show;
Edit8.Show;
Edit9.Show;
Edit10.Show;
Image1.Canvas.Pen.Color:=clBlack;
xr:=StrToInt(Edit3.Text);
yr:=StrToInt(Edit4.Text);
ndx:=StrToInt(Edit7.Text);
ndy:=StrToInt(Edit8.Text);
kdx:=StrToInt(Edit9.Text);
kdy:=StrToInt(Edit10.Text);
Image1.Canvas.Arc(xb, yb, xr, yr, ndx, ndy, kdx, kdy);
end;
end.
Вывод: научился подключать инструментальную панель, изучил основные свойства и типы кнопок и их использование для управления вычислительным процессом.