51187

Інтерпретатор математичних виразів

Практическая работа

Информатика, кибернетика и программирование

Мета: Навчитися створювати та використовувати власні обєкти, нащадки, віртуальні функції, програмно реалізовувати деревоподібні графи.

Украинкский

2014-02-07

25.62 KB

0 чел.

Розробив

Олійник Д.А.

26.04.13

ДРПК.020180.015

Аркуш

Перевірив

Рудакова М.

1

Змін

Арк.

№ Докум

Підпис

Дата

Практична робота№8

Тема:Інтерпретатор математичних виразів.

Мета : Навчитися створювати та використовувати власні об’єкти, нащадки, віртуальні

           функції, програмно реалізовувати деревоподібні графи.

Хід роботи:

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls;

type

 PTEElement=^TElement;

 PPlus=^Plus;

 PMult=^Mult;

 PNumber=^Number;

 TElement=object

 protected

   left,right:PTEElement;

 constructor Create(l,r:PTEElement);

 public

   destructor Erase;

   function rezult:double;virtual;

   end;

 Number=object(TElement)

 private

   f:double;

 public

   constructor Create(float:double);

   function rezult:double;virtual;

   end;

 Plus=object(TElement)

 public

   constructor Create(l,r:PTEElement);

   function rezult:double;virtual;

   end;

 Mult=object(TElement)

 public

   constructor Create(l,r:PTEElement);

   function rezult:double;virtual;

   end;

 TForm1 = class(TForm)

   edt1: TEdit;

   edt2: TEdit;

   edt3: TEdit;

   btn1: TButton

   grp1: TGroupBox;

   lbl1: TLabel;

Розробив

Олійник Д.А..

26.04.13

ДРПК.020180.015

Аркуш

Перевірив

Рудакова М.

2

Змін

Арк.

№ Докум

Підпис

Дата

lbl2: TLabel;   

 grp2: TGroupBox;

  lbl3: TLabel;

   lbl4: TLabel;

   edt4: TEdit;

   grp3: TGroupBox;

   cbb1: TComboBox;

   lbl5: TLabel;

   btn2: TButton;

   procedure btn1Click(Sender: TObject);

   procedure btn2Click(Sender: TObject);

   procedure cbb1Change(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

constructor TElement.Create(l,r:PTEElement);

begin

left:=l; right:=r;

end;

destructor TElement.Erase;

begin

Dispose(left);

Dispose(right);

end;

function TElement.rezult:double;

begin

end;

constructor Number.Create(float:double);

begin

inherited Create(nil,nil);

f:=float;

end;

function Number.rezult:double;

begin

 rezult:=f;

end;

constructor Plus.Create(l,r:PTEElement);

Begin

 inherited Create(l,r);

end;

function Plus.rezult:double;

constructor Mult.Create(l,r:PTEElement);

Розробив

Олійник Д.А.

26.04.13

ДРПК.020180.015

Аркуш

Перевірив

Рудакова М.

3

Змін

Арк.

№ Докум

Підпис

Дата

begin  

inherited Create(l,r);

end;

function Mult.rezult:double;

begin

 rezult:=left^.rezult*right^.rezult;

end;

function form(s:string):PTEElement;

var PtrPlus:PPlus;

   PtrMult:PMult;

   PtrNumber:PNumber;

   p:integer;

   l:integer;

   s1,s2:string;

begin

 l:=length(s);

if pos('+',s)>1 then

begin

p:=pos('+',s);

s1:=copy(s,1,p-1);

s2:=copy(s,p+1,l-p);

New(PtrPlus,Create(form(s1),form(s2)));

form:=PtrPlus;

end  else

if Pos('*',s)>1 then

begin

p:=pos('*',s);

s1:=copy(s,1,p-1);

s2:=copy(s,p+1,l-p);

New(PtrMult,Create(form(s1),form(s2)));

form:=PtrMult;

end else

if s='x' then

begin

 New(PtrNumber, Create(StrToFloat(form1.edt3.Text)));

 form:=PtrNumber;

end else

begin

 New(PTRNumber,Create(StrToFloat(s)))

end;

end;

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);

begin

Close;

end;

Розробив

Олійник Д.А.

26.04.13

ДРПК.020180.015

Аркуш

Перевірив

Рудакова М.

4

Змін

Арк.

№ Докум

Підпис

Дата

procedure TForm1.btn2Click(Sender: TObject);

var dec:integer;

x,fx:PTEElement;

begin

dec:=StrTOInt(cbb1.Text);

x:=form(edt1.Text);

edt3.Text:=FloatTOStrF(x^.rezult,ffFixed,25,dec);

fx:=form(edt2.Text);

edt4.Text:=FloatToStrF(fx^.rezult,ffFixed,25,dec);

end;

procedure TForm1.cbb1Change(Sender: TObject);

begin

if cbb1.Text<> '' then btn2Click(btn2);

end;

end.

Висновок: Я навчився створювати та використовувати власні об’єкти, нащадки, віртуальні функції, та програмно реалізовувати деревоподібні графи.


 

А также другие работы, которые могут Вас заинтересовать

17328. ПРЕДМЕТ І ЗАВДАННЯ КУРСУ ПОЛІТЕКОНОМІЇ 85.5 KB
  ПРЕДМЕТ І ЗАВДАННЯ КУРСУ ПОЛІТЕКОНОМІЇ 1. Предмет курсу Економічне життя суспільства є надзвичайно багатогранним. Його вивчає система економічних наук які включають науки про загальні закони економічного розвитку галузеві економічні науки науки що розглядають конкр...
17329. ЕКОНОМІЧНА ДУМКА СТАРОДАВНЬОГО СВІТУ ТА СЕРЕДНЬОВІЧЧЯ. МЕРКАНТИЛІЗМ 263.5 KB
  ЕКОНОМІЧНА ДУМКА СТАРОДАВНЬОГО СВІТУ ТА СЕРЕДНЬОВІЧЧЯ. МЕРКАНТИЛІЗМ Історія економічної думки бере свій початок у глибокій давнині. Уже первісні люди мали якісь зачатки господарських знань котрі були результатом осмислення виробничого досвіду. З розвитком сус
17330. КЛАСИЧНА ШКОЛА ПОЛІТИЧНОЇ ЕКОНОМІЇ 220 KB
  КЛАСИЧНА ШКОЛА ПОЛІТИЧНОЇ ЕКОНОМІЇ Розвиток капіталістичних відносин спричинив занепад меркантилізму передовсім в Англії найбільш економічно розвинутій країні. Інтереси буржуазії переміщуються зі сфери обігу у сферу виробництва. На перший план виходить проми
17331. ЕВОЛЮЦІЯ КЛАСИЧНОЇ ПОЛІТИЧНОЇ ЕКОНОМІЇ В ПЕРШІЙ ПОЛОВИНІ ХІХ СТОЛІТТЯ. ЗАВЕРШЕННЯ КЛАСИЧНОЇ ТРАДИЦІЇ 309 KB
  Еволюція класичної політичної економії в першій половині ХІХ століття. завершення класичної традиції Класична школа політичної економії започаткована Адамом Смітом і Давидом Рікардо справила великий вплив на дальший розвиток економічної науки та формуванн...
17332. КРИТИЧНИЙ НАПРЯМ ПОЛІТИЧНОЇ ЕКОНОМІЇ. ФОРМУВАННЯ СОЦІАЛІСТИЧНИХ ІДЕЙ 97 KB
  КРИТИЧНИЙ НАПРЯМ ПОЛІТИЧНОЇ ЕКОНОМІЇ. ФОРМУВАННЯ СОЦІАЛІСТИЧНИХ ІДЕЙ Початок XIX ст. ознаменувався бурхливим розвитком капіталізму що був прискорений промисловим переворотом. Розвиток капіталістичних відносин супроводжувався занепадом і розкладом дрібного виро
17333. ЕКОНОМІЧНІ ВЧЕННЯ ЗАХІДНОЄВРОПЕЙСЬКИХ СОЦІАЛІСТІВ-УТОПІСТІВ 150 KB
  ЕКОНОМІЧНІ ВЧЕННЯ ЗАХІДНОЄВРОПЕЙСЬКИХ СОЦІАЛІСТІВУТОПІСТІВ Економічна теорія особлива форма переосмислення дійсності з метою її вдосконалення. Вона завжди виходила з того що економічне життя суспільства є базовим щодо інших сторін суспільного буття і виз...
17334. ВИНИКНЕННЯ АЛЬТЕРНАТИВНОЇ ШКОЛИ ПОЛІТИЧНОЇ ЕКОНОМІЇ. НІМЕЦЬКА НАЦІОНАЛЬНА ПОЛІТЕКОНОМІЯ 146 KB
  Виникнення альтернативної школи політичної економії. Німецька національна політекономія У XIX cт. доктрина Адама Сміта користувалася загальним визнанням залишаючи далеко позаду інші економічні теорії. Хоча послідовники класичної школи пропонували власні кор
17335. МАРЖИНАЛІЗМ. СТАНОВЛЕННЯ НЕОКЛАСИЧНОЇ ТРАДИЦІЇ В ЕКОНОМІЧНІЙ ТЕОРІЇ 181.5 KB
  МАРЖИНАЛІЗМ. СТАНОВЛЕННЯ НЕОКЛАСИЧНОЇ ТРАДИЦІЇ В ЕКОНОМІЧНІЙ ТЕОРІЇ В останній третині ХІХ ст. в економічній теорії виникла нова течія маржиналізм яка згодом стала визначальним напрямом розвитку політичної економії. Обєктивна зумовленість її появи поляга
17336. ЕКОНОМІЧНА ДУМКА В РОСІЇ 174 KB
  ЕКОНОМІЧНА ДУМКА В РОСІЇ На стані російської суспільної у тім числі економічної думки ХІХ ст. позначились особливості історичного розвитку країни. Якщо на Заході економічна думка вирішувала проблеми капіталізму як реально існуючого способу виробництва то прогре...