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.

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


 

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

69585. RIP практика 3.01 MB
  На прошлом уроке были рассмотрены основные приемы конфигурации протокола RIP. Для закрепления полученных знаний и приобретения практических навыков конфигурирования составных сетей, работающих под управлением протокола RIP, рассмотрим примеры настроек приведенных схем.
69586. ICMP сетевой администратор 2.56 MB
  Проверить возможность обмениваться пакетами произвольной длины между своим узлом и любым узлом составной сети с помощью сообщений типа 0 и 8 (Echo и Echo Reply Message). Проверить время отклика стека на станции с помощью сообщений типа 13 и 14 (Timestamp и Timestamp Reply).
69587. ARP 2.54 MB
  Теоретическая возможность взаимодействия в составных сетях, как следует из рассмотренных ранее тем, существует. Для более детального изучения данного процесса необходимо перейти к изучению его отдельных составляющих. Последовательное рассмотрение этапов взаимодействия при передаче...
69588. ТЕПЛОВІДДАЧА ВЕРТИКАЛЬНОЇ ТРУБКИ ЗА УМОВ ВІЛЬНОГО РУХУ ПОВІТРЯ (ПРИРОДНА КОНВЕКЦІЯ) 414 KB
  У цій лабораторній роботі необхідно: Експериментально визначити значення локальних та середніх коефіцієнтів тепловіддачі для умов вільного руху повітря поблизу поверхні вертикальної трубки а також знайти локальну товщину граничного пласту рідини для фіксованих значень подовжньої...
69591. РЕКУПЕРАТИВНИЙ ВОДНО-ПОВІТРЯНИЙ ТЕПЛООБМІННИЙ АПАРАТ ТИПУ “ТРУБКА У ТРУБЦІ” 127.5 KB
  Метою лабораторної роботи є поглиблення знань із теорії розрахунків теплообмінних апаратів, ознайомлення із методикою експериментального дослідження різних режимів роботи теплообмінних апаратів, набуття навичок проведення єкспериментів.
69593. ВИЗНАЧЕННЯ КОЕФІЦІЄНТА ТЕМПЕРАТУРОПРОВІДНОСТІ СИПУЧИХ ТІЛ МЕТОДОМ РЕГУЛЯРНОГО РЕЖИМУ 771.5 KB
  Метою роботи є поглиблення знань з теорії нестаціонарної теплопровідності; вивчення методики дослідного визначення коефіцієнта температуропровідності, набуття навичок у проведенні експерименту та оцінка похибок дослідження.