Тапсырманы орындауға әдістемелік нұсқаулар:
Тапсырма №1.Ол үшін Delphi-дің 6-нұсқасында комплекс сандар мен амалдар орындайтын пайдаланушының варианты қарастырылады. Комплекс сандар арифметикасы төрт функция арқылы орындалады:
Unit Cmplx;
Interface
Type
Complex=record
Re,im:real
End;
Function Add(x,y:Complex):Complex;
Function SubC(x,y:Complex):Complex;
Function MulC(x,y:Complex):Complex;
Function DivC(x,y:Complex):Complex;
Const C: Complex=(re:0,1; im:-1);
Implementation
Function Add(x,y:Complex):Complex;
// Комплекс сандарды қосу
begin
Result.re:=x.re+y.re;
Result.im:=x.im+y.im
End;//AddC
Function SubC(x,y:Complex):Complex;
// Комплекс сандарды азайту
begin
Result.re:=x.re-y.re;
Result.im:=x.im-y.im
End;//SubC
Function MulC(x,y:Complex):Complex;
// Комплекс сандарды көбейту
begin
Result.re:=x.re*y.re-x.im*y.im;
Result.im:=x.re*y.im-x/im*y.re
End;// MulC
Function DivC(x,y:Complex):Complex;
// Комплекс сандарды бөлу
var z:real;
begin
Z:=sqr(y.re)+sqr(y.im);
// Z=0 болған жағдайдағы программаның қорғалуы
try
Result.re:=(x.re*y.re+x.im*y.im)/z;
Result.im:=(x.re*y.im-x,im*y.re)/z;
Exept
Result.re:=1,1e309;
Result.im:=1,1e309;
End//DivC
End.
Мұндай модуль құру үшін File-New-Unit опциясын шақыру қажет. Модуль мәтіні cmplx.pas файлында сақталынады: файл аты модуль атымен сәйкес келуі тиіс. Тек сонда ғана Delphi модульді автоматты түрде тауып, оны жаңартады.
Модуль құрғаннан кейін Uses сөйлемінде жаңадан құрылған қосалқы программалар, типтер, тұрақтылар да пайдаланылатын атауды ескерту қажет (біздің модульде complex типі, AddC, SubC, MulC, DivC қосалқы программалары және C тұрақтысы пайдаланылады). Оқу программасының bbRun батырмасын әрбір басқан сайын төрт арифметикалық амал орындалатын екі кездейсоқ комплекс сан құрылады. Оның bbRunClick оқиға өңдеуші төмендегідей болады:
Implementation
Usescmplx;
Procedure Tform1.BbRunClick(Sender:TObject);
var x,y,z:complex;
Procedure Output(Operation:Char);
var S:String;
Begin Case Operation of
'+':z:=AddC(x,y);
'-':z:=SubC(x,y);
'*':z:=MulC(x,y);
'/':z:=DivC(x,y);
end;
S:='('+FormatFloat('+0,0000;-0,0000',x.re)+' FormatFloat('+0,0000j;-0,0000j',x.im)+')'+ Operation+'('+ FormatFloat('+0,0000;-0,0000',y.re)+' FormatFloat('+0,0000j;-0,0000j',y.im)+'='+FormatFloat('+0,0000;-0,0000',z.re)+ FormatFloat('+0,0000j;-0,0000j'x.im);
MmOutput.Lines.Add(S);
End;//Output
begin//BbRunClick
x.re:=random;
x.im:=random;
x.re:=random;
x.im:=random;
Output('+');
Output('-');
Output('*');
Output('/');
MmOutput.Lines.Add(' ');
End;
Орындалатын бөліктің басындағы Uses cmplx сілтемесі cmplx модулінің объектілерін bbRunClick оқиға өңдеуші мүмкін жасайды. Delphi ортасында бұл сілтемені File-Use-Unit опциясын таңдап, пайда болған терезеден cmplx модулінің атын белгілеу арқылы қоюға болады.
Тапсырма №2. Алдымен құрылатын қосымшаның интерфейсін жасау үшін формаға: Label1, Label2, Label3, Edit1, Edit2, SpinEdit1, Button1, Memo1, Button2 компоненттерін орналастырайық. Қосымшаның орындалу нәтижесі 7.2- суретте келтірілген.
Есеп шартына сәйкес, У(Х)-тің мәнін есептеуді функция түрінде, ал S(X)-тің мәнін есептеу процедура түрінде жүзеге асыратын модуль құрайық. Модуль құру үшін бас менюден файл-құру-модуль (Файл-Создать-Модуль)
командаларын орындаймыз. Нәтижесінде бос Unit2 модулі бар терезе ашылады. Содан кейін жоба файлдары сақталған папкаға модульді «UnFuncProc» деген атпен сақтаймыз. Модульдің мәтіні төмендегідей:
unit UnFuncProc;
interface
var n:integer;
Function F(x:extended):extended;
Procedure Sum(x:extended; Var s:extended);
implementation
Function F(x:extended):extended;
begin
F:=(1-x*x*0,5)*cos(x)-0,5*x*sin(x);
end;
Procedure Sum(x:extended; Var s:extended);
var c: extended;
k:integer;
begin
c:=-x*x*0,5;
s:=1;
for k:=1 to n do
begin
s:=s+c*(2*k*k+1);
c:=c*x*x/((2*k+2));
end; end;
end.
«UnFuncProc» модулін жобаға қосу үшін файл-модульді пайдалану командаларын орындаймыз. Нәтижесінде модульді пайдалану сұхбат терезесі ашылады. Бұл терезеде модульдер тізімі орналасады. Біздің жағдайда бір ғана «UnFuncProc» модулі бар, Ок батырмасын басамыз. Одан кейін негізгі Unit1 модуліндегі implementation бөлімінде Uses UnFuncProc операторының орналасқанына көз жеткізуіміз қажет (мұны Delphi өзі автоматты түрде қояды).
Жобаның негізгі файлының мәтіні төмендегідей:
unit ;
interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialofs, Spin;
type
Tform1=class(Tform)
Label1: Tlabel;
Label2: Tlabel;
Label3: Tlabel;
Edit1:TEdit;
Edit2:TEdit;
SpinEdit1:TSpinEdin;
Button1:TButton;
Memo1:TMemo;
Button2:TButton;
Procedure FormCreate(Sender:TObject);
Procedure Button1Click(Sender:TObject);
Procedure Button2Click(Sender:TObject);
private {private declarations}
public {publicdeclarations }
end;
Type
func=Function(x:extended):extended;
proc=Procedure(x:extended; Var s:extended)
var
Form:TForm1;
implementation
uses UnFuncProc; {$R*.dfm}
Procedure Tform1FormCreate(Sender:TObject);
begin
SpinEdit1.text:='4';
Edit1.text:='5';
Edit2.text:='6';
Memo1.Clear;
Memo1.Lines.Add('Модуль құру');
end;
procedure Tabl(Sum:proc;F:func;n:integer;Xn,Xk,h:extended);
var x,y,s:extended;
begin
Form1.Memo1Lines.Add(#9+'x'+#9+'y');
x:=Xn;
repeat
Sum(x,s);
y:=F(x);
Form1.Memo1Lines.Add(#9+FloatToStrF(x,ffFixed,5,2)+#9+ FloatToStrF(s,ffFixed,6,3)+#9+ FloatToStrF(y,ffFixed,6,3));
x:=x+h;
until x>Xk;
end;
Procedure TForm1Button1Create(Sender:TObject);
var Xn,Xk,h:extended;
begin
n:=StrToInt(SpinEdit1.Text);
Xn:=StrToFloat(Edit1.Text);
Xk:=StrToFloat(Edit2.Text);
h:=(Xk-Xn)*0,5;
Tabl(Sum,F,n,Xn,Xk,h); end;
Procedure TForm1Button2Create(Sender:TObject);
begin
close;
end; end.
Достарыңызбен бөлісу: |