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.

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


 

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

19753. Организация эксплуатации внутренних систем. Техническое освидетельствование трубопроводов и сосудов, работающих под давлением 16.83 KB
  Организация эксплуатации внутренних систем. Техническое освидетельствование трубопроводов и сосудов работающих под давлением Техническое освидетельствование сосуда работающего под давлением проводится: до пуска в работу первичное; после монтажа периодически...
19754. Организация эксплуатации тепловых сетей. Категорийность трубопроводов 16.24 KB
  Организация эксплуатации тепловых сетей. Категорийность трубопроводов На каждом предприятии должно быть организовано круглосуточное управление режимами работы теплопотребляющих установок и тепловых сетей задачами которого являются: ведение заданных режимов ра...
19755. Организация эксплуатации водонагревательного и теплоиспользующего оборудования 18.46 KB
  Организация эксплуатации водонагревательного и теплоиспользующего оборудования Э231. Для каждого водоподогревателя на основе проектных данных и испытаний должна быть установлена техническая характеристика со следующими показателями: а тепловая производительность...
19756. Порядок и сроки освидетельствования теплоиспользующего оборудования 17.95 KB
  Порядок и сроки освидетельствования теплоиспользующего оборудования Теплоиспользующие установки подвергаются наружному и внутреннему осмотру а также гидравлическому испытанию. Внутренний осмотр и гидравлическое испытание теплоиспользующих аппаратов подлежащи...
19757. Виды ремонта теплотехнического оборудования. Их планирование и организация. Основные неисправности, возникающие при эксплуатации котлов и теплотехнического оборудования 18.3 KB
  Виды ремонта теплотехнического оборудования. Их планирование и организация. Основные неисправности возникающие при эксплуатации котлов и теплотехнического оборудования капитальные ремонты. Текущий ремонт выполняют за счет оборотных средств а капитальный за счет
19758. Диагностика котлов 21.65 KB
  Диагностика котлов Работы по техническому диагностированию паровых и водогрейных котлов имеют право выполнять организации имеющие разрешительные документы технадзора которые располагают необходимыми средствами технического диагностирования паровых и водог...
19759. Фізичні властивості рідини 52 KB
  Розділ 1. Фізичні властивості рідини Гідромеханіка як наука: загальні положення історичні відомості. Рідина її основні властивості. Закон внутрішнього тертя Ньютона. 1 Гідромеханіка гідро вода рідина; механіка рух наука яка вив
19760. Основи гідростатики 82 KB
  Розділ 2. Основи гідростатики Дія на рідину. Гідростатичний тиск його властивості. Основне рівняння гідростатики. Закон Паскаля його практичне застосування. Тиск рідини на плоску та криву поверхню. Гідростатичний парадокс. Закон Архімеда умови плаванн...
19761. Основи гідродинаміки 183.5 KB
  Основи гідродинаміки Основні поняття та визначення. Рівняння нерозривності потоку його зміст та види запису. Рівняння Бернуллі його фізичний та геометричний зміст види запису. 1 Гідродинаміка розділ гідромеханіки який вивчає закони руху рі...