Место Delphi в современном программировании

Автор работы: Пользователь скрыл имя, 21 Ноября 2013 в 06:51, курсовая работа

Описание работы

Требования к современному программированию привели к созданию многочисленных RAD-систем (от англ. RAD — Rapid Application Development — быстрая разработка приложений), представляющих собой интегрированные среды разработчика, включающие в себя:
- средства быстрого и удобного построения программ, в том числе визуального;
- встроенные компиляторы и отладчики;
- системы коллективной разработки проектов и т.д.
Одной из таких RAD-систем является Delphi. Итак, Delphi — это объектно-ориентированная среда для визуального проектирования Windows приложений с развитыми механизмами повторного использования программного кода. Основным конкурентом Delphi является среда разработк Microsoft Visual C++, имеющая свои преимущества и недостатки, однако являющаяся более популярной, в основном, в силу того, что разработана именно фирмой Microsoft Существенной чертой Delphi является компонентная модель разработки программных продуктов.

Содержание работы

ВВЕДЕНИЕ 3
1. ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ 4
1.1 Основные характеристики языка 4
1.1.1 Общая характеристика Delphi. 4
1.1.2 Место Delphi в современном программировании. 4
1.2 Численное интегрирование 5
1.2.1 Метод прямоугольников 6
1.2.2 Метод трапеций 6
1.2.3 Метод парабол (метод Симпсона) 7
1.2.4 Метод Боде 7
1.2.5 Метод Уэддля 7
2. ПРОЕКТНАЯ ЧАСТЬ 8
2.1. Постановка задачи 8
2.3. Блок-схемы подпрограмм 9
2.3.1. Метод прямоугольников 9
2.3.2. Метод трапеций 10
2.3.3. Метод парабол (Симпсона) 11
2.3.4. Метод Бодэ 12
2.3.5. Метод Уэдлла 12
2.4. Разработка интерфейса 13
3. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ 15
3.1. Тестирование программы 15
ЗАКЛЮЧЕНИЕ 18
СПИСОК ЛИТЕРАТУРЫ 19
Приложение 1. Листинг программы. 20

Файлы: 1 файл

Kursovaya.docx

— 339.98 Кб (Скачать файл)

 

Таблица 1 – Свойства объектов

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

 

    1. Тестирование программы

 

Тестирование оценивает  корректность выполнения приложения БД. Программа тестируется с целью обнаружения ошибок, а также с целью проверки соответствия всем требованиям поставленной задачи.

 

Тест №1

Входные данные 2

Эталон  результата =0,33333

Результат программы представлен на рисунке 3.

 

 

Рисунок 3– вычисление 2dx

Тест  №2

Входные данные dx

Эталон  результата =0,0347097

Результат программы представлен на рисунке 4.

 

    

Рисунок 4– вычисление dx

 

 

 

 

 

 

 

 

 

Тест №3

Входные данные dx

Эталон  результата =0,535017

Результат программы представлен на рисунке 5.

 

    

Рисунок 5– вычисление dx

 

 

 

 

 

 

 

 

 

ЗАКЛЮЧЕНИЕ

Проблема  повышения качества вычислений, как  несоответствие между желаемым и  действительным, существует и будет  существовать в дальнейшем. Ее решению  будет содействовать развитие информационных технологий, которое заключается  как в совершенствовании методов  организации информационных процессов, так и их реализации с помощью  конкретных инструментов - сред и языков программирования.

Итогом  работы можно считать созданную  функциональную модель реализации численного интегрирования функции двух переменных. Созданная функциональная модель и  ее программная реализация могут  служить органической частью решения  более сложных задач.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СПИСОК ЛИТЕРАТУРЫ

 

  1. Численное интегрирование [Электронный ресурс] - Режим доступа: http://mathworld.wolfram.com/
  2. Дьяконов В.П. Справочник по расчетам на микрокалькуляторах М.: Наука, Гл. ред. физ-мат литературы, 1985. -224 с.
  3. Л. Залогова Разработка Паскаль-компилятора М.:Бином. Лаборатория знаний , 2007. -184 с.
  4. Васильев Ф.П. Численные методы решения экстремальных задач. [Текст] / Ф.П. Васильев - М.: Наука, 2002. - 415с.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение 1. Листинг программы.

 

 

program ProjectKurs;

 

uses

  Forms,

  Unit1 in 'Unit1.pas' {Form1},

  evalcomp in 'evalcomp.pas',

  Integration in 'Integration.pas',

  Unit2 in 'Unit2.pas' {Form2};

 

{$R *.res}

begin

  Application.Initialize;

  Application.CreateForm(TForm1, Form1);

  Application.CreateForm(TForm2, Form2);

  Application.Run;

end.

 

 

 

 

 

 

unit Unit1;

interface

 

uses

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

  Dialogs, StdCtrls, ExtCtrls, Menus, evalcomp, Integration, TeEngine,

  Series, TeeProcs, Chart;

 

type

  TForm1 = class(TForm)

    dlgOpen1: TOpenDialog;

    rg1: TRadioGroup;

    btn1: TButton;

    mmo1: TMemo;

    mm1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    N3: TMenuItem;

    N4: TMenuItem;

    dlgSave1: TSaveDialog;

    N5: TMenuItem;

    edt1: TEdit;

    edt2: TEdit;

    lbl1: TLabel;

    lbl2: TLabel;

    cht1: TChart;

    fstlnsrsSeries1: TFastLineSeries;

    lbl3: TLabel;

    edt3: TEdit;

    lbl4: TLabel;

    edt4: TEdit;

    btn2: TButton;

    btn3: TButton;

    procedure N2Click(Sender: TObject);

    procedure N3Click(Sender: TObject);

    procedure N4Click(Sender: TObject);

    procedure N5Click(Sender: TObject);

    procedure btn1Click(Sender: TObject);

    procedure edt1KeyPress(Sender: TObject; var Key: Char);

    procedure edt2KeyPress(Sender: TObject; var Key: Char);

    procedure edt3KeyPress(Sender: TObject; var Key: Char);

    procedure edt4KeyPress(Sender: TObject; var Key: Char);

   procedure changeMetod(Sender: TObject);

    procedure btn2Click(Sender: TObject);

    procedure btn3Click(Sender: TObject);

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

 

implementation

 

uses Unit2;

var

  formula:string;

 

{$R *.dfm}

 

procedure TForm1.changeMetod(Sender: TObject);

begin

  case (rg1.ItemIndex)of

4:

  begin

      edt3.Visible:=False;

      lbl3.Visible:=False;

      edt4.Visible:=True;

      lbl4.Visible:=True;

  end

else

begin

       edt4.Visible:=False;

       lbl4.Visible:=False;

       edt3.Visible:=True;

       lbl3.Visible:=True;

end;

  end;

end;

 

procedure TForm1.N2Click(Sender: TObject);   //загрузка из текстового файла

begin

if dlgOpen1.Execute then

mmo1.Lines.LoadFromFile(dlgOpen1.FileName);

formula:=mmo1.Lines.Text;

end;

 

procedure TForm1.N3Click(Sender: TObject);  //сохранение результатов в текстовой файл

var

  ext: String;

begin

  ext:='.txt';

  if dlgSave1.Execute then

      mmo1.Lines.SaveToFile(dlgSave1.FileName+ext);

end;

 

procedure TForm1.N4Click(Sender: TObject); //закрытие программы

begin

Form1.Close

end;

 

procedure TForm1.N5Click(Sender: TObject); //вызов формы “о программе”

begin

    if(not Assigned(Form2))then

      Form2:=TForm2.Create(Self);

      Form2.Show;

end;

 

Function StringIsEmpty (S :String) :Boolean;  //проверка на данные

  Var

N :Integer;

  Begin

    Result:=FALSE;

     For N:=1 To Length(S) Do

      If S[N]<>' 'Then

      Begin

Result:=TRUE;

       Break;

       End

  End;

 

  procedure TForm1.btn1Click(Sender: TObject);

  var x, y, g:real;

  begin

  if(StringIsEmpty(edt2.Text) and StringIsEmpty(edt1.Text) and (StringIsEmpty(edt3.Text) or StringIsEmpty(edt4.Text)) and StringIsEmpty(formula) and  StringIsEmpty(mmo1.Text) ) then

       begin

          mmo1.Lines.Add('------------------------------------------');

         case rg1.ItemIndex of

       0:

          begin

mmo1.Lines.Add('a='+edt2.Text+'  '+'b='+edt1.Text+'   '+'eps='+edt3.Text);

mmo1.Lines.Add('Метод  прямоугольников');

mmo1.Lines.Add('int'+formula+('dx')+'='+ FloatToStr(SquareInt(StringToCursor(edt2.Text), StringToCursor(edt1.Text), StrToFloat(edt3.Text), formula)));

          end;

         

1:

          begin

           mmo1.Lines.Add('a='+edt2.Text+'  '+'b='+edt1.Text+'   '+'eps='+edt3.Text);

           mmo1.Lines.Add('Метод парабол');

mmo1.Lines.Add('int '+formula+('dx') +'='+ FloatToStr(SimpsonInt(StringToCursor(edt2.Text),StringToCursor(edt1.Text), StrToFloat(edt3.Text), formula)));

           end;

 

         2:

         begin

           mmo1.Lines.Add('a='+edt2.Text+'  '+'b='+edt1.Text+'   '+'eps='+edt3.Text);

         mmo1.Lines.Add('Метод трапеций');

mmo1.Lines.Add('int '+formula+('dx') +'='+ FloatToStr(TrapezeInt(StringToCursor(edt2.Text),StringToCursor(edt1.Text), StrToFloat(edt3.Text), formula)));

           end;

 

         3:

          begin

           mmo1.Lines.Add('a='+edt2.Text+'  '+'b='+edt1.Text+'   '+'eps='+edt3.Text);

           mmo1.Lines.Add('Метод Бодэ');

mmo1.Lines.Add('int '+formula+('dx') +'='+ FloatToStr(BodeInt(StringToCursor(edt2.Text),StringToCursor(edt1.Text), StrToFloat(edt3.Text), formula)));

           end;

         

4:

          begin

          mmo1.Lines.Add('a='+edt2.Text+'  '+'b='+edt1.Text+'   '+'n='+edt4.Text);

           mmo1.Lines.Add('Метод Уэддля');

mmo1.Lines.Add('int '+formula+('dx') +'='+ FloatToStr(UeddlsInt(StringToCursor(edt2.Text),StringToCursor(edt1.Text), StrToInt(edt4.Text), formula)));

           end;

 

         else

           Application.Messagebox('Выберите метод','Ошибка', mb_iconerror  or mb_iconerror );

         end;

       

cht1.SeriesList[0].clear;

g:=0.01;

x:=0;

while (x<=1) do // Начинаем построение графика функции у=ln(х+1).

        begin

        y:=returnY(x, formula);

        x:=x+g;

        cht1.SeriesList[0].AddXY(x,y,'',clRed);

        end;

end

 

else

  Application.Messagebox('Введите параметры','Ошибка', mb_iconerror  or mb_iconerror );

end;

 

 

procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);

begin

case Key of

'0'..'9': ;

#8 : ;

#13 : edt2.SetFocus ;

else

Key :=Chr(0);

end;

end;

 

procedure TForm1.edt2KeyPress(Sender: TObject; var Key: Char);

begin

  case Key of

  '0'..'9': ;

#8 : ;

#13 : edt3.SetFocus ;

else

Key :=Chr(0);

end;

end;

 

procedure TForm1.edt3KeyPress(Sender: TObject; var Key: Char);

begin

    case Key of

'0'..'9': ;

',': ;

#8 : ;

#13 : btn1.SetFocus ;

else

Key :=Chr(0);

end; 

end;

 

procedure TForm1.edt4KeyPress(Sender: TObject; var Key: Char);

begin

    case Key of

'0'..'9': ;

',': ;

#8 : ;

#13 : btn1.SetFocus ;

else

Key :=Chr(0);

end;

end;

 

procedure TForm1.btn2Click(Sender: TObject); //очиска полей

begin

edt1.Clear;

edt2.Clear;

edt3.Clear;

edt4.Clear;

end;

 

 

 

 

procedure TForm1.btn3Click(Sender: TObject);//очистка формы

begin

mmo1.Clear;

end;

end.

 

 

unit evalcomp;  //модуль парсинга строки в мат формулу

 

interface

 

type fun= function(x,y:real):real;

evalvec= ^evalobj;

evalobj= object

f1,f2:evalvec;

f1x,f2y:real;

f3:fun;

function eval:real;

function eval1d(x:real):real;

function eval2d(x,y:real):real;

function eval3d(x,y,z:real):real;

constructor init(st:string);

destructor done;

end;

var  evalx,evaly,evalz:real;

 

implementation

 

var analysetmp:fun;

 

function search (text,code:string; var pos:integer):boolean;

var

i,l,count:integer;

flag:boolean;

newtext:string;

begin

if length(text)<length(code) then begin search:=false; exit; end;

flag:=false;

pos:=length(text)-length(code)+1;

repeat

if code=copy(text,pos,length(code))

then flag:=true

else dec(pos);

if flag then

begin

count:=0;

for i:= pos+1 to length(text) do

begin

If copy(text,i,1) = '(' then inc(count);

if copy(text,i,1) = ')' then dec(count);

end;

if count<>0 then

begin

dec(pos);

flag:=false;

end;

end;

until (flag=true) or (pos=0);

search:=flag;

end;

 

//далее функции преобразования найденных строк-формул в формулы

 

function myid(x,y:real):real;

begin

myid:=x;

end;

 

function myunequal(x,y:real):real;

begin

if x<>y then

myunequal:=1

else

myunequal:=0;

end;

 

function mylessequal(x,y:real):real;

begin

if x<=y then

mylessequal:=1

else

mylessequal:=0;

end;

 

function mygreaterequal(x,y:real):real;

begin

if x>=y then

mygreaterequal:=1

else

mygreaterequal:=0;

end;

 

function mygreater(x,y:real):real;

begin

if x>y then

mygreater:=1

else

mygreater:=0;

end;

 

 

 

 

 

function myless(x,y:real):real;

begin

if x<y then

myless:=1

else

myless:=0;

end;

 

function myequal(x,y:real):real;

begin

if x=y then

myequal:=1

else

myequal:=0;

end;

 

function myadd(x,y:real):real;

begin

myadd:=x+y;

end;

 

function mysub(x,y:real):real;

begin

mysub:=x-y;

end;

 

function myeor(x,y:real):real;

begin

myeor:=trunc(x) xor trunc(y);

end;

 

function myor(x,y:real):real;

begin

myor:=trunc(x) or trunc(y);

end;

 

function mymult(x,y:real):real;

begin

mymult:=x*y;

end;

 

function mydivid(x,y:real):real;

begin

mydivid:=x/y;

end;

 

function myand(x,y:real):real;

begin

myand:=trunc(x) and trunc(y);

end;

 

function mymod(x,y:real):real;

begin

mymod:=trunc(x) mod trunc(y);

end;

 

function mydiv(x,y:real):real;

begin

mydiv:=trunc(x) div trunc(y);

end;

 

function mypower(x,y:real):real;

begin

if x=0 then

mypower:=0

else

if x>0 then

mypower:=exp(y*ln(x))

else

if trunc(y)<>y  then

begin

break;

end

else

if odd(trunc(y))=true then

mypower:=-exp(y*ln(-x))

else

mypower:=exp(y*ln(-x))

end;

 

function myshl(x,y:real):real;

begin

myshl:=trunc(x) shl trunc(y);

end;

 

function myshr(x,y:real):real;

begin

myshr:=trunc(x) shr trunc(y);

end;

 

function mynot(x,y:real):real;

begin

mynot:=not trunc(x);

end;

 

function mysinc(x,y:real):real;

begin

if x=0 then

mysinc:=1

else

mysinc:=sin(x)/x

end;

 

function mysinh(x,y:real):real;

begin

mysinh:=0.5*(exp(x)-exp(-x))

end;

 

function mycosh(x,y:real):real;

begin

mycosh:=0.5*(exp(x)+exp(-x))

end;

 

function mytanh(x,y:real):real;

begin

mytanh:=mysinh(x,0)/mycosh(x,0)

end;

 

function mycoth(x,y:real):real;

begin

mycoth:=mycosh(x,0)/mysinh(x,0)

end;

 

function mysin(x,y:real):real;

begin

mysin:=sin(x)

end;

 

function mycos(x,y:real):real;

begin

mycos:=cos(x)

end;

 

function mytan(x,y:real):real;

begin

mytan:=sin(x)/cos(x)

end;

 

function mycot(x,y:real):real;

begin

mycot:=cos(x)/sin(x)

end;

 

function mysqrt(x,y:real):real;

begin

mysqrt:=sqrt(x)

end;

 

function mysqr(x,y:real):real;

begin

mysqr:=sqr(x)

end;

 

function myarcsinh(x,y:real):real;

begin

myarcsinh:=ln(x+sqrt(sqr(x)+1))

end;

 

function mysgn(x,y:real):real;

begin

if x=0 then

mysgn:=0

else

mysgn:=x/abs(x)

end;

 

function myarccosh(x,y:real):real;

begin

myarccosh:=ln(x+mysgn(x,0)*sqrt(sqr(x)-1))

end;

 

function myarctanh(x,y:real):real;

begin

myarctanh:=ln((1+x)/(1-x))/2

end;

 

function myarccoth(x,y:real):real;

begin

myarccoth:=ln((1-x)/(1+x))/2

end;

 

function myarcsin(x,y:real):real;

begin

if x=1 then

myarcsin:=pi/2

else

myarcsin:=arctan(x/sqrt(1-sqr(x)))

end;

 

function myarccos(x,y:real):real;

begin

myarccos:=pi/2-myarcsin(x,0)

end;

 

function myarctan(x,y:real):real;

begin

myarctan:=arctan(x);

end;

 

function myarccot(x,y:real):real;

begin

myarccot:=pi/2-arctan(x)

end;

 

function myheavy(x,y:real):real;

begin

myheavy:=mygreater(x,0)

end;

 

function myfrac(x,y:real):real;

begin

myfrac:=frac(x)

end;

 

function myexp(x,y:real):real;

begin

myexp:=exp(x)

end;

 

function myabs(x,y:real):real;

begin

myabs:=abs(x)

end;

 

function mytrunc(x,y:real):real;

begin

mytrunc:=trunc(x)

end;

 

function myln(x,y:real):real;

begin

myln:=ln(x)

end;

 

function myodd(x,y:real):real;

begin

if odd(trunc(x)) then

myodd:=1

else

myodd:=0;

end;

 

function mypred(x,y:real):real;

begin

mypred:=pred(trunc(x));

end;

 

function mysucc(x,y:real):real;

begin

mysucc:=succ(trunc(x));

end;

 

function myround(x,y:real):real;

begin

myround:=round(x);

end;

 

function myint(x,y:real):real;

begin

myint:=int(x);

end;

 

function myfac(x,y:real):real;

var

n : integer;

r : real;

begin

if x<0 then begin

halt;

end;

If x = 0 then myfac := 1

else

begin

r := 1;

for n := 1 to trunc ( x ) do

r := r * n;

myfac:= r;

end;

end;

 

function myrnd(x,y:real):real;

begin

myrnd:=random;

end;

 

function myrandom(x,y:real):real;

begin

myrandom:=random(trunc(x));

end;

 

function myevalx(x,y:real):real;

begin

myevalx:=evalx;

end;

 

function myevaly(x,y:real):real;

begin

myevaly:=evaly;

end;

 

function myevalz(x,y:real):real;

begin

myevalz:=evalz;

end;

//анализ  строк

 

procedure analyse (st:string; var st2,st3:string);

label start;

var pos:integer;

value:real;

newterm,term:string;

begin

term:=st;

start:

if term='' then begin analysetmp:=myid; st2:='0'; st3:=''; exit; end;

newterm:='';

for pos:= 1 to length(term) do

if copy(term,pos,1)<>' ' then newterm:=newterm+copy(term,pos,1);

term:=newterm;

if term='' then begin analysetmp:=myid; st2:='0'; st3:=''; exit; end;

val(term,value,pos);

if pos=0 then begin

analysetmp:=myid;

st2:=term;

st3:='';

exit;

end;

if search(term,'<>',pos) then begin

analysetmp:=myunequal;

st2:=copy(term,1,pos-1);

st3:=copy(term,pos+2,length(term)-pos-1);

exit;

end;

if search(term,'<=',pos) then begin

analysetmp:=mylessequal;

st2:=copy(term,1,pos-1);

st3:=copy(term,pos+2,length(term)-pos-1);

Информация о работе Место Delphi в современном программировании