Смекни!
smekni.com

Метод низпадаючої розробки структури програми (стр. 2 из 2)

N4: TMenuItem;

N5: TMenuItem;

N3: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

BitBtn3: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

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

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

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

procedure Edit1Exit(Sender: TObject);

procedure Edit2Exit(Sender: TObject);

procedure Edit3Exit(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N9Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

X,Xn,Xk,H:real;//Параметритабулювання

fname:String[25];//

f:textfile;

implementation

{$R *.dfm}

procedure P1;

begin

MessageDlg ('"Xп" неможебутибільшимніж "Хк".' +#13

+'Введітьзначенняправильно.', mtWarning, [mbCancel], 0);

Form1.Edit1.Text:='';

Form1.Edit2.Text:='';

end;

procedure P2;

begin

MessageDlg ('Кроктабулювання "H" неможеприйматитакихзначень.' +#13

+'Введітьзначенняправильно.', mtWarning, [mbCancel], 0);

Form1.Edit3.Text:='';

end;

procedure P3;

begin

MessageDlg ('Введене значення знаходться за межами допустимого.' +#13

+'Введіть значення правильно.', mtWarning, [mbCancel], 0);

end;

procedure P4;

begin

MessageDlg ('Треба ввести всі дані.', mtWarning, [mbCancel], 0);

end;

procedure P5;

begin

Form1.Edit1.Text:='';

Form1.Edit2.Text:='';

Form1.Edit3.Text:='';

Form1.Edit1.SetFocus;

Form1.Height:=167;

Form1.Position:=poScreenCenter;

Form1.Label4.Visible:=False;

Form1.Label5.Visible:=False;

Form1.Label6.Visible:=False;

Form1.Label7.Visible:=False;

Form1.StringGrid1.Visible:=False;

Form1.ListBox1.Items.Clear;

Form1.Memo1.Lines.Clear;

Form1.ListBox1.Visible:=False;

Form1.Memo1.Visible:=False;

end;

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

begin

case Key of

'0'..'9',Chr(8):;

'-': if (pos('-',Edit1.Text)= 0) and (length(Edit1.Text) = 0)

Then Key := '-'

else Key := Chr(0);

',': if pos(',',Edit1.Text)<>0

THen Key := Chr(0);

else Key := Chr(0);

end;

end;

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

begin

case Key of

'0'..'9',Chr(8):;

'-': if (pos('-',Edit2.Text)= 0) and (length(Edit2.Text) = 0)

Then Key := '-'

else Key := Chr(0);

',': if pos(',',Edit2.Text)<>0

Then Key := Chr(0);

else Key := Chr(0);

end;

end;

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

begin

case Key of

'0'..'9',Chr(8):;

',': if pos(',',Edit3.Text)<>0

Then Key := Chr(0);

else Key := Chr(0);

end;

end;

procedure TForm1.Edit1Exit(Sender: TObject);

begin

If Edit1.Text='' Then Exit;

If (Abs(StrToFloat(Edit1.Text))>100000)Then

begin

P3;

Edit1.Text:='';

Edit1.SetFocus;

end;

end;

procedure TForm1.Edit2Exit(Sender: TObject);

begin

If Edit2.Text='' Then Exit;

If (Abs(StrToFloat(Edit2.Text))>100000)Then

begin

P3;

Edit2.Text:='';

Edit2.SetFocus;

end;

end;

procedure TForm1.Edit3Exit(Sender: TObject);

begin

If Edit3.Text='' Then Exit;

If (StrToFloat(Edit3.Text)>10000)Then

begin

P3;

Edit3.Text:='';

Edit3.SetFocus;

end;

end;

Procedure TForm1.BitBtn1Click(Sender: TObject);

var

I,K:integer;

Y :array[0..1000] of Real;

label L1;

begin

//Перевірканаявностіправильнихзначеньвполяхвведенняіїхвзаємноїкоректності, звиведеннямвідповднихповідомленьіформуваннямпереходів

IF (Edit1.Text = '') or (Edit2.Text = '') or(Edit3.Text = '') then

begin

P4;

Exit;

end;

IF Edit3.Text = '0' then

begin

MessageDlg ('Требазадатикроктабулювання,'

+ #13 +'якиймаєненульовезначення', mtWarning, [mbCancel], 0);

Edit3.Text := '';

Edit3.SetFocus;

goto l1;

end;

Xn:=StrToFloat(Edit1.Text);

Xk:=StrToFloat(Edit2.Text);

H:=StrToFloat(Edit3.Text);

If Xk<Xn Then

begin

P1;

goto L1;

end;

If (H<=0) Or (H>=Abs(Xk-Xn)) Then

begin

P2;

goto L1;

end;

X:=Xn-H;

K:= Round((Abs((Xk-Xn))/H));

If K>1000 Then

begin

MessageDlg ('Переповненнямасивуданих.'

+#13 +'Требазменшитиінтервалабо'

+#13 +' збільшитикроктабулювання', mtWarning, [mbCancel], 0);

Edit1.Text := '';

Edit2.Text := '';

Edit3.Text := '';

goto l1;

end;

//Фомування компонентів для виведення результатів

StringGrid1.RowCount:= K+2;

Form1.Height:=430;

Form1.Position:=poScreenCenter;

Label4.Visible:=True;

Label5.Visible:=True;

Label6.Visible:=True;

Label7.Visible:=True;

StringGrid1.Visible:=True;

Label7.Caption:='уполі memo';

ListBox1.Items.Clear;

Memo1.Lines.Clear;

ListBox1.Visible:=True;

Memo1.Visible:=True;

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

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

//Розрахуноківиведеннярезультатів

For I:=0 to K do

begin

Y[I]:=(1+ln(2-Xn+H*I))/(1-Xn+H*I+0.1);

//Наступний рядок забезпечує виведення результату

// з точністю до тисячних

Y[I]:= Round(Y[I]*1000)/1000;

StringGrid1.Cells[0,I+1]:=FloatToStr(Xn+H*I);//Виведенняутаблицю

StringGrid1.Cells[1,I+1]:=FloatToStr(Y[I]);

ListBox1.Items.Add(FloatToStr(Xn+H*I)+' '+FloatToStr(Y[i])); //Виведенняусписок

Memo1.Lines.Add(FloatToStr(Xn+H*I)+' '+FloatToStr(Y[i])); //ВиведенняуполеМемо

end;

l1:;

end;

//Запис результатів у файл

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

ListBox1.Items.SaveToFile('result.txt');

end;

//Збереженняуфайлі

procedure TForm1.N4Click(Sender: TObject);

begin

ListBox1.Items.SaveToFile(fname);

end;

//Зчитати з файла і вивести у поле Мемо із скриттям зайвих компонентів

procedure TForm1.N3Click(Sender: TObject);

begin

If FileExists('result.txt')= False Then

Begin

MessageDlg('Файланеіснує', mtWarning, [mbCancel], 0);

Exit;

end;

Label7.Visible:=True;

Label7.Caption := 'Результатизчитуваннязфайлу';

Memo1.Lines.LoadFromFile('result.txt');

Memo1.Visible:=True;

Label4.Visible:=False;

Label5.Visible:=False;

Label6.Visible:=False;

ListBox1.Visible:=False;

StringGrid1.Visible:=False;

Form1.Height:=430;

Memo1.SetFocus;

Form1.Position:=poScreenCenter;

end;

//Створенняфайлузперевіркоюйогоіснування

procedure TForm1.FormActivate(Sender: TObject);

begin

fname:='result.txt';

AssignFile (f, fname);

If FileExists('result.txt')= False Then

begin

rewrite(f);

CloseFile(f);

end;

end;

//Очищенняполіввведення

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

P5;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

P5;

end;

//Вихід з програми

procedure TForm1.N7Click(Sender: TObject);

begin

Close;

end;

//Виведеннядовідки

procedure TForm1.N8Click(Sender: TObject);

begin

ShowMessage(ШпакР.В. + #13 + ' студентгрупиПзс-504');

end;

procedure TForm1.N9Click(Sender: TObject);

begin

ShowMessage('Навчальнапрограматабулюванняфункції.' + #13 +

' Версія 1.0');

end;

end.

Список використаної літератури

1. В. Турский. «Методология программирования».

2. Б.Іванов “Дискретная математика. Алгоритмы и программы”.

3. Конспект лекцій з предмету «Технології автоматизованої обробки економічної інформації».