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;
//Основнапроцедурапрограми
rocedure 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;
//Збереженняуфайлі
rocedure 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;
//Створенняфайлузперевіркоюйогоіснування
rocedure TForm1.FormActivate(Sender: TObject);
begin
fname:='result.txt';
AssignFile (f, fname);
If FileExists('result.txt')= False Then
begin
rewrite(f);
CloseFile(f);
end;
end;
//Очищенняполіввведення
rocedure TForm1.BitBtn3Click(Sender: TObject);
begin
P5;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
P5;
end;
//Вихід з програми
rocedure TForm1.N7Click(Sender: TObject);
begin
Close;
end;
//Виведеннядовідки
rocedure TForm1.N8Click(Sender: TObject);
begin
end;
procedure TForm1.N9Click(Sender: TObject);
begin
ShowMessage('Навчальнапрограматабулюванняфункції.' + #13 +
' Версія 1.0');
end;
end.
Список використаної літератури
1. Б.Іванов “Дискретная математика. Алгоритмы и программы”.
2. В. Турский. «Методология программирования».
3. «Требования и спецификации в разработке программ.» М. Мир, 1984.
4. Конспект лекцій з предмету.
5. Інтернет мережа..