Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
strogy.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
904.7 Кб
Скачать

2Алгоритм у вигляді блок-схем.

В цьому підпункті представлені алгоритми написання програми в вигляді блок-схем для можливості реалізації її на іншій мові програмування.

Блок-схема процедури створення файлів показана на рисунку , , .

Рисунок – Блок-схема процедури створення файлу

Рисунок – Блок-схема створення файлів

Рисунок – Блок-схема процедури створення фалів

Блок-схема процедури побудови дійсного значення напруги показана на рисунках -.

Рисунок – Блок-схема процедури побудови дійсного значення напруги

Рисунок – Блок-схема процедури побудови дійсного значення напруги

Рисунок – Блок-схема процедури побудови дійсного значення напруги

Блок-схема процедури побудови максимального значення напруги представлена на рисунках , , .

Рисунок – Блок-схема процедури побудови максимального значення напруги

Рисунок – Блок-схема процедури побудови максимального значення

Рисунок – Блок-схема процедури побудови максимального значення

  1. Програма, реалізована на мові Object Pascal в середовищі Delphi 7

3Інтерфейс програми – фото форм у конструкторі.

Написана програма має 4 форми. Форми пердставлені на наступних рисунках.

Форма головного меню представлена на рисунку .

Рисунок – Форма головного меню

Форма меню генерації файлів представлена рисунку .

Рисунок – Форма генерації файлів

Форма побудови графіків представлена на рисунку

Рисунок – Форма побудови графіків

Форма «О программе» представлена на рисунку .

Рисунок – Форма «О программе»

Форма «Помощь» представлена на рисунку

Рисунок – Форма «помощь»

4Опис компонентів, що використовуються в програмі.

Компоненти та їх опис представлені в таблиці .

Таблиця – Компоненти , що використовуються в проекті.

Компонент

Призначення

MainMenu

Створення формули головного меню, завдяки якому можна перейти до інших форм.

Button

В програмі було використано декілька цих компонентів, адже ми в програмі маємо багато подій что пов’язані з цим компонентом.

Edit

В даній програмі цей компонент використовується тільки для вводу даних.

Label

В даній програмі цей компонент використовується тільки для надпису.

Char

Використовується для побудови графіків.

PageControl

Використвоються для зміни меню на одній формі.

OleConteiner

Використовується, для того щоб можна було звернутись до Word. В даній програмі використовується для відображення інформації.

Memo

Цей компонент використовується для роботи з багаторядковим текстом. В даній програмі в полі цього компоненту будуть реєструватись координати точок.

DateTimePicker

За допомогою цього компоненту можна обрати дату.

5Текст програми та модулів форм.

Модуль що відповідає за генерацію файлів.

type

TForm6 = class(TForm)

OpenDialog1: TOpenDialog;

Edit1: TEdit;

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Label5: TLabel;

Label6: TLabel;

Button2: TButton;

DateTimePicker1: TDateTimePicker;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form6: TForm6;

var t1:string;

urez :Integer;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm6.Button1Click(Sender: TObject);

var

papka :string;

TitleName : string;

lpItemID : PItemIDList;

BrowseInfo : TBrowseInfo;

DisplayName : array[0..MAX_PATH] of char;

TempPath : array[0..MAX_PATH] of char;

begin

FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);

BrowseInfo.hwndOwner := Form1.Handle;

BrowseInfo.pszDisplayName := @DisplayName;

TitleName := 'Выбор папки';

BrowseInfo.lpszTitle := PChar(TitleName);

BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;

lpItemID := SHBrowseForFolder(BrowseInfo);

if lpItemId <> nil then

begin

SHGetPathFromIDList(lpItemID, TempPath);

GlobalFreePtr(lpItemID);

end;

papka :=TempPath +'Аналізатор характеристик напруг' ;

if not DirectoryExists(papka) then

ForceDirectories(papka) ;

edit1.text:=papka;

end;

procedure TForm6.Button2Click(Sender: TObject);

var t,t2:string;

chasOT,chasDO,minot,mindo,chasrazn,minrazn ,a1: integer;

kolfail,a,j ,q:integer;

namefile, name1,name2 ,name3,polnput:string;

f:file of integer;

U, dwt,amplitude,amplituderandom,wt,iamp,Uamplitude,iamplitude:real;

begin

//Создание папки с датой

t1:=edit1.text+'\';

t2:=FormatDateTime('dd.mm.yyyy',DateTimePicker1.Date);

t:=t1+t2;

if not DirectoryExists(t) then

ForceDirectories(t);

// Вычесление количество файлов

chasot:=strtoint(edit2.Text);

chasdo:=strtoint(edit4.Text);

minot:=strtoint(edit3.Text);

mindo:=strtoint(edit5.Text);

chasrazn:=chasdo-chasot;

minrazn:=mindo-minot;

kolfail:=Ceil((chasrazn*60 + minrazn)/10);

a1:=Ceil(strtoint(edit4.Text)*6+ (strtoint (edit5.Text)) div 10);

//создание и заполнение файлов

name1:='file00';

name3:='.dat';

dwt:=(2*pi)/20;

Uamplitude :=(230*2048)/(2*410);

for a:=a1 to a1+kolfail do

begin

name2:=inttostr(a1);

namefile:=name1+name2+name3;

polnput:=t+ '\' +namefile;

AssignFile(f,polnput);

Rewrite(f) ;

for j :=1 to 10*50*60 do

begin

amplituderandom:=Uamplitude-0.05*Uamplitude+random(26);

for q:=0 to 20 do

begin

wt:=dwt*q;

U:=round(amplituderandom*sin(wt));

Urez:=Round(U-Urez);

write (f,Urez);

end;

end;

CloseFile(f);

end;

end;

end.

Модуль програми, що відповідає за побудову графіків.

type

TForm2 = class(TForm)

pgc1: TPageControl;

ts1: TTabSheet;

lbl1: TLabel;

grp2: TGroupBox;

Label1: TLabel;

Chart1: TChart;

Series1: TLineSeries;

Edit1: TEdit;

Edit2: TEdit;

DateTimePicker1: TDateTimePicker;

btn1: TBitBtn;

Memo1: TMemo;

Memo2: TMemo;

ts2: TTabSheet;

lbl2: TLabel;

grp4: TGroupBox;

DBChart1: TDBChart;

Series2: TLineSeries;

Edit3: TEdit;

Edit4: TEdit;

DateTimePicker2: TDateTimePicker;

btn2: TBitBtn;

Memo3: TMemo;

Memo4: TMemo;

Edit5: TEdit;

Label2: TLabel;

Edit6: TEdit;

Label4: TLabel;

procedure btn1Click(Sender: TObject);

procedure btn2Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

var Urez:array [1..600000] of Integer;

implementation

{$R *.dfm}

procedure TForm2.btn1Click(Sender: TObject);

var f :file of Integer;

t2,t:string;

name2 ,a,ii,ii1,idd,idd1,sud,gr,kor:Integer;

name1,namefile,name3,polnput:string;

ud:array [1..30000] of Real;

begin

if t1='' then t1:='D:\Аналізатор характеристик напруг\' ;

t2:=FormatDateTime('dd.mm.yyyy',DateTimePicker1.Date);

name2:=Ceil((strtoint(edit1.Text)*6+ (strtoint (edit2.Text))div 10));

t:=t1+t2;

name1:='file00';

name3:='.dat';

namefile:=name1+inttostr(name2)+name3;

polnput:=t+ '\' +namefile;

ShowMessage(polnput);

try

AssignFile(f,polnput);

Reset(f);

for a:=1 to 10*60*50*20 do

read(f,Urez[a]);

except ShowMessage('Файла не существует');

end;

ii:=1;

ii1:=20;

for idd:=1 to 10*60*50 do

begin

for idd1:=ii to ii1 do

sud:=sud+sqr(urez[idd1]);

ii:=ii1+1;

ii1:=ii1+20;;

ud[idd]:=sqrt(sud)/20;

sud:=0;

end;

for gr:=1 to 10*60*50 do

begin

Chart1.Series[0].AddXY(gr,ud[gr]);

end;

kor:=strtoint(Edit5.text);

for gr:=1 to kor do

begin

Memo1.Lines.add(floattostr(RoundTo((ud[gr]),-3)));

Memo2.Lines.add(inttostr(gr));

end;

end;

procedure TForm2.btn2Click(Sender: TObject);

var f :file of Integer;

t2,t:string;

name2 ,a,ii,ii1,idd,idd1,sud,gr,kor:Integer;

name1,namefile,name3,polnput:string;

umax:array [1..30000] of Real;

umin:array [1..30000] of Real;

tempmax,tempmin:real;

begin

if t1='' then t1:='D:\Аналізатор характеристик напруг\';

t2:=FormatDateTime('dd.mm.yyyy',DateTimePicker2.Date);

name2:=Ceil(strtoint(edit3.Text)*6+ (strtoint (edit4.Text))div 10);

t:=t1+t2;

name1:='file00';

name3:='.dat';

namefile:=name1+inttostr(name2)+name3;

polnput:=t+ '\' +namefile;

ShowMessage(polnput);

try

AssignFile(f,polnput);

Reset(f);

for a:=1 to 10*60*50*20 do

read(f,Urez[a]);

except ShowMessage('Файла не существует');

end;

ii:=1;

ii1:=20;

for idd:=1 to 10*60*50 do

begin

for idd1:=ii to ii1 do

begin

tempmax:=urez[ii];

tempmin:= urez[ii];

if tempmax < Urez[idd1] then

tempmax:=urez[idd1];

if tempmin > Urez[idd1] then

tempmin:=urez[idd1];

end;

ii:=ii1+1;

ii1:=ii1+20;;

umax[idd]:=tempmax;

umin[idd]:=tempmin;

end;

for gr:=1 to 10*60 do

begin

DBChart1.Series[0].AddY(umin[gr]);

DBChart1.Series[0].AddY(umax[gr]);

end;

kor:=strtoint(Edit5.text);

for gr:=1 to kor do

begin

Memo3.Lines.add(floattostr(RoundTo((umax[gr]),-3)));

Memo4.Lines.add(inttostr(gr));

end;

end;

procedure TForm2.FormCreate(Sender: TObject);

begin

Memo1.Lines[0]:='U';

Memo2.Lines[0]:='time(msec)';

Memo3.Lines[0]:='Umax';

Memo4.Lines[0]:='time(msec)';

end;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]