Автор работы: Пользователь скрыл имя, 09 Января 2013 в 13:31, курсовая работа
В данной расчетно-графической работе осуществляется разработка учебной программы по вычислению определённых интегралов(по формулам прямоугольников) с помощью программы Delphi7. Эта программа помогает вычислять некоторые определённые интегралы. В использовании не требует особого обучения . Это приложение популярно среди людей нуждающихся в точном подсчёте интегралов . Подсчёт интегралов не занимает много времени, что так же повышает ее популярность.
ВСТУПЛЕНИЕ……………………………………………..………………………..3
1. ПОСТАНОВКА ЗАДАЧИ…………………………………………….….……...4
2. ПРОЕКТИРОВАНИЕ ПРОГРАММНЫХ СРЕДСТВ………………….……5
2.1. Математические методы решения задачи………………………….…….......6
2.2. Проектирование алгоритмов ………………………………………………..10
2.2.1. Структура программного обеспечения …………………………….....11
2.2.2. Описание разработанных алгоритмов ………………………….…....12
2.2.3. Средства управления программами ……………………………........13
2.3. Информационное обеспечение…...………………………………………....14
2.3.1. Описание входных данных ……………………………….……..…...15
2.3.2. Описание результатов …………………………………….…………...16
3. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ……………………………………………..17
3.1. Описание разработанных программ……….….………………………...18
3.2 Требования к аппаратным и программным средствам…………………..19
3.3. Руководство пользователя ………………………………………………..20
4. ИСПЫТАНИЕ РАЗРАБОТАННЫХ ПРОГРАММ ……………………….....25
4.1 Описание контрольных примеров. Результаты тестирования на ЭВМ...25
ЗАКЛЮЧЕНИЕ…………………………………………………………………….30
ЛИТЕРАТУРА………………………………………………………………..…….31
ПРИЛОЖЕНИЯ ..………………………………………………
ShowMessage('Введены
goto m1;
end;
s:=ms[i];
index:=pos('-',s); //минус
if(index<>0)and(index<>1)then begin
enter_data:=false;
ShowMessage('Введены
goto m1;
end;
end;
Try
for i:=1 to 6 do begin
mr[i]:=RoundTo(StrToFloat(ms[
ms[i]:=FloatToStr(mr[i]);
end;
Except
enter_data:=false;
ShowMessage('Вы ввели неправильные(не числовые) данные ');
flag:=false;
end;
if(flag=false)then goto m1;
if (mr[6] < mr[5]) then begin
enter_data:=false;
ShowMessage('Конец отрезка должен быть больше, чем начало !');
goto m1;
end;
for i:=1 to 4 do
if(mr[i]<0)then ms[i]:='('+ms[i]+')';
enter_data:=true;
m1:end;
//----------------вычисляем
function F(x : real):real;
begin
F := mr[1]*sin(mr[2]*x*3.14/180)+
end;
//----------------вычисляем
Procedure T;
begin
h := 0.01;
n := Trunc((mr[6]-mr[5])/h);
end;
//----------------Вывод в
procedure print_function();
var
s:string;
begin
s:='';
if((mr[1]=0)or(mr[2]=0))and(
else begin
if(mr[1]=1)and(mr[2]=1)then s:=s+'sin(x)'
else begin
if((mr[1]<>0)and(mr[2]<>0))
if(mr[1]=1)then s:=s+'sin('+ms[2]+'*x)'
else begin
if(mr[2]=1)then s:=s+ms[1]+'*sin(x)'
else s:=s+ms[1]+'*sin('+ms[2]+'*x)'
end;
end;
end;
if(mr[3]=1)and(mr[4]=1)then s:=s+'+cos(x)'
else begin
if(mr[3]<>0)then begin
if(mr[4]=0)then s:=s+ms[3]
else begin
if(mr[3]=1)then s:=s+'+cos('+ms[4]+'*x)'
else begin
if(mr[4]=1)then s:=s+'+'+ms[3]+'*cos(x)'
else s:=s+'+'+ms[3]+'*cos('+ms[4]+'
end;
end;
end;
end;
end;
if (s[1]='+')then delete(s, 1, 1);
Form_rez.Label6.Caption:=s;
Form_rez.Label6.Caption:=Form_
end;
//---------------тело программы---------------------
begin
if (enter_data=true) then begin
print_function;
h := 0.1;
T;
I_left:= 0; I_right:= 0; I_central:= 0;
for i:= 1 to n do begin
I_left:= I_left+F(mr[5]+(i-1)*h)*h;
I_right:= I_right+F(mr[5]+i*h)*h;
I_central:= I_central+F(mr[5]+(i-0.5)*h)*
end;
Form_rez.left.Caption := FloattoStr(RoundTo(I_left, -3));
Form_rez.right.Caption := FloattoStr(RoundTo(I_right, -3));
Form_rez.Central.Caption := FloattoStr(RoundTo(I_central, -3));
Form_rez.eps.Caption := FloattoStr(abs(RoundTo((I_
Form5.Visible:=false;
Form_rez.Visible:=true;
end;
end;
procedure TForm5.Button1Click(Sender: TObject);
begin
Form1.Visible := true;
Form5.Visible := false;
end;
procedure TForm5.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Form1.Visible := true;
Form5.Visible := false;
end;
end.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls;
type
TForm_Close = class(TForm)
Image1: TImage;
Label1: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_Close: TForm_Close;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm_Close.FormCloseQuery(
begin
Form_Close.Visible:=false;
Form1.Enabled:=true;
end;
procedure TForm_Close.BitBtn1Click(
begin
halt;
end;
procedure TForm_Close.BitBtn2Click(
begin
Form_Close.Visible:=false;
Form1.Enabled:=true;
end;
end.
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, Buttons;
type
TForm_Task = class(TForm)
Image1: TImage;
Memo1: TMemo;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_Task: TForm_Task;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm_Task.BitBtn1Click(
begin
Form_Task.Visible:=false;
Form1.Enabled:=true;
end;
procedure TForm_Task.FormCloseQuery(
var CanClose: Boolean);
begin
Form_Task.Visible:=false;
Form1.Enabled:=true;
end;
end.
unit Unit8;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm_rez = class(TForm)
Image1: TImage;
GroupBox2: TGroupBox;
Label3: TLabel;
Right: TLabel;
Left: TLabel;
Label5: TLabel;
Central: TLabel;
Label4: TLabel;
Button1: TButton;
Label1: TLabel;
Label6: TLabel;
Label10: TLabel;
eps: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_rez: TForm_rez;
implementation
uses Unit1, Unit2;
{$R *.dfm}
procedure TForm_rez.Button1Click(Sender: TObject);
begin
Form_rez.Visible:=false;
Form1.Visible:=true;
end;
procedure TForm_rez.FormCloseQuery(
begin
Form_rez.Visible:=false;
Form1.Visible:=true;
end;
end.
unit Unit9;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, Math;
type
TForm9 = class(TForm)
Image1: TImage;
Button1: TButton;
Pysk: TButton;
GroupBox1: TGroupBox;
Label11: TLabel;
Label9: TLabel;
Label8: TLabel;
Label7: TLabel;
Label6: TLabel;
Label2: TLabel;
Label12: TLabel;
Label1: TLabel;
st: TEdit;
fin: TEdit;
d: TEdit;
c: TEdit;
b: TEdit;
a: TEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
e: TEdit;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button1Click(Sender: TObject);
procedure PyskClick(Sender: TObject);
procedure aKeyPress(Sender: TObject; var Key: Char);
procedure bKeyPress(Sender: TObject; var Key: Char);
procedure cKeyPress(Sender: TObject; var Key: Char);
procedure dKeyPress(Sender: TObject; var Key: Char);
procedure eKeyPress(Sender: TObject; var Key: Char);
procedure stKeyPress(Sender: TObject; var Key: Char);
procedure finKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form9: TForm9;
implementation
uses Unit1, Unit8, Unit4;
{$R *.dfm}
procedure TForm9.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Form9.Visible:=false;
Form1.Visible:=true;
end;
procedure TForm9.Button1Click(Sender: TObject);
begin
Form9.Visible:=false;
Form1.Visible:=true;
end;
procedure TForm9.PyskClick(Sender: TObject);
var
h: real;
I_left, I_right, I_central : real;
i, n : longint;
ms:array[1..7] of string;
mr:array[1..7] of real;
//----------------ввод данных------------------------
function enter_data():boolean;
label m1;
var
i, index:integer;
flag:boolean;
s:string;
begin
ms[1]:=a.Text;ms[2]:=b.Text;
for i:=1 to 7 do
if ms[i]='' then begin
enter_data:=false;
ShowMessage('Одно или
Goto m1;
end;
flag:=true;
for i:=1 to 7 do begin
s:=ms[i];
index:=pos(',', s);
delete(s, Pos(',', s), 1);
if(index<>0)and(Pos(',', s)<>0)then begin
enter_data:=false;
ShowMessage('Введены
goto m1;
end;
s:=ms[i];
index:=pos('-',s); //минус
if(index<>0)and(index<>1)then begin
enter_data:=false;
ShowMessage('Введены
goto m1;
end;
end;
Try
for i:=1 to 7 do begin
mr[i]:=RoundTo(StrToFloat(ms[
ms[i]:=FloatToStr(mr[i]);
end;
Except
enter_data:=false;
ShowMessage('Вы ввели неправильные(не числовые) данные ');
flag:=false;
end;
if(flag=false)then goto m1;
if (mr[7] < mr[6]) then begin
enter_data:=false;
ShowMessage('Конец отрезка должен быть больше, чем начало !');
goto m1;
end;
if (mr[7] > 1000) then begin
enter_data:=false;
ShowMessage('Конец отрезка должен быть меньше 1000 !');
goto m1;
end;
for i:=1 to 5 do
if(mr[i]<0)then ms[i]:='('+ms[i]+')';
enter_data:=true;
m1:end;
//----------------x^k---------
function Step(x : real; k : integer):real;
var
i : integer;
p : real;
begin
p := 1;
if k<>0 then
for i := 1 to k do
p := p*x
else p:=1;
Step := p;
end;
//----------------вычисляем
function F(x : real):real;
var
s:real;
i:integer;
begin
s:=0;
for i:=1 to 5 do begin
if(mr[i]<>0)then begin
s:=s+mr[i]*Step(x, 5-i);
end;
end;
F := s;
end;
//----------------вычисляем
Procedure T;
begin
h := 0.01;
n := Trunc((mr[7]-mr[6])/h);
end;
//----------------Вывод в
procedure print_function();
var
s:string;
i:integer;
begin
s:='';
for i:=1 to 5 do begin
if(mr[i]<>0)then begin
if(mr[i]=1)and(i<>4)and(i<>5)
else
if(i<>4)and(i<>5)then s:=s+ms[i]+'*x^'+IntToStr(5-i)
if(i=4)then s:=s+ms[i]+'x+';
if(i=5)then s:=s+FloatToStr(mr[i]);
end;
end;
if(Length(s)=0)then s:='0';
if (s[1]='+')then delete(s, 1, 1);
if (s[length(s)]='+')then delete(s, length(s), 1);
Form_rez.Label6.Caption:=s;
Form_rez.Label6.Caption:=Form_
end;
//---------------тело программы---------------------
begin
if (enter_data=true) then begin
print_function;
h := 0.01;
T;
I_left:= 0; I_right:= 0; I_central:= 0;
for i:= 1 to n do begin
I_left:= I_left+F(mr[6]+(i-1)*h)*h;
I_right:= I_right+F(mr[6]+i*h)*h;
I_central:= I_central+F(mr[6]+(i-0.5)*h)*
end;
Form_rez.left.Caption := FloattoStr(RoundTo(I_left, -3));
Form_rez.right.Caption := FloattoStr(RoundTo(I_right, -3));
Form_rez.Central.Caption := FloattoStr(RoundTo(I_central, -3));
Form_rez.eps.Caption :=
FloattoStr(abs(RoundTo(I_
Form9.visible:=false;
Form_rez.Visible:=true;
end;
end;
procedure TForm9.aKeyPress(Sender: TObject; var Key: Char);
begin
with Sender as TEdit do begin
case Key of
'0': if Text='0' then begin Key:=#0; beep; end;
'1'..'9': ;
',': ;
#8: ;
'-': ;
else begin Key:=#0; beep; end;
end;
end;
end;
procedure TForm9.bKeyPress(Sender: TObject; var Key: Char);
begin
with Sender as TEdit do begin
case Key of
'0': if Text='0' then begin Key:=#0; beep; end;
'1'..'9': ;
',': ;
#8: ;
'-': ;
else begin Key:=#0; beep; end;
end;
end;
end;
procedure TForm9.cKeyPress(Sender: TObject; var Key: Char);
begin
with Sender as TEdit do begin
case Key of
'0': if Text='0' then begin Key:=#0; beep; end;
'1'..'9': ;
',': ;
#8: ;
'-': ;
else begin Key:=#0; beep; end;
end;
end;
end;
procedure TForm9.dKeyPress(Sender: TObject; var Key: Char);
begin
with Sender as TEdit do begin
case Key of
'0': if Text='0' then begin Key:=#0; beep; end;
'1'..'9': ;
',': ;
#8: ;
'-': ;
else begin Key:=#0; beep; end;
end;
end;
end;
procedure TForm9.eKeyPress(Sender: TObject; var Key: Char);
begin
with Sender as TEdit do begin
case Key of
'0': if Text='0' then begin Key:=#0; beep; end;
'1'..'9': ;
',': ;
#8: ;
'-': ;
else begin Key:=#0; beep; end;
end;
end;
end;
procedure TForm9.stKeyPress(Sender: TObject; var Key: Char);
begin
with Sender as TEdit do begin
case Key of
'0': if Text='0' then begin Key:=#0; beep; end;
'1'..'9': ;
',': ;
#8: ;
'-': ;
else begin Key:=#0; beep; end;
end;
end;
end;
procedure TForm9.finKeyPress(Sender: TObject; var Key: Char);
begin
with Sender as TEdit do begin
case Key of
'0': if Text='0' then begin Key:=#0; beep; end;
'1'..'9': ;
',': ;
#8: ;
'-': ;
else begin Key:=#0; beep; end;
end;
end;
end;
end.
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, Math;
type
TForm10 = class(TForm)
Image1: TImage;
GroupBox1: TGroupBox;
Label11: TLabel;
Label9: TLabel;
Label8: TLabel;
Label7: TLabel;
Label6: TLabel;
Label2: TLabel;
Label1: TLabel;
st: TEdit;
fin: TEdit;
c: TEdit;
b: TEdit;
a: TEdit;
Pysk: TButton;
Button1: TButton;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button1Click(Sender: TObject);
procedure PyskClick(Sender: TObject);
procedure aKeyPress(Sender: TObject; var Key: Char);
procedure bKeyPress(Sender: TObject; var Key: Char);
procedure cKeyPress(Sender: TObject; var Key: Char);
procedure stKeyPress(Sender: TObject; var Key: Char);
procedure finKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form10: TForm10;
implementation
uses Unit1, Unit8, Unit9;
{$R *.dfm}
procedure TForm10.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Form10.Visible:=false;
Form1.Visible:=true;
end;
procedure TForm10.Button1Click(Sender: TObject);
begin
Form10.Visible:=false;
Form1.Visible:=true;
end;
procedure TForm10.PyskClick(Sender: TObject);
var
h : real;
I_left, I_right, I_central : real;
i, n : longint;
ms:array[1..5] of string;
mr:array[1..5] of real;
//----------------x^k---------
Информация о работе Програма обчислення визначених інтегралів по квадратурним формулам