Ознайомлення з інструментальним середовищем програмування Delphi. Робота з простими візуальними об’єктами

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Програмування

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Хмельницький національний університет Кафедра системного програмування Лабораторна робота №4 з програмування на тему: «Ознайомлення з інструментальним середовищем програмування Delphi. Робота з простими візуальними об’єктами» Лабораторна робота №3 Тема: Ознайомлення з інструментальним середовищем програмування Delphi. Робота з простими візуальними об’єктами. Мета:ознайомитись з інструментальним середовищем програмування Delphi та його простими візуальними об’єктами. Завдання Розробити проект, що табулює задану функцію на відрізку АВ з кроком h=(B-A)/(n-1). На головній формі проекту вводяться початкові дані (початок та кінець відрізка АВ, крок табулювання h, кількість ітерацій n, а також значення додаткових змінних) та розміщуються кнопки: виклик форм відображення результатів та кнопка завершення проекту в цілому. На другій формі розмістити графік функції, при цьому заборонити закриття цієї форми стандартними засобами. На тертій формі розмістити результати табулювання функції у вигляді таблиці. Таблиця організована за допомогою компонента TStringGrid. При цьому в першій колонці вказується номер ітерації, в другій колонці – аргумент функції, в третій – результат обчислення, в четверту виводиться умова, відповідно до якої проведено обчислення функції. Забезпечити введення початкових даних по замовчуванню. При введенні заданих величин або зміні їхнього значення автоматично повинно обчислюватись значення незаданої величини і виводитись у відповідне поле. При введенні некоректних даних в форму видати повідомлення про помилку і без виведення результатів. (x-z)/x, 0<=x<1.5 y = (ln x2)/(lg x3) + M, 1.5<=x<2.5 [cos(x/s) + sin(s/x) ]*z, x>2.5 Unit1.pas unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, unit2,unit3; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; GroupBox1: TGroupBox; GroupBox2: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: char); procedure Edit2KeyPress(Sender: TObject; var Key: char); procedure Edit3Change(Sender: TObject); procedure Edit3KeyPress(Sender: TObject; var Key: char); procedure Edit5KeyPress(Sender: TObject; var Key: char); procedure Edit6KeyPress(Sender: TObject; var Key: char); procedure Edit7KeyPress(Sender: TObject; var Key: char); private { private declarations } public { public declarations } end; var Form1: TForm1; A,B,Z,M,S:real; N,H:integer; implementation { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin if MessageDlg('Табуляція','Дійсно закрити?',mtWarning,mbYesNo,0)=mrYes then Form1.Close; end; procedure TForm1.Button2Click(Sender: TObject); begin Z:=StrToFloat(Edit5.Text); M:=StrToFloat(Edit6.Text); S:=StrToFloat(Edit7.Text); A:=StrToFloat(Edit1.Text); B:=StrToFloat(Edit2.Text); H:=StrToInt(Edit3.Text); if H<>0 then N:=trunc(abs(A-B)/H)+1; if (S=0) then ShowMessage('Змінна S не може дорівнювати 0!') else if (H=0) then ShowMessage('Крок H не може дорівнювати 0!') else Form2.Show; end; procedure TForm1.Button3Click(Sender: TObject); begin Z:=StrToFloat(Edit5.Text); M:=StrToFloat(Edit6.Text); S:=StrToFloat(Edit7.Text); A:=StrToFloat(Edit1.Text); B:=StrToFloat(Edit2.Text); H:=StrToInt(Edit3.Text); if H<>0 then N:=trunc(abs(A-B)/H)+1; if (S=0) then ShowMessage('Змінна S не може дорівнювати 0!') else if (H=0) then ShowMessage('Крок H не може дорівнювати 0!') else Form3.Show; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char); begin case Key of '0'..'9',#8: ; ',': if (pos(',',Edit1.Text)<>0) or (Edit1.Text='') then Key:=#0; else Key:=#0; end; end; procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: char); begin case Key of '0'..'9',#8: ; ',': if (pos(',',Edit2.Text)<>0) or (Edit2.Text='') then Key:=#0; else Key:=#0; end; end; procedure TForm1.Edit3Change(Sender: TObject); begin if Edit1.Text<>'' then A:=StrToFloat(Edit1.Text); if Edit2.Text<>'' then B:=StrToFloat(Edit2.Text); if Edit3.Text<>'' then H:=StrToInt(Edit3.Text); if (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') and (H<>0) then begin N:=trunc(abs(A-B)/H)+1; Edit4.Text:=IntToStr(N); end; if (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') and (Edit4.Text<>'') and (Edit5.Text<>'') and (Edit6.Text<>'') and (Edit7.Text<>'') then begin Button2.Enabled:=True; Button3.Enabled:=True; end else begin Button2.Enabled:=False; Button3.Enabled:=False; end; end; procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: char); begin case Key of '0'..'9',#8: ; else Key:=#0; end; end; procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: char); begin case Key of '0'..'9',#8: ; ',': if (pos(',',Edit5.Text)<>0) or (Edit5.Text='') or (Edit5.Text='-') then Key:=#0; '-': if Edit5.Text<>'' then Key:=#0; else Key:=#0; end; end; procedure TForm1.Edit6KeyPress(Sender: TObject; var Key: char); begin case Key of '0'..'9',#8: ; ',': if (pos(',',Edit6.Text)<>0) or (Edit6.Text='') or (Edit6.Text='-') then Key:=#0; '-': if Edit6.Text<>'' then Key:=#0; else Key:=#0; end; end; procedure TForm1.Edit7KeyPress(Sender: TObject; var Key: char); begin case Key of '0'..'9',#8: ; ',': if (pos(',',Edit7.Text)<>0) or (Edit7.Text='') or (Edit7.Text='-') then Key:=#0; '-': if Edit7.Text<>'' then Key:=#0; else Key:=#0; end; end; initialization {$I unit1.lrs} end. Unit2.pas unit Unit2; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls; type { TForm2 } TForm2 = class(TForm) Button1: TButton; Button2: TButton; Panel1: TPanel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form2: TForm2; x0,y0:integer; implementation uses Unit1; { TForm2 } function F(x:real):real; var ft:real; begin if x=0 then F:=0; if (x>0) and (x<1.5) then F:=(x-z)/x; if (x>=1.5) and (x<=2.5) then F:=ln(x*x)/(ln(x*x*x)/ln(10))+M; if (x>2.5) then F:=(cos(x/s)+sin(s/x))*z; end; procedure TForm2.Button1Click(Sender: TObject); begin Form2.Hide; end; procedure TForm2.Button2Click(Sender: TObject); var i:integer; x,y:real; begin x0:=(Panel1.Width-Panel1.Left) div 2; y0:=(Panel1.Height-Panel1.Top) div 2; Panel1.Canvas.Line(Panel1.Left,y0,Panel1.Left+Panel1.Width,y0); Panel1.Canvas.Line(x0,Panel1.Top,x0,Panel1.Top+Panel1.Height); if A>B then begin y:=A; a:=B; b:=y; end; x:=a; while x<=b do begin Panel1.Canvas.Line(x0+round((x)*10),y0-round(F(x)*10),x0+round((x+1)*10),y0-round(F(x+1)*10)); x:=x+1; end; end; initialization {$I unit2.lrs} end. Unit3.pas unit Unit3; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, Grids, Unit2; type { TForm3 } TForm3 = class(TForm) Button1: TButton; Button2: TButton; SG: TStringGrid; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form3: TForm3; implementation uses Unit1; { TForm3 } procedure TForm3.Button1Click(Sender: TObject); var i,j:integer; begin Form3.Hide; for i:=0 to SG.ColCount-1 do for j:=0 to SG.RowCount-1 do SG.Cells[i,j]:=''; end; procedure TForm3.Button2Click(Sender: TObject); var i:integer; x:real; begin SG.RowCount:=N+1; if A<B then x:=A else x:=B; for i:=1 to N do begin SG.Cells[0,i]:=IntToStr(i); SG.Cells[1,i]:=FloatToStr(x); SG.Cells[2,i]:=FloatToStr(F(x)); if (x>0) and (x<1.5) then SG.Cells[3,i]:='(x-z)/x'; if (x>=1.5) and (x<=2.5) then SG.Cells[3,i]:='ln(x*x)/(ln(x*x*x)/ln(10))+M'; if (x>2.5) then SG.Cells[3,i]:='(cos(x/s)+sin(s/x))*z'; x:=x+h; end; end; initialization {$I unit3.lrs} end. Висновок. Виконавши лабораторну роботу, я освоїв роботу програм з багатьма формами, а також закріпив навички роботи з простими компонентами середовища Delphi, такими як TLabel, TEdit, TButton, опрацював способи побудови графіків за допомогою властивості Canvas, засвоїв навички створення найпростіших обробників подій з можливістю перевірки вхідних даних та виведення інформаційних повідомлень, а також навчився працювати з таблицями компоненту StringGrid. / / /
Антиботан аватар за замовчуванням

28.03.2013 22:03-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!