на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Программа вычисления значения определённого интеграла
p align="left"> Delphi - прекрасный инструмент разработки, но в то же время и сложная программная среда, состоящая из многих элементов.

2. ПРАКТИЧЕСКИЕ АСПЕКТЫ ПРОГРАММЫ

2.1 Функционально-структурная схема

Рис. 1 - Функционально-структурная схема

2.2 Иерархия форм

Рис.2 - Главная форма

Рис. 3- API -функции

Рис.4 - Главная форма (прорисовка графиков)

Рис.5 -Наглядный метод решения

Рис.6 - Настройки

Рис 7 - Главная форма для вычисления интеграла

Работа с программой начинается с этой формы.

На этой форме вы можете рассчитать интеграл:

1. Выбрать интеграл

2. Выбрать метод (трапеций, Симпсона)

3. Ввести верхний предел интеграла

4. Ввести нижний предел интеграла

5. Ввести число разбиений

6. Нажав клавишу «Вперед» вычислить значение интеграла

Рис 8 - Форма для прорисовки графиков

На этой форме можно получить значения интегралов в зависимости от значений нижней границы при фиксированных значениях верхней границы определенного интеграла и построить графики

1. Выбрать интеграл

2. Нажать клавишу «График» и получить график выбранного вами интеграла

Рис 9 - Таблицы

На этой форме показан более детально метод нахождения интегралов.

Форма для применения функции Windows API SetForegroundWindow(HWND:hwnd);

Рис 10 - API -функции

На этой форме можно применить функцию SetForegroundWindow(HWND:hwnd) путем нажатия клавиши «Применить».

Форма для применения функции Windows API SetCurrentDirectory(IpPathName:PChar):bool;

Рис.11 - API-функции

На этой форме можно применить функцию SetCurrentDirectory(IpPathName:PChar):bool;

путем нажатия клавиши «Применить».

Форма настроек главной формы

Рис.12 - Настройки

На этой форме расположены настройки с помощью которых настраивается цвет и шрифты главной формы.

2.3 Элементы главной формы

Элемент формы

Назначение

Событие

Bitgraf

Кнопка для запуска процедуры прорисовки графиков

BitgrafClick

Buclear

Кнопка для очистки поля для вывода значений интегралов

BuclearClick

Burun

Кнопка для запуска процедуры вычисления интегралов

BurunClick

Cbint

Переключатель для выбора интеграла

CbintChange

CBmet

Переключатель для выбора метода решения

ColorDialog

Палитра для выбора цвета

DateTimePicker

Календарь (день,месяц,год)

Edzn1

Поле для ввода нижнего предела интеграла

Edzn2

Поле для ввода верхнего предела интеграла

Gauge

Компонент для визуального отображения степени завершенности некоторой длительной орерации или процесса

Imgraf

Поле для вывода графически результатов вычисления

Imint

Поле для вывода графического изображения интеграла

Kurs

Главная форма

MainMenu

FormCreate

LbCbint

Метка которая указывает на переключатель Cbint

LbCbmet

Метка которая указывает на переключатель Cbmet

LbEdzn1

Метка которая указывает

поле Edzn1

LbEdzn2

Метка которая указывает

поле Edzn2

LbintGraf

Метка которая указывает

поле Imgraf

MMoutput

Поле для вывода значений припостроении графика

LbznGr

Метка которая указывает

поле MMoutput

N22SetCurrentDirectory

Пункт меню для применении функции SetCurrentDirectory

N22GetCurrentDirectory1Click

N52SetForegroundWindow1Click

Пункт меню для применении функции SetForegroundWindow

N52SetForegroundWindow1Click

RBint1

Переключатель для построения графика на первый интеграл

RBint1Click

RBint2

Переключатель для построения графика на второй интеграл

RBint2Click

StatusBar

Строка для вывода подсказок

2.4 Функции Windows API

SetForeGroundWindow function SetForegroundWindow(hWnd: HWND): BOOL;

Функция SetForegroundWindow(HWND:hwnd) предназначена для перевода окна, которое идентифицируемо пораметром hwnd,в" верхний слой " и перевода на него фокус, независимо от того, какой поток создал это окно.

SetForegroundWindow( HWND hWnd // Маркер(дескриптор) окна, чтобы перенести к переднему плану)

Параметры

hWnd-дискриптор окна который идентифицирует окно, которое должно быть активизировано и перенесено к переднему плану.

Применение:

procedure TForm2.Timer1Timer(Sender: TObject);

begin

SetForegroundWindow(kurs.Handle);

Timer1.Enabled:=false;

end;

Обработчиком события является таймер (Timer1Timer) который и запускает функцию

SetCurrentDirectory

function SetCurrentDirectory(lpPathName: PChar): BOOL;

Функция SetCurrentDirectory(`lpPathName: PChar `) изменяет (устанавливает) текущий каталог. Возвращаемое значение было бы True, если текущий каталог был успешно изменен(заменен), или False, если ошибка произошла.

SetCurrentDirectory(

lpPathName // Адрес названия(имени) нового текущего каталога );

Параметры

lpPathName

Укажите на строку с нулевым символом в

конце, которая определяет путь к новому текущему каталогу.

Применение:

procedure TForm3.Button1Click(Sender: TObject);

begin

SetCurrentDirectory('c:\');

end;

Обработчиком события является кнопка (Button1Click) который и запускает функцию.

2.5 Основные процедуры

Расчет интегралов

procedure TKurs.CbintChange(Sender: TObject);

begin

if CBint.Text='Интеграл №1' then

Imint.Picture.LoadFromFile('int.bmp') else

Imint.Picture.LoadFromFile('int1.bmp');

end;

procedure TKurs.BurunClick(Sender: TObject);

begin

try

try

a:=strtoint(Edzn1.text);

b:=strtoint(Edzn2.text);

n:=strtoint(Edit3.Text);

If (Cbint.Text='Интеграл №1') then

int:=f1;

if (CBmet.Text='Методом Симпсона') then

int1(a,b,n,ss);

if (CBint.Text='Интеграл №1') then

int:=f1;

if (CBmet.Text='Методом трапеций') then

int2(a,b,n,ss);

if (Cbint.Text='Интеграл №2') then

int:=f2;

if (CBmet.Text='Методом Симпсона')then

int1(a,b,n,ss);

if (CBint.Text='Интеграл №2') then

int:=f2;

if (CBmet.Text='Методом трапеций')then

int2(a,b,n,ss);

Memo1.Lines.Add(' '+CBint.Text);

Memo1.Lines.Add((CBmet.Text)+' = '+(FloatToStrF(ss,ffNumber,9,3)));

except

on EConvertError do

begin

raise Exception.Create('Внимание!Ошибка в записи числа!');

end;

end;

finally

if (a)>(b)

then

ShowMessage('Вверхняя граница должна быть больше нижней');

end;

end;

procedure TKurs.FormCreate(Sender: TObject);

begin

han:=loadlibrary('mydll.dll');

if han=0 then showmessage('+Билиотека не найдена!')

else

begin

@f1:=getprocaddress(han,'f1');

@f2:=getprocaddress(han,'f2');

end;

end;

procedure TKurs.int1(a,b:real;n:integer;var ss:real);

var i1,i2,i:integer;h,s,s1,x1,s2,x2,yn,x:real;

begin

i:=1;

s1:=0;

y0:=INT(a);

h:=(b-a)/n;

repeat

x1:=a+i*h;

s1:=s1+INT(x1);

i:=i+2;

until i>n-1;

i1:=2;

s2:=0;

yn:=INT(b);

repeat

x2:=a+i1*h;

s2:=s2+INT(x2);

i1:=i1+2;

until i1>n-2;

yn:=a-n*h;

s:=(h/3)*(y0+4*s1+2*s2+yn);

ss:=s;

end;

procedure TKurs.int2(a,b:real;n:integer;var ss:real);

var i,j:integer;k:real;

begin

Form5.StringGrid1.Cells[0,0]:='I';

Form5.StringGrid1.Cells[1,0]:='Xi';

form5.StringGrid1.Cells[2,0]:='SQR(Xi)';

Form5.StringGrid1.Cells[3,0]:='(0.5*sqr(Xi)+1.5))';

Form5.StringGrid1.Cells[4,0]:='y0..yn';

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.