Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Инициализацияланатын және аяқталатын бөлік






Инициализацияланатын жә не аяқ талатын бө лік кө пшілік жағ дайда initialization жә не finalisation сө здерімен бірге болмауы мү мкін. Инициализацияланатын бө лікте басқ аруды негізгі программағ а бергенге дейінгі операторлар орналасады, ә детте ол жұ мысқ а дайындау ү шін пайдаланылады. Мысалы, ондағ ы айнымалылар оқ ылып, қ ажетті файлдар оқ ылуы қ ажет. Аяқ талатын бө лікте негізгі программаның жұ мысы аяқ талғ аннан кейін орындалатын операторлар кө рсетіледі. Егер инициализацияланатын бө лікте бірнеше модульдер болатын болса, онда бұ л бө ліктер Uses сө йлеміндегі келтірілген ретпен бірінен соң бірі орындалады. Егер бірнеше модульдің аяқ талатын бө лігі болатын болса, онда бұ л бө ліктер Uses сө йлемідегі келтірілген ретке кері, яғ ни алдымен ең ішкі орналасқ ан — бірінен соң бірі орындалады.

ТАПСЫРМА:

Тапсырма №1. Комплекс сандар арифметикасын орындайтын модуль қ ұ райық.

Тапсырма №2. Y(x)=(1- ) функциясының мә нін кесте тү рінде шығ аратын жә не оны қ осынды тү ріндегі қ атарғ а жіктейтін программа қ ұ райық. Мұ ндағ ы Х-тің мә ндері Хn-нен Хк-ғ а дейін h=(x-x)/10 қ адаммен ө згеретін болсын. У(Х)-тің мә нін есептеу функция тү рінде, ал S(X)-тің мә нін есептеу процедура тү рінде ұ йымдастырылсын. Модуль жоба қ осылып, қ ұ рылғ ан қ осымшада орындалатын болсын.

Тапсырманы орындауғ а ә дістемелік нұ сқ аулар:

Тапсырма №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.

 

7.2-сурет. Модуль қ ұ ру терезесі

Ұ сынылатын ә дебиеттер: [1-9]

Бекіту сұ рақ тары:

1. Object Pascal тіліндегі кластар дегеніміз не?

2. Кластың басқ а типтерден қ андай айырмашылығ ы бар?

3. Кластар негізінде қ андай іргелі ұ ғ ымдар анық талады?

4. Инкапсуляция дегеніміз не?

5. Мү рагерлік принципі дегеніміз не?

6. Object Pascal тілінің барлық кластары қ андай ата-аналық кластан тарайды?

7. Delphi ортасындағ ы кластар тармағ ын қ алай сипаттауғ а болады?

8. Полиморфизм дегеніміз не?

9. Ө ріс дегеніміз не?

10. Ә дістер дегеніміз не жә не олар қ алай бейнеленеді?

11. Ә дістерді динамикалық жә не статикалық ауыстыруды қ алай тү сіндіруге болады?

12. Ә дісті алмастыру қ андай директивамен хабарланады?

13. SHOW жә не HIDE ә дістерінің қ ызметі қ андай?

14. Динамикалық жә не вертуалдық ә дістердің арасында қ андай айырмашылық бар?

15. Конструктор жә не деструктор ә дістерінің қ ызметі қ андай?

16. Бір атаулы ә дістер дегеніміз не?

17. Бір атаулы ә дісті хабарлау ү шін қ андай қ ызметші сө з пайдаланылады?

18. Қ асиеттер дегеніміз не?

19. Қ асиеттер қ андай қ ызметші сө здердің кө мегімен хабарланады?

20. Delphi ортасындағ ы кластардың хабарлауына сипаттама беріндер?

21. Public, Private, Protected, Automated секцияларының қ ызметі қ андай?

22. Интерфейс дегеніміз не?

23. Интерфейс қ андай қ ызметші сө збен хабарланады?

24. Интерфейстің кластан айырмашылығ ы қ андай?

25. Интерфейсте хабарланғ ан мү шелер қ ай секцияларда орналасады?

26. Ә деттегі кластан интерфейстік кластың айырмашылығ ы қ андай?

27. Интерфейстік кластар қ андай аталық тан туындайды?

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.019 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал