4. Практичне завдання
З використанням засобів візуального програмування розробити програму для автоматичного розрахунку значень складної функції:
Приклад файлу форми Delphi6 для табулювання функції:
unit Func_tab;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, Menus;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
StringGrid1: TStringGrid;
BitBtn1: TBitBtn;
Label4: TLabel;
ListBox1: TListBox;
Memo1: TMemo;
BitBtn2: TBitBtn;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
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. Конспект лекцій з предмету.
4. Інтернет мережа..
... нарешті, останній крок розробки модуля означає завершення перевірки модуля (за допомогою компілятора) і перехід до процесу налагодження модуля. 3. Атестація програмних засобів Завершальним етапом розробки ПЗ є атестація, що підводить підсумок усій розробці. Атестація - це авторитетне підтвердження якості ПЗ. Звичайно для атестації ПЗ створюється атестаційна комісія з експертів, представник ...
... час роботи з мультимедійним посібником важливо зосередити увагу учнів на найбільш складну для засвоєння частину, активізувати самостійну пошукову діяльність. Дидактична роль мультимедійних засобів у процесі повторення відрізняється від їх використання на уроках пояснення. Ця відмінність полягає в тому, що на уроці повторення вони можуть охоплювати матеріал кількох уроків і використовуватися вже ...
... (1.11.) Проект з більшим значенням середнього квадратичного відхилення вважається більш ризиковим. Одже, варто співвідносити прибутковість інвестицій з величиною ризику по цьому проетку. Розділ 2. Управління реальними інвестиціями підприємства з переробки металобрухту ТОВ СП “Укрроссталь” 2.1. Аналіз вибору пріоритетних напрямків реального інвестування ...
... программного обеспечения: критерии, оценки, метод выбора // НТУУ КПІ, 2005, VII МНПК “Системний аналіз та інформаційні технології”, Київ, 2005. С.189. АНОТАЦІЯ Дідковська М. В. Методи оцінки та засоби підвищення надійності програмного забезпечення. – Рукопис. Дисертація на здобуття наукового ступеня кандидата технічних наук за спеціальністю 05.13.06 – “Автоматизовані системи управління та ...
0 комментариев