Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ООП / 1 / 3 / 3

.docx
Скачиваний:
28
Добавлен:
01.06.2015
Размер:
86.75 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Федеральное государственное автономное образовательное

учреждение высшего профессионального образования

«Южный федеральный университет»

Факультет

РАДИОТЕХНИЧЕСКИЙ

Кафедра

МИКРОПРОЦЕССОРНЫХ СИСТЕМ

Отчет по лабораторной работе №1

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

«Объектно-ориентированное программирование».

На тему: «Спектр реакции системы на гармоническое воздействие».

Выполнил:

студент группы Р-102

В.Г.Горчаков

Проверил:доцент каф. МПС

М.И.Ледовской

Таганрог 2013 г.

Цель лабораторной работы

Изучить принципы создания приложения «Спектр реакции системы

на гармоническое воздействие» для Windows в инструментальной среде Delphi 7

Интерфейс приложения

графический компонент

свойство

событие

обработчик

Button1

Caption

OnClick

Button1Click

CheckBox1

Caption

OnClick

CheckBox1Click

GroupBox1

Caption

Edit1

OnChange

EditChange

Label1

Caption

RadioGroup1

Caption

OnClick

RadioGroup1Click

UpDown1

Associate

GroupBox3

Caption

Edit2

OnChange

EditChange

Edit3

OnChange

EditChange

Edit4

OnChange

EditChange

Label2

Caption

Label3

Caption

Label4

Caption

Label5

Caption

Label6

Caption

Label7

Caption

UpDown2

Associate

UpDown3

Associate

UpDown4

Associate

PaintBox1

OnPaint

PaintBox1Paint

Код программы:

unit Unit1;

interface

uses

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

Dialogs, ExtCtrls, StdCtrls, ComCtrls;

type

TForm1 = class(TForm)

GroupBox1: TGroupBox;

Edit1: TEdit;

UpDown1: TUpDown;

GroupBox3: TGroupBox;

Label1: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

UpDown2: TUpDown;

UpDown3: TUpDown;

UpDown4: TUpDown;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

CheckBox1: TCheckBox;

Button1: TButton;

PaintBox1: TPaintBox;

RadioGroup1: TRadioGroup;

procedure PaintBox1Paint(Sender: TObject);

procedure RadioGroup1Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure EditChange(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const

Ymax=100; // верхняя граница ПХ системы

Xmax=10; // верхняя граница воздействия

var

Form1: Tform1;

TypCharact: integer; // тип ПХ системы

p: integer; // параметр ПХ

X0,Xm: real; // смещение и амплитуда воздействия

f: integer; // частота воздействия

implementation

{$R *.dfm}

// передаточная характеристика системы

functionTransCharact(x: real): real;

var

y: real;

begin

caseTypCharactof

0: y:=p*x;

1: y:=0.1*p*Sqr(x);

2: y:=Ymax*(1-Exp(-0.1*p*x));

end;

TransCharact:=y;

end;

// воздействие

function Influence(t: real): real;

begin

Influence:=X0+Xm*Cos(2*Pi*f*t);

end;

// спектр реакции системы

procedureSpectrReact;

const

tmax=1; // верхняя граница времени

N=100; // количество интервалов дискретизации времени

var

l,b: integer; // кординаты левого нижнего угола области вывода

w,h: integer; // ширина и высота области вывода

x: real; // аргумент ПХ

t: real; // время

fmax: integer; // верхнее значение частоты воздействия

A: array[1..5] of real; // амплитуды спектра

Amax: real; // верхнее значение амплитуды

dx,dt,df: real; // приращения

MasY: array[0..N] of real; // дискретные значения ПХ

cx0: integer; // X-координатa начала координат графиков

cy0: array[1..3] of integer; // Y-координаты начала координат графиков

mx,mt,mf,mr: real; // масштабы

cy: integer; // текущая Y-координата

z: real; // вспомогательные переменные

i,k: integer;

begin

// область вывода графиков

with Form1.PaintBox1 do

begin

Canvas.Pen.Color:=clBlack;

Canvas.Brush.Color:=clWhite;

Canvas.Rectangle(0,0,Width,Height);

l:=40; // X-координатa левоговерхнегоугла

b:=Height-20; // Y-координатa левого верхнего угла

h:=Height-50; // высота

w:=Width-80; // ширина

end;

if f<>0 thenfmax:=5*f elsefmax:=1;

// масштабы

mr:=(h-140)/4; // относительных единиц по Y-координате

mx:=(w-20)/Xmax; // аргумента ПХ по X-координате

mt:=(w-20)/tmax; // времени по X-координате

mf:=(w-20)/fmax; // частоты по X-координате

with Form1.PaintBox1.Canvas do

begin

// разметка осей для графика ПХ

// вертикальная ось

cx0:=l;

cy:=b-h;

TextOut(cx0+w div 3,cy-20,'ПХсистемы');

TextOut(cx0+7,cy-15,'Y(X)');

for i:=0 to 4 do

begin

MoveTo(cx0,cy); LineTo(cx0+3,cy);

TextOut(cx0-25,cy-7,FloatToStr(Ymax-(Ymax/5)*i));

MoveTo(cx0,cy); LineTo(cx0,cy+Round(0.2*mr));

cy:=cy+Round(0.2*mr);

end;

TextOut(cx0-17,cy-7,'0');

// горизонтальная ось

cy0[1]:=cy;

MoveTo(cx0,cy0[1]); LineTo(cx0+Round(Xmax*mx)+1,cy0[1]);

dx:=Xmax/5;

for i:=1 to 5 do

begin

MoveTo(cx0+Round(i*dx*mx),cy0[1]-3);

LineTo(cx0+Round(i*dx*mx),cy0[1]);

TextOut(cx0+Round(i*dx*mx)-3,cy0[1]+2,FloatToStr(i*dX));

end;

TextOut(w+40,cy0[1]+2,'X [ед]');

// разметка осей для графика воздействия

// вертикальная ось

cy:=cy+50;

TextOut(cx0+w div 3,cy-20,'Воздействие');

TextOut(cx0+7,cy-15,'X(t)');

for i:=0 to 4 do

begin

MoveTo(cx0,cy); LineTo(cx0+3,cy);

TextOut(cx0-20,cy-7,FloatToStr(Xmax-(Xmax/5)*i));

MoveTo(cx0,cy); LineTo(cx0,cy+Round(0.2*mr));

cy:=cy+Round(0.2*mr);

end;

TextOut(cx0-17,cy-7,'0');

// горизонтальная ось

cy0[2]:=cy;

MoveTo(cx0,cy0[2]); LineTo(cx0+Round(tmax*mt)+1,cy0[2]);

dt:=tmax/5;

for i:=1 to 5 do

begin

z:=i*dt;

MoveTo(cx0+Round(z*mt),cy0[2]-3);

LineTo(cx0+Round(z*mt),cy0[2]);

TextOut(cx0+Round(z*mt)-5,cy0[2]+2,FloatToStr(z));

end;

TextOut(w+40,cy0[2]+2,'t [c]');

// разметка осей для графика спектра

// вертикальная ось

cy:=cy+50;

TextOut(cx0+w div 4,cy-15,'Спектрреакции');

TextOut(cx0+7,cy-7,'А');

cy:=cy+10;

Amax:=Ymax div 2;

for i:=0 to 10 do

begin

MoveTo(cx0,cy); LineTo(cx0+3,cy);

TextOut(cx0-20,cy-7,FloatToStr(Amax-(Amax/5)*i));

if i<>10 then

begin

MoveTo(cx0,cy);

LineTo(cx0,cy+Round(0.2*mr));

cy:=cy+Round(0.2*mr);

end;

if i=4 then cy0[3]:=cy;

end;

// горизонтальнаяось

MoveTo(cx0,cy0[3]); LineTo(cx0+Round(fmax*mf)+1,cy0[3]);

df:=fmax/5;

for i:=1 to 5 do

begin

z:=i*df;

MoveTo(cx0+Round(z*mf),cy0[3]-3);

LineTo(cx0+Round(z*mf),cy0[3]);

TextOut(cx0+Round(z*mf)-7,cy0[3]+5,FloatToStr(i)+'f');

end;

TextOut(w+40,cy0[3]+5,'[Гц]');

// построение графика ПХ

Pen.Color:=clRed;

x:=0;

dx:=Xmax/N;

MoveTo(cx0,cy0[1]-Round((TransCharact(0)/Ymax)*mr));

for i:=1 to N do

begin

z:=i*dx;

LineTo(cx0+Round(z*mx),cy0[1]-Round((TransCharact(z)/Ymax)*mr));

MoveTo(cx0+Round(z*mx),cy0[1]-Round((TransCharact(z)/Ymax)*mr));

end;

// построение графика воздействия

t:=0;

dt:=tmax/N;

MasY[0]:=TransCharact(Influence(0));

MoveTo(cx0,cy0[2]-Round((Influence(0)/Xmax)*mr));

for i:=1 to N do

begin

z:=i*dt;

MasY[i]:=TransCharact(Influence(z));

LineTo(cx0+Round(z*mt),cy0[2]-Round((Influence(z)/Xmax)*mr));

MoveTo(cx0+Round(z*mt),cy0[2]-Round((Influence(z)/Xmax)*mr));

end;

// построение графика спектра

if f<>0 then

begin

for k:=1 to 5 do

begin

A[k]:=0;

z:=Pi*f*k*dt;

for i:=1 to N do

A[k]:=A[k]+(MasY[i]-MasY[i-1])*Sin(z*(2*i-1));

z:=Sin(z)/Sqr(z)/N;

A[k]:=-A[k]*z;

MoveTo(cx0+Round(k*f*mf),cy0[3]);

LineTo(cx0+Round(k*f*mf),cy0[3]-Round((A[k]/Amax)*mr));

MoveTo(cx0+Round(k*f*mf)-2,cy0[3]-Round((A[k]/Amax)*mr));

LineTo(cx0+Round(k*f*mf)+2,cy0[3]-Round((A[k]/Amax)*mr));

end;

// коэффициентгармоник

if Form1.CheckBox1.Checked and (A[1]<>0) then

TextOut(cx0,cy+10,'Коэффициентгармоник: '+

FloatToStrF(Sqrt(Sqr(A[2])+Sqr(A[3])+Sqr(A[4])+Sqr(A[5]))/A[1],

ffFixed,3,2));

end;

end;

end;

procedure Tform1.PaintBoxPaint(Sender: Tobject);

begin

SpectrReact;

end;

procedure Tform1.RadioGroupClick(Sender: Tobject);

begin

// изменениетипаПХ

TypCharact:=RadioGroup1.ItemIndex;

SpectrReact;

end;

procedure Tform1.EditChange(Sender: Tobject);

var

i: integer;

s: string;

begin

i:=(Sender as Tedit).Tag;

s:=(Sender as Tedit).Text;

// обновление параметров ПХ и воздействия

case i of

1: p:=StrToInt(s);

2: X0:=StrToFloat(s);

3: Xm:=StrToFloat(s);

4: f:=StrToInt(s);

end;

SpectrReact;

end;

procedure Tform1.ButtonClick(Sender: Tobject);

begin

Application.Terminate;

end;

procedure Tform1.CheckBoxClick(Sender: Tobject);

begin

SpectrReact;

end;

end.

Вывод: изучены принципы создания приложения «Спектр реакции системы на гармоническое воздействие» для Windows в инструментальной среде Delphi 7. Изучены основные свойства объектов среды программирования Delphi 7.

Соседние файлы в папке 3
  • #
    01.06.201586.75 Кб283.docx
  • #
    01.06.2015176.23 Кб273.pdf
  • #
    01.06.2015434 б26Project1.cfg
  • #
    01.06.20152.66 Кб25Project1.dof
  • #
    01.06.2015188 б25Project1.dpr
  • #
    01.06.2015876 б25Project1.res