Контрольная работа

Контрольная работа Контрольная работа по Программирование

Работа добавлена на сайт bukvasha.net: 2015-10-25

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 22.11.2024



Министерство образования Республики Беларусь

Белорусский национальный технический университет

Международный институт дистанционного образования
Контрольная

по дисциплине

Программирование

Вариант-11
Выполнил студент Лысов Д.В.

1-го курса группы А6

г. Гродно Дзержинского 135 кв.26

Зачетная книжка №417426

Специальность 53.01.02.

Информационные системы и

технологии
Проверил: Орехво
ГРОДНО 2007

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

Простейшая программа в среде Delphi.

Цель работы: Научиться конструировать главную форму программы простейшими стандартными компонентами.

Постановка задачи:

  1. Создать главную форму и присвоить ей имя, соответствующее лабораторной работе.

  2. Сконструировать простейший калькулятор.

  3. Написать обработчики, реализующие основные арифметические действия калькулятора.

  4. Изучить структуру Unit главной формы.

1)Листинг программы:

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus;
type

TForm1 = class(TForm)

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Button8: TButton;

Button9: TButton;

ButtonPlus: TButton;

ButtonMinus: TButton;

ButtonEnter: TButton;

ButtonC: TButton;

Button0: TButton;

ButtonZ: TButton;

ButtonDel: TButton;

ButtonUmn: TButton;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

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 Button6Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure Button9Click(Sender: TObject);

procedure Button0Click(Sender: TObject);

procedure ButtonZClick(Sender: TObject);

procedure ButtonPlusClick(Sender: TObject);

procedure ButtonMinusClick(Sender: TObject);

procedure ButtonEnterClick(Sender: TObject);

procedure ButtonCClick(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure ButtonDelClick(Sender: TObject);

procedure ButtonUmnClick(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;
implementation

var

accum:real;

oper:integer;

f:integer;
{$R *.dfm}
procedure DoOper;

var

numb: real;

begin

numb := StrToFloat(Form1.Edit1.Text);

case oper of

0: accum := numb;

1: accum := accum + numb;

2: accum := accum - numb;

3: accum := accum/numb;

4: accum := accum*numb;

end;

Form1.Edit1.Text := FloatToStr(accum);

end;
procedure TForm1.FormCreate(Sender: TObject);

begin

oper := 0;

end;
procedure TForm1.Button1Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text := '1';

f := 1;

end

else Edit1.Text := Edit1.Text + '1';

end;
procedure TForm1.Button2Click(Sender: TObject);

begin

if (f = 0)

then begin

Edit1.Text := '2';

f := 1;

end

else Edit1.Text := Edit1.Text + '2';

end;
procedure TForm1.Button3Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text := '3';

f := 1;

end

else Edit1.Text := Edit1.Text + '3';

end;
procedure TForm1.Button4Click(Sender: TObject);

begin

if f = 0 then

begin

Edit1.Text := '4';

f := 1;

end

else Edit1.Text := Edit1.Text + '4';

end;
procedure TForm1.Button5Click(Sender: TObject);

begin

if (f = 0)

then begin

Edit1.Text := '5';

f := 1;

end

else Edit1.Text := Edit1.Text + '5';

end;
procedure TForm1.Button6Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text := '6';

f := 1;

end

else Edit1.Text := Edit1.Text + '6';

end;
procedure TForm1.Button7Click(Sender: TObject);

begin

if f = 0

then begin
Edit1.Text := '7';

f := 1;

end

else Edit1.Text := Edit1.Text + '7';

end;
procedure TForm1.Button8Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text := '8';

f := 1;

end

else Edit1.Text := Edit1.Text + '8';

end;
procedure TForm1.Button9Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text := '9';

f := 1;

end

else Edit1.Text := Edit1.Text + '9';

end;
procedure TForm1.Button0Click(Sender: TObject);

begin

if f = 0

then begin

Edit1.Text := '0';

f := 1;

end

else

if Edit1.Text <> '0'
then Edit1.Text := Edit1.Text + '0';

end;
procedure TForm1.ButtonZClick(Sender: TObject);

begin

if Edit1.Text = '0' then

begin

Edit1.Text := '0,';

f := 1;

end;

if Pos(',',Edit1.Text) = 0 then

Edit1.Text := Edit1.Text + ',';

end;
procedure TForm1.ButtonPlusClick(Sender: TObject);

begin

if f = 0
then oper := 1

else begin

DoOper;

oper :=1;

f:=0;

end;

end;
procedure TForm1.ButtonMinusClick(Sender: TObject);

begin

if f = 0

then oper := 2

else begin

DoOper;

oper :=2;

f:=0;

end;

end;
procedure TForm1.ButtonEnterClick(Sender: TObject);

begin

if f = 0

then oper := 0

else begin

DoOper;

oper :=0;

f:=0;

end;

end;
procedure TForm1.ButtonCClick(Sender: TObject);

begin

Edit1.Text := '0';

accum := 0;

oper := 0;

f := 0;

end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

Key := Chr(0);

end;
procedure TForm1.ButtonDelClick(Sender: TObject);

begin

if f = 0
then oper := 3

else begin

DoOper;

oper :=3;

f:=0;

end;

end;
procedure TForm1.ButtonUmnClick(Sender: TObject);

begin

if f = 0
then oper := 4

else begin

DoOper;

oper :=4;

f:=0;

end;

end;
procedure TForm1.N2Click(Sender: TObject);

begin

Application.MessageBox('Выполнил Денис Лысов', 'Внимание!!!',0);

end;
procedure TForm1.N3Click(Sender: TObject);

begin

close;

end;
end.


2) Пример работы программы:


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

Нахождение значения определенного интеграла методом Симпсона.

Цель работы: Изучить обработчик создания формы.

Постановка задачи:

1.Создать главную форму и присвоить ей имя, соответствующее лабораторной работе.

2.Поместить компоненту Label, в поле которой вывести значение решаемой задачи.

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

4.Изучить структуру Unit главной формы.

1)Листинг программы:

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;
type

TForm1 = class(TForm)

Label1: TLabel;

Label3: TLabel;

Label4: TLabel;

Button2: TButton;

Button3: TButton;

Label5: TLabel;

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;

Col: TColor;

int,intp,pogr,rashcet : Real;

implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);

begin

int:=0;

pogr:=0;

rashcet:=0;

Application.CreateForm(TForm2,Form2);

Form2.ShowModal;

Form2.Free;

end;
procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;
end.
unit Unit2;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, jpeg, ExtCtrls;
type

TForm2 = class(TForm)

Button1: TButton;

Button2: TButton;

Label1: TLabel;

Button4: TButton;

Label2: TLabel;

Label3: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form2: TForm2;
implementation
uses Unit1, Unit3;
{$R *.dfm}
function f(x:real):real;

begin

f:=(1/x)*sin(1/x);

end;
procedure TForm2.Button1Click(Sender: TObject);

begin

Form2.close;

end;
procedure TForm2.Button2Click(Sender: TObject);

var a,b,dx,x,y,y1,y2: real;

n: integer;

begin

a:=1;b:=5;

n:=80;y:=0;

dx:=(b-a)/n;
y1 := 0; x := a + dx;

while x < (b - dx) do begin

y1 := y1 + f(x);

x := x + 2*dx;

end;
y2 := 0; x := a + 2*dx;

while x < (b - 2*dx) do begin

y2 := y2 + f(x);

x := x + 2*dx;

end;
y:=((b-a)/(3*n)) * (f(a)+f(b) + 4*y1 + 2*y2);
int:=y;

rashcet:=rashcet+1;

Label1.Caption:='Ответ на 3 форме';

end;
procedure TForm2.Button4Click(Sender: TObject);

begin
if rashcet>0 then begin

Application.CreateForm(TForm3,Form3);

Form3.ShowModal;

Form3.Free;

end else

Application.MessageBox('Ошибка! Интегралл не рассчитан.', 'Внимание!!!',0);
end;
end.
unit Unit3;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;
type

TForm3 = class(TForm)

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form3: TForm3;
implementation

uses Unit1, Unit2;

{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);

begin

Form3.close;

end;
procedure TForm3.FormCreate(Sender: TObject);

begin

Label2.Caption:=FloatToStr(int);

end;
end.

2) Пример работы программы:






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

Создание нескольких форм и средства управления ими.

Цель работы: Изучить основные свойства и методы, связанные с созданием и активизацией форм

Постановка задачи:

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

  2. Создать вторую форму, предназначенную для задания основных параметров, необходимых для вычисления определенного интеграла методом трапеций:


Вариант

Подынтегральная функция

Интервал интеграла

Количество разбиений



Шаг

Первообразная функция

10



[0,1]

40

0.025



На форме 2 должна быть также кнопка, по которой вычисляется интеграл и абсолютная погрешность, а затем открывается третья форма, на которой отображаются полученные результаты.

3. Каждая из форм должна содержать кнопку, по которой можно вернуться на шаг назад, т.е. на предыдущую форму.

1)Листинг программы:

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus;
type

TForm1 = class(TForm)

Label4: TLabel;

Button1: TButton;

ColorDialog1: TColorDialog;

Button2: TButton;

Button3: TButton;

PopupMenu1: TPopupMenu;

gfjfjggf1: TMenuItem;

gfhf1: TMenuItem;

fghgfhf1: TMenuItem;

fghgfh1: TMenuItem;

Label1: TLabel;

Label3: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;

Col: TColor;

int,intp,pogr,rashcet : Real;

implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);

begin

Col:=Form1.Color;

if ColorDialog1.Execute()=True then

Col:=ColorDialog1.Color;

Form1.Color:=Col;

end;
procedure TForm1.Button2Click(Sender: TObject);

begin

int:=0;

pogr:=0;

rashcet:=0;

Application.CreateForm(TForm2,Form2);

Form2.ShowModal;

Form2.Free;

end;
procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;
end.
unit Unit2;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, jpeg, ExtCtrls;
type

TForm2 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label1: TLabel;

Label2: TLabel;

Button4: TButton;

Label8: TLabel;

Image1: TImage;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form2: TForm2;
implementation
uses Unit1, Unit3;
{$R *.dfm}
function f(x:real):real; {интегрируемая функция}

begin

f:=1/sqrt(1+3*x+2*x*x);

end;
procedure TForm2.Button1Click(Sender: TObject);

begin

Form2.close;

end;
procedure TForm2.Button2Click(Sender: TObject);

var h,i,z,a,b,n:real; {описание переменных}

begin

a:=0;b:=1;

n:=40;z:=0;

h:=(b-a)/n;
i:=a;
while (i<=b) do {цикл расчета по формуле трапеций}

begin

z:=z+h*(f(i)+f(i+h))/2;

i:=i+h;

end; {конец цикла}

int:=z;
rashcet:=rashcet+1;

Label1.Caption:='Ответ на 3 форме';

end;
procedure TForm2.Button4Click(Sender: TObject);

begin
if rashcet>1 then begin

Application.CreateForm(TForm3,Form3);

Form3.ShowModal;

Form3.Free;

end else

Application.MessageBox('Ошибка! Интегралл или погрешность еще не рассчитаны.', 'Внимание!!!',0);
end;
procedure TForm2.Button3Click(Sender: TObject);

var vv,nn:real;

begin

if rashcet=1 then begin

vv:=1/sqrt(2)*ln((1.75/1.25)+(sqrt(3.0625-0.0625)/1.25));

nn:=1/sqrt(2)*ln((0.75/1.25)+(sqrt(0.5625-0.0625)/1.25));

intp:=vv-nn;

pogr:=abs(int-intp);
rashcet:=rashcet+1;

Label2.Caption:='Погрешность рассчитана';

end else

Application.MessageBox('Ошибка! Интегралл еще не рассчитан.', 'Внимание!!!',0);

end;
end.
unit Unit3;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Grids;
type

TForm3 = class(TForm)

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Chart1: TChart;

Series1: TFastLineSeries;

StringGrid1: TStringGrid;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form3: TForm3;
implementation

uses Unit1, Unit2;

{$R *.dfm}
function f(x:real):real; {интегрируемая функция}

begin

f:=1/sqrt(1+3*x+2*x*x);

end;
procedure TForm3.Button1Click(Sender: TObject);

begin

Form3.close;

end;
procedure TForm3.FormCreate(Sender: TObject);

var i:integer;

clr:TColor;

im,ib,a,b:real;

inn:integer;

begin

Label2.Caption:=FloatToStr(int);

Label4.Caption:=FloatToStr(pogr);
Chart1.Series[0].Clear;

a:=0;b:=1;

im:=a;

inn:=1000;

ib:=(b-a)/inn;

for i:=0 to inn-1 do

begin

Chart1.Series[0].AddXY(im,f(im),'',clr);

im:=im+ib;

end;
StringGrid1.Cells[0,0]:='Функция';

StringGrid1.Cells[0,1]:='a=';

StringGrid1.Cells[0,2]:='b=';

StringGrid1.Cells[0,3]:='Интеграл равен';

StringGrid1.Cells[0,4]:='Погрешность';

StringGrid1.Cells[1,0]:='f(x)=1/sqrt(1+3*x+2*x*x)';

StringGrid1.Cells[1,1]:=FloatToStr(a);

StringGrid1.Cells[1,2]:=FloatToStr(b);

StringGrid1.Cells[1,3]:=FloatToStr(int);

StringGrid1.Cells[1,4]:=FloatToStr(pogr);

end;
end.

2) Пример работы программы:








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

Простейший текстовый редактор.

Цель работы: Изучить принципы программирования текстовых редакторов.

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

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;
type

TForm1 = class(TForm)

Label4: TLabel;

Button2: TButton;

Button3: TButton;

Label5: TLabel;

Label6: TLabel;

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;

s: integer;

p: integer;

fN: String[80];

implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);

begin

Application.CreateForm(TForm2,Form2);

Form2.ShowModal;

Form2.Free;

end;
procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;
end.
unit Unit2;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus, ExtCtrls;
type

TForm2 = class(TForm)

Memo1: TMemo;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

Panel1: TPanel;

Button2: TButton;

Button3: TButton;

Panel2: TPanel;

Button1: TButton;

Button4: TButton;

procedure Button1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Memo1KeyPress(Sender: TObject; var Key: Char);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
//////////////////////////////////////////////

procedure save1;

var

f: TextFile; // файл

fName: String[80]; // имя файла

i: integer;

begin
Form2.SaveDialog1.FileName:=fn;
if Form2.SaveDialog1.FileName<>'' then

Form2.SaveDialog1.Execute;

fName := Form2.SaveDialog1.FileName;
if fName<>'' then begin
fName := fName;

fN := fName;
//if StrRScan(fN,'.txt') then

AssignFile(f, fName+'.txt');
try

Rewrite(f); // открыть для перезаписи

// запись в файл

for i:=0 to Form2.Memo1.Lines.Count do // строки нумеруются с нуля

writeln(f, Form2.Memo1.Lines[i]);

s:=0;

Form2.Caption:=fn;

Form2.SaveDialog1.FileName:=fn;

CloseFile(f); // закрыть файл
except

on EInOutError do

begin

ShowMessage('Ошибка доступа к файлу '+ fName);

exit;

end;

end;

end;
end;

///////////////////////////////////////////////////////

procedure save;

var

f: TextFile; // файл

fName: String[80]; // имя файла

i: integer;

begin
if Form2.SaveDialog1.FileName<>'' then

Form2.SaveDialog1.Execute;

fName := Form2.SaveDialog1.FileName;
if fName<>'' then begin
fName := fName+'.txt';

AssignFile(f, fName);
try

Rewrite(f); // открыть для перезаписи

// запись в файл

for i:=0 to Form2.Memo1.Lines.Count do // строки нумеруются с нуля

writeln(f, Form2.Memo1.Lines[i]);

s:=0;

CloseFile(f); // закрыть файл
except

on EInOutError do

begin

ShowMessage('Ошибка доступа к файлу '+ fName);

exit;

end;

end;

end;
end;

/////////////////////////////////////////////////////

procedure open;

var

f: TextFile; // файл

fName: String[80]; // имя файла

buf: String[80]; // буфер для чтения из файла

begin

if Form2.OpenDialog1.FileName<>'' then

Form2.OpenDialog1.FileName:='';

Form2.OpenDialog1.Execute;

fName := Form2.OpenDialog1.FileName;

fn := Form2.OpenDialog1.FileName;

Form2.Caption:=fn;
if fName<>'' then begin

try

AssignFile(f, fName);

Reset(f); // открыть для чтения
if IOResult <> 0 then

begin

MessageDlg('Ошибка доступа к файлу ' + fName,

mtError,[mbOk],0);

exit;

end;

// чтение из файла

while not EOF(f) do

begin

readln(f, buf); // прочитать строку из файла

Form2.Memo1.Lines.Add(buf); // добавить строку в поле Memo1

end;

CloseFile(f); // закрыть файл

except
begin

ShowMessage('Ошибка доступа к файлу '+ fName);

exit;

end;

end;

end;
end;

////////////////////////////////////////////////

procedure TForm2.Button1Click(Sender: TObject);

begin

Form2.close;

end;
procedure TForm2.Button3Click(Sender: TObject);

begin

save1;

end;
procedure TForm2.Button2Click(Sender: TObject);

begin

Form2.Memo1.Clear;

open;

end;
procedure TForm2.FormCreate(Sender: TObject);

begin

s:=0;

p:=0;

p:=p+1;

fn:='Новый'+IntToStr(p);

Form2.Caption:=fn;

end;
procedure TForm2.Memo1KeyPress(Sender: TObject; var Key: Char);

begin

s:=1;

end;
procedure TForm2.Button4Click(Sender: TObject);

begin

if s=1 then save;

p:=p+1;

fn:='Новый'+IntToStr(p);

Form2.Caption:=fn;

Form2.Memo1.Clear;

end;
end.


  1. Пример работы программы:




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

Управление программой с помощью компонентов ScrollBar, RadioButton, CheckBox.

Цель работы: Изучить основные свойства и методы компонентов ScrollBar, RadioButton, CheckBox..

Постановка задачи: Написать программу смешивания цветов. При этом должен быть организован диалог, как показано ниже.

1)Листинг программы:

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, ComCtrls, AppEvnts, StdCtrls;
type

TForm1 = class(TForm)

ApplicationEvents1: TApplicationEvents;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

ScrollBar1: TScrollBar;

ScrollBar2: TScrollBar;

ScrollBar3: TScrollBar;

Panel1: TPanel;

Panel2: TPanel;

CheckBox1: TCheckBox;

CheckBox2: TCheckBox;

CheckBox3: TCheckBox;

RadioGroup1: TRadioGroup;

Panel3: TPanel;

Button1: TButton;

Panel4: TPanel;

Panel5: TPanel;

Panel6: TPanel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure CheckBox2Click(Sender: TObject);

procedure CheckBox3Click(Sender: TObject);

procedure RadioGroup1Click(Sender: TObject);

procedure ScrollBar1Change(Sender: TObject);

procedure ScrollBar2Change(Sender: TObject);

procedure ScrollBar3Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;

rec:trect;

implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);

begin

rec.Left:=0;

rec.Top:=0;

rec.Right:=279;

rec.Bottom:=39;

end;
procedure TForm1.Button1Click(Sender: TObject);

begin

close;

end;
procedure TForm1.CheckBox1Click(Sender: TObject);

begin

if CheckBox1.Checked=False then

ScrollBar1.Enabled:=False else

ScrollBar1.Enabled:=True;

end;
procedure TForm1.CheckBox2Click(Sender: TObject);

begin

if CheckBox2.Checked=False then

ScrollBar2.Enabled:=False else

ScrollBar2.Enabled:=True;

end;
procedure TForm1.CheckBox3Click(Sender: TObject);

begin

if CheckBox3.Checked=False then

ScrollBar3.Enabled:=False else

ScrollBar3.Enabled:=True;

end;
procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

if RadioGroup1.ItemIndex=1 then

Panel3.Visible:=False else

Panel3.Visible:=True;

end;
procedure TForm1.ScrollBar1Change(Sender: TObject);

begin

Panel4.Color:=rgb(ScrollBar1.Position,0,0);

Panel1.Color:=rgb(ScrollBar1.Position,ScrollBar2.Position,ScrollBar3.Position);

Label4.Caption:=inttostr(ScrollBar1.Position);

end;
procedure TForm1.ScrollBar2Change(Sender: TObject);

begin

Panel5.Color:=rgb(0,ScrollBar2.Position,0);

Panel1.Color:=rgb(ScrollBar1.Position,ScrollBar2.Position,ScrollBar3.Position);

Label5.Caption:=inttostr(ScrollBar2.Position);

end;
procedure TForm1.ScrollBar3Change(Sender: TObject);

begin

Panel6.Color:=rgb(0,0,ScrollBar3.Position);

Panel1.Color:=rgb(ScrollBar1.Position,ScrollBar2.Position,ScrollBar3.Position);

Label6.Caption:=inttostr(ScrollBar3.Position);

end;
end.


2) Пример работы программы:



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

Управление программой с помощью меню

Цель работы: Изучить принципы построения меню и организации команд управления программой

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

1)Листинг программы:

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, StdCtrls, jpeg, ExtCtrls;
type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

Label5: TLabel;

N2: TMenuItem;

Label12: TLabel;

Label1: TLabel;

Label3: TLabel;

Label4: TLabel;

Label2: TLabel;

Label6: TLabel;

Label7: TLabel;

N3: TMenuItem;

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;
implementation
{$R *.dfm}
function f(x:real):real; {интегрируемая функция}

begin

f:=(1/x)*sin(1/x);

end;
procedure TForm1.N2Click(Sender: TObject);

var a,b,dx,x,y,y1,y2: real;

n: integer;
begin

a:=1;b:=5;

n:=80;y:=0;

dx:=(b-a)/n;
{Вычисление по методу Симпсона}

y1 := 0; x := a + dx; {x = X1}

while x < (b - dx) do begin {x < Xn}

y1 := y1 + f(x);

x := x + 2*dx; {x = X1, X3, X5 ... Xn-1}

end;
y2 := 0; x := a + 2*dx; {x = X2}

while x < (b - 2*dx) do begin {x < Xn-1}

y2 := y2 + f(x);

x := x + 2*dx; {x = X2, X4, X6 ... Xn-2}

end;
y:=((b-a)/(3*n)) * (f(a)+f(b) + 4*y1 + 2*y2);
Label12.Caption:=FloatToStr(y);
end;
procedure TForm1.N3Click(Sender: TObject);

begin

Close;

end;
end.

2) Пример работы программы:


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

Элементы PopupMenu, ListBox, ComboBox.

Цель работы: Изучить основные свойства и методы компонентов классов TPopupMenu, TListBox, TComboBox.

Постановка задачи: Разработать программу вычисления определенных интегралов, подынтегральные функции которых выбираются из списка. В программе предусмотреть изменение свойств компонентов по правой кнопке. При нажатии правой кнопки предусмотреть возможность открытия ComboBox, из списка которого выбирать название выходной формы.
1)Листинг программы:

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, jpeg, Menus;
type

TForm1 = class(TForm)

Label4: TLabel;

PopupMenu1: TPopupMenu;

N2: TMenuItem;

N3: TMenuItem;

N1: TMenuItem;

ColorDialog1: TColorDialog;

Label1: TLabel;

Label3: TLabel;

ComboBox1: TComboBox;

Button1: TButton;

Label5: TLabel;

Label2: TLabel;

procedure ComboBox1Change(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;

Col: TColor;

h,i,z,a,b:real; {описание переменных}

implementation
{$R *.dfm}
function f(x:real):real; {интегрируемая функция}

begin

If Form1.ComboBox1.Text='f(x)=sin(x)' Then f:=sin(x);

If Form1.ComboBox1.Text='f(x)=cos(x)' Then f:=cos(x);

If Form1.ComboBox1.Text='f(x)=ln(x)' Then f:=ln(x);

end;
procedure TForm1.ComboBox1Change(Sender: TObject);

begin

Label5.Caption:='';

end;
procedure TForm1.Button1Click(Sender: TObject);

begin

h:=(b-a)/80; {начальные значения переменных}

z:=0;

i:=a;
while (i<=b) do {цикл расчета по формуле трапеций}

begin

z:=z+h*(f(i)+f(i+h))/2;

i:=i+h;

end; {конец цикла}
Label5.Caption:=FloatToStr(z);

end;
procedure TForm1.FormCreate(Sender: TObject);

begin

a:=1;b:=2;z:=0;

end;
procedure TForm1.N3Click(Sender: TObject);

begin

if Form1.ComboBox1.Font.Style=[] then

Form1.ComboBox1.Font.Style:=[fsBold] else

Form1.ComboBox1.Font.Style:=[];

end;
procedure TForm1.N2Click(Sender: TObject);

begin

Col:=Form1.Color;

if ColorDialog1.Execute()=True then

Col:=ColorDialog1.Color;

Form1.ComboBox1.Font.Color:=Col;

end;
procedure TForm1.N1Click(Sender: TObject);

begin

Col:=Form1.Color;

if ColorDialog1.Execute()=True then

Col:=ColorDialog1.Color;

Form1.ComboBox1.Color:=Col;

end;

end.

.


2) Пример работы программы:






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

Графические компоненты

Цель работы: Изучить основные графические компоненты, их свойства и методы

Постановка задачи: Разработать программу, содержащую три формы – три способа представления графической информации.

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

На 2-й форме с помощью кнопочного меню рисовать различные графические фигуры посредством компоненты класса TShape.

На 3-й форме реализовать рисование простейшими примитивами, типа линия, прямоугольник, эллипс и т.д.

1)Листинг программы:

unit graf;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus;
type

TForm1 = class(TForm)

Label1: TLabel;

Label3: TLabel;

Label4: TLabel;

MainMenu1: TMainMenu;

N1: TMenuItem;

N11: TMenuItem;

N21: TMenuItem;

N41: TMenuItem;

procedure N41Click(Sender: TObject);

procedure N21Click(Sender: TObject);

procedure N11Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;
implementation

uses unit1,unit3;

{$R *.dfm}
procedure TForm1.N41Click(Sender: TObject);

begin

close;

end;
procedure TForm1.N21Click(Sender: TObject);

begin

Application.CreateForm(TForm3,Form3);

Form3.ShowModal;

Form3.Free;

end;
procedure TForm1.N11Click(Sender: TObject);

begin

Application.CreateForm(TRed,Red);

Red.ShowModal;

Red.Free;

end;
end.

unit Unit3;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls, Buttons;
type

TForm3 = class(TForm)

BitBtn1: TBitBtn;

Shape1: TShape;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

BitBtn5: TBitBtn;

BitBtn6: TBitBtn;

Shape2: TShape;

Shape3: TShape;

Shape4: TShape;

Shape5: TShape;

Shape6: TShape;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure BitBtn5Click(Sender: TObject);

procedure BitBtn6Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.BitBtn1Click(Sender: TObject);

begin

Shape1.Visible:=true;

Shape1.Shape:=stCircle;

Shape2.Visible:=false;

Shape3.Visible:=false;

Shape4.Visible:=false;

Shape5.Visible:=false;

Shape6.Visible:=false;

end;
procedure TForm3.BitBtn2Click(Sender: TObject);

begin

Shape2.Visible:=true;

Shape2.Shape:=stEllipse;

Shape1.Visible:=false;

Shape3.Visible:=false;

Shape4.Visible:=false;

Shape5.Visible:=false;

Shape6.Visible:=false;

end;
procedure TForm3.BitBtn3Click(Sender: TObject);

begin

Shape3.Visible:=true;

Shape3.Shape:=stRectangle;

Shape1.Visible:=false;

Shape2.Visible:=false;

Shape4.Visible:=false;

Shape5.Visible:=false;

Shape6.Visible:=false;

end;
procedure TForm3.BitBtn4Click(Sender: TObject);

begin

Shape4.Visible:=true;

Shape4.Shape:=stRoundRect;

Shape1.Visible:=false;

Shape2.Visible:=false;

Shape3.Visible:=false;

Shape5.Visible:=false;

Shape6.Visible:=false;

end;
procedure TForm3.BitBtn5Click(Sender: TObject);

begin

Shape5.Visible:=true;

Shape5.Shape:=stRoundSquare;

Shape1.Visible:=false;

Shape2.Visible:=false;

Shape3.Visible:=false;

Shape4.Visible:=false;

Shape6.Visible:=false;

end;
procedure TForm3.BitBtn6Click(Sender: TObject);

begin

Shape6.Visible:=true;

Shape6.Shape:=stSquare;

Shape1.Visible:=false;

Shape2.Visible:=false;

Shape3.Visible:=false;

Shape4.Visible:=false;

Shape5.Visible:=false;

end;
procedure TForm3.FormCreate(Sender: TObject);

begin

Shape1.Visible:=true;

Shape1.Shape:=stCircle;

Shape2.Visible:=false;

Shape3.Visible:=false;

Shape4.Visible:=false;

Shape5.Visible:=false;

Shape6.Visible:=false;

end;
end.

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, ExtDlgs;
type

TRed = class(TForm)

Image1: TImage;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

BitBtn5: TBitBtn;

BitBtn6: TBitBtn;

BitBtn8: TBitBtn;

Shape1: TShape;

Shape2: TShape;

Bevel1: TBevel;

ColorDialog1: TColorDialog;

MainMenu1: TMainMenu;

Timer1: TTimer;

Edit3: TEdit;

Edit4: TEdit;

Bevel2: TBevel;

Edit5: TEdit;

Edit6: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit7: TEdit;

Label5: TLabel;

Button1: TButton;

Label6: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Label7: TLabel;

Label8: TLabel;

Edit8: TEdit;

Edit9: TEdit;

Label9: TLabel;

Bevel3: TBevel;

Button2: TButton;

Bevel4: TBevel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Edit10: TEdit;

Edit11: TEdit;

Edit12: TEdit;

Edit13: TEdit;

Button3: TButton;

Bevel5: TBevel;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Edit14: TEdit;

Edit15: TEdit;

Edit16: TEdit;

Edit17: TEdit;

Button4: TButton;

OpenPictureDialog1: TOpenPictureDialog;

SavePictureDialog1: TSavePictureDialog;

File1: TMenuItem;

Exit1: TMenuItem;

N4: TMenuItem;

Save1: TMenuItem;

New1: TMenuItem;

N1: TMenuItem;

BitBtn7: TBitBtn;

procedure polegon();

procedure duga(x1,x2,y1,y2,r: integer);

procedure ellips(xc,yc,enx,eny:integer);

procedure krug(xc,yc, x2, y2:integer);

procedure line(bx:TBitMap;x1, y1, x2, y2:integer);

procedure zakrash(x,y: integer);

procedure FormCreate(Sender: TObject);

procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure BitBtn5Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure BitBtn6Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure BitBtn8Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure Save1Click(Sender: TObject);

procedure Exit1Click(Sender: TObject);

procedure New1Click(Sender: TObject);

procedure BitBtn7Click(Sender: TObject);

private

{ Private declarations }

public

bp:TBitMap;

b1:TBitMap;

b2:TBitMap;

{ Public declarations }

end;
var

Red: TRed;

flag,lin: integer;

X1,Y1: integer;

Xp,Yp,Xp1,Yp1: integer;

ClrFon: TColor;
implementation
{$R *.dfm}

procedure TRed.polegon();

var a,i,j:integer;

x1,x2:integer;
begin

line(b2,Xp,Yp,Xp1,Yp1);

line(b1,Xp,Yp,Xp1,Yp1);

line(bp,Xp,Yp,Xp1,Yp1);

b2.Canvas.CopyMode:=cmSrcCopy;

b2.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

Image1.Canvas.CopyMode:=cmSrcCopy;

Image1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

for j:=0 to 299 do

begin

a:=0;

for i:=0 to 499 do

begin

if (b2.Canvas.Pixels[i,j]<>RGB(255,255,255))and

(b2.Canvas.Pixels[i-1,j]=b2.Canvas.Pixels[i,j]) then a:=a-1;

if b2.Canvas.Pixels[i,j]<>RGB(255,255,255) then

begin

if a=0 then begin a:=1; x1:=i; end else begin a:=2; x2:=i; end;

if a=2 then begin

a:=0;

line(b2,x1,j,x2,j);

end;

end;

end;

end;

Image1.Canvas.CopyMode:=cmSrcAnd;

Image1.Canvas.CopyRect(Rect(0,0,500,300),b2.Canvas,Rect(0,0,500,300));

bp.Canvas.CopyMode:=cmSrcCopy;

bp.Canvas.CopyRect(Rect(0,0,500,300),Image1.Canvas,Rect(0,0,500,300));

b1.Canvas.CopyMode:=cmSrcCopy;

b1.Canvas.CopyRect(Rect(0,0,500,300),Image1.Canvas,Rect(0,0,500,300));

end;
procedure TRed.duga(x1,x2,y1,y2,r: integer);

type s= -1..1;

var

xser,yser: real;

la1,lb1,la2,lb2: real;

xpr,ypr: real;

dlina1{,dlina2}: real;

xmin{,xmax}: integer;

ymin{,ymax}: integer;

xc1,yc1,xc2,yc2,xc,yc: integer;

x,y,di,db,xpr2,ypr2: integer;

t,t2: s;

per1,par1,per2,par2: boolean;

col:TColor;

function sign(d: real): s;

begin

if d<0 then sign:=-1

else if d>0 then sign:=1

else sign:=0;

end;
begin

per1:=false;

par1:=false;

per2:=false;

par2:=false;

col:=Red.Shape1.Brush.Color;

if y1=y2 then

begin

if x1=x2 then

begin

ShowMessage('Вы ввели точку!');

exit;

end;

par1:=true;

end

else if x1=x2 then

per1:=true;
if x1>x2 then xmin:=x2

else xmin:=x1;
if y1>y2 then ymin:=y2

else ymin:=y1;
xser:=abs(x1-x2)/2+xmin;

yser:=abs(y1-y2)/2+ymin;

if (not per1)and(not par1) then

begin

la1:=(y2-y1)/(x2-x1);

lb1:=(y1*x2-x1*y2)/(x2-x1);
la2:=-1/la1;

lb2:=yser-la2*xser;
xpr:=xser;

ypr:=la2*xpr+lb2;

dlina1:=sqrt(sqr(xpr-x1)+sqr(ypr-y1));

While dlina1
begin

xpr:=xpr+1;

ypr:=la2*xpr+lb2;

dlina1:=sqrt(sqr(xpr-x1)+sqr(ypr-y1));

end;

end else

if par1 then

begin

xpr:=xser;

ypr:=yser+sqrt( r*r-(sqr(x2-xser)+sqr(y2-yser)) );

end else

begin

xpr:=xser+sqrt( r*r-(sqr(x2-xser)+sqr(y2-yser)) );

ypr:=yser;

end;
xc1:=round(xpr);

yc1:=round(ypr);
xc2:=round(xser-(xpr-xser));

yc2:=round(yser-(ypr-yser));
if sqrt(sqr(xc1)+sqr(yc1))
begin

xc:=xc1;

yc:=yc1;

end else

begin

xc:=xc2;

yc:=yc2;

end;
x:=0;

y:=r;

di:=2*(1-r);
xpr2:=xc;

ypr2:=yc;

t2:=1;
{рисование центра}

b1.canvas.pen.Width:=1;

b1.canvas.pen.color:=col;

b1.canvas.pixels[xpr2,ypr2]:=col;
if par1 then

if yc
else t:=1;
if per1 then

if xc
else t:=1;
if (not per1)and(not par1) then

begin

t2:=0;

if (xc*la1+lb1-yc)<0

then t:=-1

else t:=1;

end;
// if CheckBox1.Checked then t:=-t;
repeat

if t2=0 then

begin

if t*((xc+x)*la1+lb1-(yc-y))<=0 then b1.canvas.pixels[xpr2+x,ypr2-y]:=col;

if t*((xc+x)*la1+lb1-(yc+y))<=0 then b1.canvas.pixels[xpr2+x,ypr2+y]:=col;

if t*((xc-x)*la1+lb1-(yc-y))<=0 then b1.canvas.pixels[xpr2-x,ypr2-y]:=col;

if t*((xc-x)*la1+lb1-(yc+y))<=0 then b1.canvas.pixels[xpr2-x,ypr2+y]:=col;

end else

if par1 then

begin

if t*((yc-y)-yser)<=0 then b1.canvas.pixels[xpr2+x,ypr2-y]:=col;

if t*((yc+y)-yser)<=0 then b1.canvas.pixels[xpr2+x,ypr2+y]:=col;

if t*((yc-y)-yser)<=0 then b1.canvas.pixels[xpr2-x,ypr2-y]:=col;

if t*((yc+y)-yser)<=0 then b1.canvas.pixels[xpr2-x,ypr2+y]:=col;

end else

begin

if t*((xc+x)-xser)<=0 then b1.canvas.pixels[xpr2+x,ypr2+y]:=col;

if t*((xc+x)-xser)<=0 then b1.canvas.pixels[xpr2+x,ypr2-y]:=col;

if t*((xc-x)-xser)<=0 then b1.canvas.pixels[xpr2-x,ypr2+y]:=col;

if t*((xc-x)-xser)<=0 then b1.canvas.pixels[xpr2-x,ypr2-y]:=col;

end;
if di<0 then

begin

db:=2*di+2*y-1;

if db<=0 then begin

x:=x+1;

di:=di+2*x+1;

end

else begin

x:=x+1;

y:=y-1;

di:=di+2*(x-y+1);

end

end else if di>0 then

begin

db:=2*di-2*x-1;

if db<0 then begin

x:=x+1;

y:=y-1;

di:=di+2*(x-y+1);

end

else begin

y:=y-1;

di:=di-2*y+1;

end

end else begin

x:=x+1;

y:=y-1;

di:=di+2*(x-y+1);

end;
until y<0;
end;
procedure TRed.Ellips(xc,yc,enx,eny:integer);

var

x,y,a,b:integer;

a2,b2,dds,ddt,dxt,t,s,e,ca,cd,indx:longint;

col:TColor;

begin
col:=Red.Shape1.Brush.Color;

a:=abs(enx-xc);

b:=abs(eny-yc);

a2:=a*a;

b2:=b*b;

dds:=4*a2;

ddt:=4*b2;

dxt:=round(a2/sqrt(a2+b2));

t:=0;

s:=-4*a2*b;

e:=round((-s/2)-2*b2-a2);

ca:=-6*b2;

cd:=ca-4*a2;

x:=xc;

y:=yc+b;

b1.canvas.pixels[x,y]:=col;

b1.canvas.pixels[2*xc-x,2*yc-y]:=col;

b1.canvas.pixels[x,2*yc-y]:=col;

b1.canvas.pixels[2*xc-x,y]:=col;

for indx:=1 to dxt do

begin

x:=x+1;

if e>=0 then e:=e+t+ca

else

begin

y:=y-1;

e:=e+t-s+cd;

s:=s+dds;

end;

t:=t-ddt;

b1.canvas.pixels[x,y]:=col;

b1.canvas.pixels[2*xc-x,2*yc-y]:=col;

b1.canvas.pixels[x,2*yc-y]:=col;

b1.canvas.pixels[2*xc-x,y]:=col;

end;

dxt:=abs(y-yc);

e:=round(e-(t/2+s/2+b2+a2));

ca:=-6*a2;

cd:=ca-4*b2;

for indx:=1 to dxt do

begin

y:=y-1;

if e<=0 then e:=e-s+ca

else

begin

x:=x+1;

e:=e-s+t+cd;

t:=t-ddt;

end;

s:=s+dds;

b1.canvas.pixels[x,y]:=col;

b1.canvas.pixels[2*xc-x,2*yc-y]:=col;

b1.canvas.pixels[x,2*yc-y]:=col;

b1.canvas.pixels[2*xc-x,y]:=col;

end;

end;
procedure TRed.krug(xc,yc, x2, y2:integer);

var

x3,y3,i,dxt: integer;

r2,dst,t,s,e,ca,cd,indx: double;

radius:integer;

col:TColor;

begin

col:=Red.Shape1.Brush.Color;

radius:=Round(sqrt((x2-xc)*(x2-xc)+(y2-yc)*(y2-yc)));

r2:=radius*radius;

dst:= 4*r2;

dxt:=Round(radius/1.414213562373);

t:=0;

s:=s-4*r2*radius;

e:=(-s/2)-3*r2;

ca:=ca-6*r2;

cd:=-10*r2;

x3:=0;

y3:=radius;

b1.Canvas.Pixels[xc,yc+radius]:=col;

b1.Canvas.Pixels[xc,yc-radius]:=col;

b1.Canvas.Pixels[xc+radius,yc]:=col;

b1.Canvas.Pixels[xc-radius,yc]:=col;

for i:=1 to dxt do

begin

x3:=x3+1;

if (e>=0) then e:=e+t+ca

else begin

y3:=y3-1;

e:=e+t-s+cd;

s:=s+dst;

end;

t:=t-dst;

b1.Canvas.Pixels[xc+x3,yc+y3]:=col;

b1.Canvas.Pixels[xc+y3,yc+x3]:=col;

b1.Canvas.Pixels[xc+y3,yc-x3]:=col;

b1.Canvas.Pixels[xc+x3,yc-y3]:=col;

b1.Canvas.Pixels[xc-x3,yc-y3]:=col;

b1.Canvas.Pixels[xc-y3,yc-x3]:=col;

b1.Canvas.Pixels[xc-y3,yc+x3]:=col;

b1.Canvas.Pixels[xc-x3,yc+y3]:=col;

end;

end;
procedure TRed.zakrash(x,y: integer);

var xl,xr: integer;

clr1: TColor;

begin

xl:=x;

xr:=x;
repeat

xl:=xl-1;

clr1:=bp.canvas.pixels[xl,y];

until (clr1<>ClrFon);
repeat

xr:=xr+1;

clr1:=bp.canvas.pixels[xr,y];

until (clr1<>ClrFon);
inc(xl);

dec(xr);
bp.canvas.MoveTo(xl,y);

bp.canvas.LineTo(xr+1,y);
x:=xl;

while x<=xr do

begin

clr1:=bp.canvas.pixels[x,y+1];

if (clr1=ClrFon) then

zakrash(x,y+1);

clr1:=bp.canvas.pixels[x,y-1];

if (clr1=ClrFon) then

zakrash(x,y-1);

inc(x);

end;

end;
procedure TRed.FormCreate(Sender: TObject);

begin

bp := TBitmap.Create;

b1 := TBitmap.Create;

b2 := TBitmap.Create;

bp.Width:=500;

bp.Height:=300;

b1.Width:=500;

b1.Height:=300;

b2.Width:=500;

b2.Height:=300;

lin:=0; flag:=0;

bp.Canvas.MoveTo(0,0);

bp.Canvas.LineTo(0,299);

bp.Canvas.LineTo(499,299);

bp.Canvas.LineTo(499,0);

bp.Canvas.LineTo(0,0);

Image1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

end;
procedure TRed.line(bx:TBitMap;x1, y1, x2, y2:integer);

type s= -1..1;

var

s1,s2: s;

dy,dx,x,y: integer;

f,i,e,wr: integer;

function sign(d: integer): s;

begin

if d<0 then sign:=-1

else if d>0 then sign:=1

else sign:=0;

end;

begin
dx:=abs(x2-x1);

dy:=abs(y2-y1);

s1:=sign(x2-x1);

s2:=sign(y2-y1);
if dy>dx then

begin

wr:=dx;

dx:=dy;

dy:=wr;

f:=1;

end else f:=0;

e:=2*dy-dx;

for i:=1 to dx do

begin

{ x:=x1+PaintBox1.width div 2;

y:=PaintBox1.height div 2 - y1;}

bx.Canvas.Pixels[x1,y1]:= Red.Shape1.Brush.Color;
while e>=0 do

begin

if f=1 then x1:=x1+s1

else y1:=y1+s2;

e:=e-2*dx;

end;
if f=1 then y1:=y1+s2

else x1:=x1+s1;
e:=e+2*dy;

end;

x:=x2+Image1.width div 2;

y:=Image1.height div 2 - y2;

bx.Canvas.Pixels[x1,y1]:= Red.Shape1.Brush.Color;
end;
procedure TRed.Image1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if flag=1 then

begin

if Shape1.Brush.Color<>bp.canvas.pixels[x,y] then

begin

bp.canvas.pen.color:=Shape1.Brush.Color;

ClrFon:=bp.canvas.pixels[x,y];

zakrash(X,Y);

Image1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

end;

end else

if flag=6 then

begin

//image1.Canvas.CopyMode:=cmSrcAnd;

if lin=0 then begin

b2.Canvas.Brush.Color:=RGB(255,255,255);

b2.Canvas.FillRect(Rect(0,0,500,300));

b1.Canvas.CopyRect(Rect(0,0,500,300),b2.Canvas,Rect(0,0,500,300));

bp.Canvas.CopyRect(Rect(0,0,500,300),Image1.Canvas,Rect(0,0,500,300));

X1:=X; Y1:=Y; lin:=1;

Xp:=X; Yp:=Y;

end;
end

else

begin

image1.Canvas.CopyMode:=cmSrcCopy;

b1.Canvas.CopyMode:=cmSrcCopy;

bp.Canvas.CopyMode:=cmSrcCopy;

lin:=1; X1:=X; Y1:=Y;

end;

end;
procedure TRed.Image1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin
if (flag=3)and(lin=1) then

begin

line(b1,X1,Y1,X,Y);

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

end;

if (flag=8)and(lin=1) then

begin

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

end;

if (flag=4)and(lin=1) then

begin

//krug(X1,Y1,X,Y);

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

end;

if (flag=5)and(lin=1) then

begin

ellips(X1,Y1,X,Y);

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

end;

if (flag=7)and(lin=1) then

begin

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(X1,Y1,X,Y));

bp.Canvas.CopyRect(Rect(0,0,500,300),Image1.Canvas,Rect(0,0,500,300));

bp.Canvas.Pen.Color:=RGB(0,0,0);

bp.Canvas.MoveTo(0,0);

bp.Canvas.LineTo(0,299);

bp.Canvas.LineTo(499,299);

bp.Canvas.LineTo(499,0);

bp.Canvas.LineTo(0,0);

Image1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));
end;

if (flag=6)and(lin=1) then

begin

line(b2,X1,Y1,X,Y);

line(b1,X1,Y1,X,Y);

X1:=X; Y1:=Y;

Xp1:=X; Yp1:=Y;

image1.Canvas.Pixels[x,y]:=Red.Shape1.Brush.Color;

//image1.Canvas.CopyMode:=cmSrcAnd;

//Image1.Canvas.CopyRect(Rect(0,0,500,300),b2.Canvas,Rect(0,0,500,300));

//image1.Canvas.CopyMode:=cmMergeCopy;

bp.Canvas.CopyRect(Rect(0,0,500,300),image1.Canvas,Rect(0,0,500,300));

end else lin:=0;
end;
procedure TRed.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

var xx,yy:integer;

begin

if (flag=2)and(lin=1) then

begin

bp.Canvas.Pen.Color:=Shape1.Brush.Color;

bp.Canvas.MoveTo(X1,Y1);

bp.Canvas.LineTo(X,Y);

X1:=X; Y1:=Y;

Image1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

end;

if (flag=3)and(lin=1) then

begin

line(b1,X1,Y1,X,Y);

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

b1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

end;

if (flag=4)and(lin=1) then

begin

b1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

krug(X1,Y1,x,y);

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

end;

if (flag=8)and(lin=1) then

begin

b1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

duga(X1,x,Y1,y,StrToInt(Edit7.Text));

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

end;

if (flag=5)and(lin=1) then

begin

ellips(X1,Y1,x,y);

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

b1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

end;

if (flag=7)and(lin=1) then

begin

line(b1,X1,Y1,X,Y1);

line(b1,X1,Y1,X1,Y);

line(b1,X,Y1,X,Y);

line(b1,X1,Y,X,Y);

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

b1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

end;

if (flag=6)and(lin=1) then

begin

//Image1.Canvas.CopyMode:=cmSrcCopy;

//Image1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

b2.Canvas.CopyMode:=cmMergeCopy;

b2.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

line(b2,X1,Y1,X,Y);

//Image1.Canvas.CopyMode:=cmSrcAnd;

//Image1.Canvas.CopyRect(Rect(0,0,500,300),b2.Canvas,Rect(0,0,500,300));

end;
end;
procedure TRed.BitBtn5Click(Sender: TObject);

begin

flag:=1; // Заливка

lin:=0;

end;
procedure TRed.BitBtn1Click(Sender: TObject);

begin

flag:=2;

if lin=1 then

begin

lin:=0;

polegon();

end;

end;
procedure TRed.BitBtn2Click(Sender: TObject);

begin

flag:=3;

if lin=1 then

begin

lin:=0;

polegon();

end;

end;
procedure TRed.Timer1Timer(Sender: TObject);

var r:Trect;

begin

r.Left:=0;

r.Top:=0;

r.Right:=500;

r.Bottom:=300;

Image1.Canvas.BrushCopy(r,bp,r,RGB(255,255,255));
end;
procedure TRed.Shape1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

ColorDialog1.Execute();

Shape1.Brush.Color:=ColorDialog1.Color;

end;
procedure TRed.BitBtn3Click(Sender: TObject);

begin

flag:=4;

if lin=1 then

begin

lin:=0;

polegon();

end;

end;
procedure TRed.BitBtn4Click(Sender: TObject);

begin

flag:=5;

if lin=1 then

begin

lin:=0;

polegon();

end;
end;
procedure TRed.BitBtn6Click(Sender: TObject);

begin

flag:=6;

if lin=1 then

begin

lin:=0;

polegon();

end;

end;
procedure TRed.Button1Click(Sender: TObject);

var

x1,y1,x2,y2,r:integer;

begin

b1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

x1:=StrToInt(Edit3.Text)+250;

y1:=StrToInt(Edit4.Text)*(-1)+150;

x2:=StrToInt(Edit6.Text)+250;

y2:=StrToInt(Edit5.Text)*(-1)+150;

r:=StrToInt(Edit7.Text);

duga(x1,x2,y1,y2,r);

bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

end;
procedure TRed.BitBtn8Click(Sender: TObject);

begin

flag:=7;

if lin=1 then

begin

lin:=0;

polegon();

end;

end;
procedure TRed.Button2Click(Sender: TObject);

var

x1,y1,x2,y2:integer;

begin

b1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

x1:=StrToInt(Edit1.Text)+250;

y1:=StrToInt(Edit2.Text)*(-1)+150;

x2:=StrToInt(Edit8.Text)+250;

y2:=StrToInt(Edit9.Text)*(-1)+150;

line(b1,x1,y1,x2,y2);

bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

end;
procedure TRed.Button3Click(Sender: TObject);

var

x1,y1,x2,y2:integer;

begin

b1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

x1:=StrToInt(Edit10.Text)+250;

y1:=StrToInt(Edit11.Text)*(-1)+150;

x2:=StrToInt(Edit13.Text)+250;

y2:=StrToInt(Edit12.Text)*(-1)+150;

ellips(x1,y1,x2,y2);

bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

end;
procedure TRed.Button4Click(Sender: TObject);

var

x1,y1,x2,y2:integer;

begin

b1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));

x1:=StrToInt(Edit14.Text)+250;

y1:=StrToInt(Edit15.Text)*(-1)+150;

x2:=StrToInt(Edit17.Text)+250;

y2:=StrToInt(Edit16.Text)*(-1)+150;

krug(x1,y1,x2,y2);

bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

end;
procedure TRed.N1Click(Sender: TObject);

begin

if Red.OpenPictureDialog1.Execute then

begin

b1.LoadFromFile(Red.OpenPictureDialog1.FileName);

b1.Width:=500;

b1.Height:=300;

bp.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

Image1.Canvas.CopyRect(Rect(0,0,500,300),b1.Canvas,Rect(0,0,500,300));

Image1.Width:=500;

Image1.Height:=300;

bp.Width:=500;

bp.Height:=300;
end;

end;
procedure TRed.Save1Click(Sender: TObject);

begin

if Red.SavePictureDialog1.Execute() then

begin

Red.image1.Picture.SaveToFile(SavePictureDialog1.FileName+'.bmp');

end;

end;
procedure TRed.Exit1Click(Sender: TObject);

begin

Red.Close;

end;
procedure TRed.New1Click(Sender: TObject);

begin

b2.Canvas.Brush.Color:=RGB(255,255,255);

b2.Canvas.FillRect(Rect(0,0,500,300));

bp.Canvas.Brush.Color:=RGB(255,255,255);

bp.Canvas.FillRect(Rect(0,0,500,300));

b1.Canvas.Brush.Color:=RGB(255,255,255);

b1.Canvas.FillRect(Rect(0,0,500,300));

b2.Canvas.MoveTo(0,0);

b2.Canvas.LineTo(0,299);

b2.Canvas.LineTo(499,299);

b2.Canvas.LineTo(499,0);

b2.Canvas.LineTo(0,0);
b1.Canvas.CopyRect(Rect(0,0,500,300),b2.Canvas,Rect(0,0,500,300));

bp.Canvas.CopyRect(Rect(0,0,500,300),b2.Canvas,Rect(0,0,500,300));

Image1.Canvas.CopyRect(Rect(0,0,500,300),bp.Canvas,Rect(0,0,500,300));
end;
procedure TRed.BitBtn7Click(Sender: TObject);

begin

flag:=8;

if lin=1 then

begin

lin:=0;

polegon();

end;

end;
end

2) Пример работы программы:





Лабораторная работа №9,10

Графическое представление данных

Цель работы: Изучить возможности вывода результатов моделирования временных процессов в виде графиков

Постановка задачи: Разработать программу отображения результатов вычисления определенного интеграла (из работы №3) в графической форме с помощью компонента TChar.

Табличное представление данных

Цель работы: Изучить способы построения таблиц и использование их для ввода и вывода данных

Постановка задачи: Дополнить программу из работы №9 выходными результатами в табличной форме
1)Листинг программы:

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus;
type

TForm1 = class(TForm)

Label4: TLabel;

Button1: TButton;

ColorDialog1: TColorDialog;

Button2: TButton;

Button3: TButton;

PopupMenu1: TPopupMenu;

gfjfjggf1: TMenuItem;

gfhf1: TMenuItem;

fghgfhf1: TMenuItem;

fghgfh1: TMenuItem;

Label1: TLabel;

Label3: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;

Col: TColor;

int,intp,pogr,rashcet : Real;

implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);

begin

Col:=Form1.Color;

if ColorDialog1.Execute()=True then

Col:=ColorDialog1.Color;

Form1.Color:=Col;

end;
procedure TForm1.Button2Click(Sender: TObject);

begin

int:=0;

pogr:=0;

rashcet:=0;

Application.CreateForm(TForm2,Form2);

Form2.ShowModal;

Form2.Free;

end;
procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;
end.
unit Unit2;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, jpeg, ExtCtrls;
type

TForm2 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label1: TLabel;

Label2: TLabel;

Button4: TButton;

Label8: TLabel;

Image1: TImage;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form2: TForm2;
implementation
uses Unit1, Unit3;
{$R *.dfm}
function f(x:real):real; {интегрируемая функция}

begin

f:=1/sqrt(1+3*x+2*x*x);

end;
procedure TForm2.Button1Click(Sender: TObject);

begin

Form2.close;

end;
procedure TForm2.Button2Click(Sender: TObject);

var h,i,z,a,b,n:real; {описание переменных}

begin

a:=0;b:=1;

n:=40;z:=0;

h:=(b-a)/n;
i:=a;
while (i<=b) do {цикл расчета по формуле трапеций}

begin

z:=z+h*(f(i)+f(i+h))/2;

i:=i+h;

end; {конец цикла}

int:=z;
rashcet:=rashcet+1;

Label1.Caption:='Ответ на 3 форме';

end;
procedure TForm2.Button4Click(Sender: TObject);

begin
if rashcet>1 then begin

Application.CreateForm(TForm3,Form3);

Form3.ShowModal;

Form3.Free;

end else

Application.MessageBox('Ошибка! Интегралл или погрешность еще не рассчитаны.', 'Внимание!!!',0);
end;
procedure TForm2.Button3Click(Sender: TObject);

var vv,nn:real;

begin

if rashcet=1 then begin

vv:=1/sqrt(2)*ln((1.75/1.25)+(sqrt(3.0625-0.0625)/1.25));

nn:=1/sqrt(2)*ln((0.75/1.25)+(sqrt(0.5625-0.0625)/1.25));

intp:=vv-nn;

pogr:=abs(int-intp);
rashcet:=rashcet+1;

Label2.Caption:='Погрешность рассчитана';

end else

Application.MessageBox('Ошибка! Интегралл еще не рассчитан.', 'Внимание!!!',0);

end;
end.
unit Unit3;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Grids;
type

TForm3 = class(TForm)

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Chart1: TChart;

Series1: TFastLineSeries;

StringGrid1: TStringGrid;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form3: TForm3;
implementation

uses Unit1, Unit2;

{$R *.dfm}
function f(x:real):real; {интегрируемая функция}

begin

f:=1/sqrt(1+3*x+2*x*x);

end;
procedure TForm3.Button1Click(Sender: TObject);

begin

Form3.close;

end;
procedure TForm3.FormCreate(Sender: TObject);

var i:integer;

clr:TColor;

im,ib,a,b:real;

inn:integer;

begin

Label2.Caption:=FloatToStr(int);

Label4.Caption:=FloatToStr(pogr);
Chart1.Series[0].Clear;

a:=0;b:=1;

im:=a;

inn:=1000;

ib:=(b-a)/inn;

for i:=0 to inn-1 do

begin

Chart1.Series[0].AddXY(im,f(im),'',clr);

im:=im+ib;

end;
StringGrid1.Cells[0,0]:='Функция';

StringGrid1.Cells[0,1]:='a=';

StringGrid1.Cells[0,2]:='b=';

StringGrid1.Cells[0,3]:='Интеграл равен';

StringGrid1.Cells[0,4]:='Погрешность';

StringGrid1.Cells[1,0]:='f(x)=1/sqrt(1+3*x+2*x*x)';

StringGrid1.Cells[1,1]:=FloatToStr(a);

StringGrid1.Cells[1,2]:=FloatToStr(b);

StringGrid1.Cells[1,3]:=FloatToStr(int);

StringGrid1.Cells[1,4]:=FloatToStr(pogr);

end;
end.

2) Пример работы программы:



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

Управление программой с помощью панели инструментов

Цель работы: Научиться подключать инструментальную панель, изучить основные свойства и типы кнопок и использование их для управления вычислительным процессом

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

1)Листинг программы:

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, ToolWin, StdCtrls, ExtCtrls, ImgList, jpeg;
type

TForm1 = class(TForm)

Label4: TLabel;

Label1: TLabel;

Label3: TLabel;

ToolBar1: TToolBar;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton3: TToolButton;

ToolButton4: TToolButton;

ToolButton5: TToolButton;

RadioGroup1: TRadioGroup;

Edit1: TEdit;

Button1: TButton;

ImageList1: TImageList;

Label8: TLabel;

Image1: TImage;

procedure ToolButton1Click(Sender: TObject);

procedure ToolButton3Click(Sender: TObject);

procedure ToolButton5Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;

Check: Byte;

implementation

{$R *.dfm}
function AbsReal(X : Extended):Extended;

begin

Result := Abs(X);

end;
function F(X : Double):Double;

begin

Result:=1/sqrt(1+3*x+2*x*x);

end;
function IntegralRect(a : Double; b : Double; Epsilon : Double):Double;

var

i : Integer;

n : Integer;

h : Double;

s1 : Double;

s2 : Double;

begin

n := 1;

h := b-a;

s2 := h*F((a+b)/2);

repeat

n := 2*n;

s1 := s2;

h := h/2;

s2 := 0;

i := 1;

repeat

s2 := s2+F(a+h/2+h*(i-1));

i := i+1;

until not (i<=n);

s2 := s2*h;

until not (AbsReal(s2-s1)>3*Epsilon);

Result := s2;

end;
function IntegralTrap(a : Double; b : Double; Epsilon : Double):Double;

var

i : Integer;

n : Integer;

h : Double;

s1 : Double;

s2 : Double;

begin

n := 1;

h := b-a;

s2 := h*(F(a)+F(b))/2;

repeat

s1 := s2;

s2 := 0;

i := 1;

repeat

s2 := s2+F(a-h/2+h*i);

i := i+1;

until not (i<=n);

s2 := s1/2+s2*h/2;

n := 2*n;

h := h/2;

until not (AbsReal(s2-s1)>3*Epsilon);

Result := s2;

end;
function IntegralSimps(a : Double; b : Double; Epsilon : Double):Double;

var

h : Double;

s : Double;

s1 : Double;

s2 : Double;

s3 : Double;

x : Double;

begin

s2 := 1;

h := b-a;

s := F(a)+F(b);

repeat

s3 := s2;

h := h/2;

s1 := 0;

x := a+h;

repeat

s1 := s1+2*F(x);

x := x+2*h;

until not (x
s := s+s1;

s2 := (s+s1)*h/3;

x := AbsReal(s3-s2)/15;

until not (x>Epsilon);

Result := s2;

end;
procedure TForm1.ToolButton1Click(Sender: TObject);

begin

RadioGroup1.ItemIndex:=0;

Check:=1;

form1.Edit1.Text:='';

end;
procedure TForm1.ToolButton3Click(Sender: TObject);

begin

RadioGroup1.ItemIndex:=1;

Check:=2;

form1.Edit1.Text:='';

end;
procedure TForm1.ToolButton5Click(Sender: TObject);

begin

RadioGroup1.ItemIndex:=2;

Check:=3;

form1.Edit1.Text:='';

end;
procedure TForm1.Button1Click(Sender: TObject);

var s:String ;

begin

case Check of

1:str(IntegralRect(0,1,0.0001):10:7,s);

2:str(IntegralTrap(0,1,0.0001):10:7,s);

3:str(IntegralSimps(0,1,0.0001):10:7,s);

end ;

form1.Edit1.Text:=s;

end;
procedure TForm1.FormCreate(Sender: TObject);

begin

Check:=1;

end;
end


2) Пример работы программы:






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

Стандартные диалоговые компоненты

Цель работы: Изучить способы работы с основными стандартными диалоговыми компонентами

Постановка задачи: Разработать программу, в которой предусмотреть сохранение значения определенного интеграла и его графического образа в файле. При помощи локального меню предоставить также возможность чтения образа интеграла, ранее сохраненного в файле, в компоненту класса TImage.

1)Листинг программы:

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Menus;
type

TForm1 = class(TForm)

Label4: TLabel;

Button1: TButton;

ColorDialog1: TColorDialog;

Button2: TButton;

Button3: TButton;

PopupMenu1: TPopupMenu;

gfjfjggf1: TMenuItem;

gfhf1: TMenuItem;

fghgfhf1: TMenuItem;

fghgfh1: TMenuItem;

Label1: TLabel;

Label3: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;

Col: TColor;

int,intp,pogr,rashcet : Real;

implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);

begin

Col:=Form1.Color;

if ColorDialog1.Execute()=True then

Col:=ColorDialog1.Color;

Form1.Color:=Col;

end;
procedure TForm1.Button2Click(Sender: TObject);

begin

int:=0;

pogr:=0;

rashcet:=0;

Application.CreateForm(TForm2,Form2);

Form2.ShowModal;

Form2.Free;

end;
procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;
end.
unit Unit2;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, jpeg, ExtCtrls;
type

TForm2 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label1: TLabel;

Label2: TLabel;

Button4: TButton;

Label8: TLabel;

Image1: TImage;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form2: TForm2;
implementation
uses Unit1, Unit3;
{$R *.dfm}
function f(x:real):real; {интегрируемая функция}

begin

f:=1/sqrt(1+3*x+2*x*x);

end;
procedure TForm2.Button1Click(Sender: TObject);

begin

Form2.close;

end;
procedure TForm2.Button2Click(Sender: TObject);

var h,i,z,a,b,n:real; {описание переменных}

begin

a:=0;b:=1;

n:=40;z:=0;

h:=(b-a)/n;
i:=a;
while (i<=b) do {цикл расчета по формуле трапеций}

begin

z:=z+h*(f(i)+f(i+h))/2;

i:=i+h;

end; {конец цикла}

int:=z;
rashcet:=rashcet+1;

Label1.Caption:='Ответ на 3 форме';

end;
procedure TForm2.Button4Click(Sender: TObject);

begin
if rashcet>1 then begin

Application.CreateForm(TForm3,Form3);

Form3.ShowModal;

Form3.Free;

end else

Application.MessageBox('Ошибка! Интегралл или погрешность еще не рассчитаны.', 'Внимание!!!',0);
end;
procedure TForm2.Button3Click(Sender: TObject);

var vv,nn:real;

begin

if rashcet=1 then begin

vv:=1/sqrt(2)*ln((1.75/1.25)+(sqrt(3.0625-0.0625)/1.25));

nn:=1/sqrt(2)*ln((0.75/1.25)+(sqrt(0.5625-0.0625)/1.25));

intp:=vv-nn;

pogr:=abs(int-intp);
rashcet:=rashcet+1;

Label2.Caption:='Погрешность рассчитана';

end else

Application.MessageBox('Ошибка! Интегралл еще не рассчитан.', 'Внимание!!!',0);

end;
end.
unit Unit3;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Menus,

ExtDlgs;
type

TForm3 = class(TForm)

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Chart1: TChart;

Series1: TFastLineSeries;

Image1: TImage;

OpenPictureDialog1: TOpenPictureDialog;

SaveDialog1: TSaveDialog;

MainMenu1: TMainMenu;

N1: TMenuItem;

N3: TMenuItem;

N2: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form3: TForm3;
implementation

uses Unit1, Unit2;

{$R *.dfm}
function f(x:real):real; {интегрируемая функция}

begin

f:=1/sqrt(1+3*x+2*x*x);

end;
procedure TForm3.Button1Click(Sender: TObject);

begin

Form3.close;

end;
procedure TForm3.FormCreate(Sender: TObject);

var i:integer;

clr:TColor;

im,ib,a,b:real;

inn:integer;

begin

Label2.Caption:=FloatToStr(int);

Label4.Caption:=FloatToStr(pogr);
Chart1.Series[0].Clear;

a:=1;b:=2;

im:=a;

inn:=1000;

ib:=(b-a)/inn;

for i:=0 to inn-1 do

begin

Chart1.Series[0].AddXY(im,f(im),'',clr);

im:=im+ib;

end;

end;
procedure TForm3.N3Click(Sender: TObject);

begin

SaveDialog1.InitialDir:=extractfilepath(application.ExeName);

if savedialog1.Execute then

begin

if extractfileExt(SaveDialog1.FileName)<>'.bmp' then SaveDialog1.FileName:=SaveDialog1.FileName+'.bmp';

Chart1.SaveToBitmapFile(SaveDialog1.FileName);

end;

end;
procedure TForm3.N2Click(Sender: TObject);

begin

SaveDialog1.InitialDir:=extractfilepath(application.ExeName);

if OpenPictureDialog1.Execute then

Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

end;
end.

2) Пример работы программы:


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

Создание многостраничного документа

Цель работы: Изучить компоненты TPageControl, TTabSheet

Постановка задачи: Разработать программу ввода данных, выбора метода расчета, расчета и представления результатов в табличной и графической формах на примере вычисления определенного интеграла, реализуя отдельные вычислительные шаги на различных закладках многостраничного документа.

1)Листинг программы:

unit Unit1;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart,

Grids;
type

TForm1 = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

TabSheet4: TTabSheet;

ComboBox1: TComboBox;

RadioGroup1: TRadioGroup;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Edit1: TEdit;

Label1: TLabel;

Chart1: TChart;

Series1: TFastLineSeries;

StringGrid1: TStringGrid;

Button8: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

procedure RadioGroup1Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;
var

Form1: TForm1;

a,b:real;

implementation
{$R *.dfm}
function AbsReal(X : Extended):Extended;

begin

Result := Abs(X);

end;
function F(X : Double):Double;

begin

If Form1.ComboBox1.Text='f(x)=sin(x)' Then Result:=sin(x);

If Form1.ComboBox1.Text='f(x)=cos(x)' Then Result:=cos(x);

If Form1.ComboBox1.Text='f(x)=ln(x)' Then Result:=ln(x);

end;
function IntegralRect(a : Double; b : Double; Epsilon : Double):Double;

var

i : Integer;

n : Integer;

h : Double;

s1 : Double;

s2 : Double;

begin

n := 1;

h := b-a;

s2 := h*F((a+b)/2);

repeat

n := 2*n;

s1 := s2;

h := h/2;

s2 := 0;

i := 1;

repeat

s2 := s2+F(a+h/2+h*(i-1));

i := i+1;

until not (i<=n);

s2 := s2*h;

until not (AbsReal(s2-s1)>3*Epsilon);

Result := s2;

end;
function IntegralTrap(a : Double; b : Double; Epsilon : Double):Double;

var

i : Integer;

n : Integer;

h : Double;

s1 : Double;

s2 : Double;

begin

n := 1;

h := b-a;

s2 := h*(F(a)+F(b))/2;

repeat

s1 := s2;

s2 := 0;

i := 1;

repeat

s2 := s2+F(a-h/2+h*i);

i := i+1;

until not (i<=n);

s2 := s1/2+s2*h/2;

n := 2*n;

h := h/2;

until not (AbsReal(s2-s1)>3*Epsilon);

Result := s2;

end;
function IntegralSimps(a : Double; b : Double; Epsilon : Double):Double;

var

h : Double;

s : Double;

s1 : Double;

s2 : Double;

s3 : Double;

x : Double;

begin

s2 := 1;

h := b-a;

s := F(a)+F(b);

repeat

s3 := s2;

h := h/2;

s1 := 0;

x := a+h;

repeat

s1 := s1+2*F(x);

x := x+2*h;

until not (x
s := s+s1;

s2 := (s+s1)*h/3;

x := AbsReal(s3-s2)/15;

until not (x>Epsilon);

Result := s2;

end;
procedure TForm1.Button1Click(Sender: TObject);

begin

PageControl1.ActivePage:=TabSheet2;

end;
procedure TForm1.Button2Click(Sender: TObject);

begin

PageControl1.ActivePage:=TabSheet3;

end;
procedure TForm1.Button5Click(Sender: TObject);

begin

PageControl1.ActivePage:=TabSheet2;

end;
procedure TForm1.Button6Click(Sender: TObject);

begin

PageControl1.ActivePage:=TabSheet3;

end;
procedure TForm1.Button4Click(Sender: TObject);

begin

PageControl1.ActivePage:=TabSheet1;

end;
procedure TForm1.Button3Click(Sender: TObject);

begin

PageControl1.ActivePage:=TabSheet4;

end;
procedure TForm1.FormCreate(Sender: TObject);

begin

a:=1;b:=2;

StringGrid1.Cells[0,0]:='Функция';

StringGrid1.Cells[0,1]:='a=';

StringGrid1.Cells[0,2]:='b=';

StringGrid1.Cells[0,3]:='Интеграл равен';

PageControl1.ActivePage:=TabSheet1;

end;
procedure TForm1.ComboBox1Change(Sender: TObject);

begin

Chart1.Series[0].Clear;

StringGrid1.Cells[1,0]:='';

StringGrid1.Cells[1,1]:='';

StringGrid1.Cells[1,2]:='';

StringGrid1.Cells[1,3]:='';

form1.Edit1.Text:='';

end;
procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

Chart1.Series[0].Clear;

StringGrid1.Cells[1,0]:='';

StringGrid1.Cells[1,1]:='';

StringGrid1.Cells[1,2]:='';

StringGrid1.Cells[1,3]:='';

form1.Edit1.Text:='';

end;
procedure TForm1.Button8Click(Sender: TObject);

var s:String ;

i:integer;

clr:TColor;

im,ib:real;

inn:integer;

begin

case RadioGroup1.ItemIndex of

0:str(IntegralRect(1,2,0.0001):10:7,s);

1:str(IntegralTrap(1,2,0.0001):10:7,s);

2:str(IntegralSimps(1,2,0.0001):10:7,s);

end ;

form1.Edit1.Text:=s;
Chart1.Series[0].Clear;

a:=1;b:=2;

im:=a;

inn:=1000;

ib:=(b-a)/inn;

for i:=0 to inn-1 do

begin

Chart1.Series[0].AddXY(im,f(im),'',clr);

im:=im+ib;

end;
If Form1.ComboBox1.Text='f(x)=sin(x)' Then StringGrid1.Cells[1,0]:='sin(x)';

If Form1.ComboBox1.Text='f(x)=cos(x)' Then StringGrid1.Cells[1,0]:='cos(x)';

If Form1.ComboBox1.Text='f(x)=ln(x)' Then StringGrid1.Cells[1,0]:='ln(x)';

StringGrid1.Cells[1,1]:=FloatToStr(a);

StringGrid1.Cells[1,2]:=FloatToStr(b);

StringGrid1.Cells[1,3]:=s;

end;
end.

2) Пример работы программы:







1. Контрольная_работа на тему Анализ стационарных и динамических объектов
2. Реферат Линия Мажино
3. Реферат на тему Why War Essay Research Paper The two
4. Курсовая Кровь как внутренняя среда организма 2
5. Сочинение на тему Литературный герой ИОГАННЕС КРЕИСЛЕР
6. Реферат Народная песня. Жанровая разновидность
7. Курсовая на тему Оценка стоимости предприятия
8. Реферат на тему My American Journey Essay Research Paper Book
9. Реферат на тему Drug Legalization Essay Research Paper Legality Although
10. Курсовая Анализ прикладных сервисов в сети Internet