Методы и средства объектно-ориентированного программирования
Особенность применения численного метода для нахождения площади заданной геометрической фигуры. Использование способа половинного деления для нахождения точек пересечения. Характеристика написания программы на языке Object-Pascal в среде Delphi 7.0.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.02.2019 |
Размер файла | 281,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Кафедра «Автоматика и телемеханика»
Курсовая работа
по дисциплине “Программирование и основы алгоритмизации”
на тему “Методы и средства объектно-ориентированного программирования”
Выполнил студент:
Малахов И.А.
Руководитель:
Берестень М.П.
2017
Реферат
Пояснительная записка содержит 25 страниц , 5 рисунков
ГЕОМЕТРИЧЕСКАЯ ФИГУРА, ЯЗЫК OBJECT-PASCAL, АЛГОРИТМ, ПРОГРАММА, СРЕДА DELPHI.
Цель работы -разработка программы для определения площади геометрической фигуры.
В результате проектирования разработана программа на языке Object-Pascal в среде Delphi.
Метод решения реализован в виде отдельной подпрограммы. Результат программы выводится на экран дисплея. Программа предназначена для использования на персональных типа IBM PC стандартной комплектации.
Содержание
Введение
1. Описание метода решения
2. Нахождение точек пересечения функций
3. Вычисление площади геометрической фигуры
4. Описание применения
Заключение
Список используемых источников
Приложение
Введение
Главная особенность обучения основам численных методов, которая все отчетливее проявляется в последние годы, связана с интенсификацией процессов использования различных специа-лизированных математических пакетов и систем программирова-ния вычислительных методов как инструмента решения при-кладных задач. Широкое внедрение математических методов в самые разнообразные сферы профессиональной деятельности че-ловека требует создания и использования инструмента математи-ческого моделирования для решения вычислительных задач. Со-временные численные методы в совокупности с возможностью их автоматизации при использовании персональных компьюте-ров превращаются в рабочий инструмент для решения задач научного, технического, экономического характера и др. Развитие алгоритмов и программных средств их реализации ста-вит задачу обучения эффективным навыкам использования чис-ленных методов для решения практических задач исследований.
В данной курсовой работе рассматривается программа для нахождения площади геометрической фигуры.
В ходе выполнения программы применяется численный метод для нахождения площади заданной геометрической фигуры.
1. Описание метода решения
Нахождение площади фигуры проводится в три этапа.
1. Определение коэффициентов, при которых указанные в задании функции при пересечении образуют замкнутую область (площадь которой будет определяться).
Для функций
y=asinx
y=kx3
следует выбрать значения коэффициентов a и k. Например указанным условиям удовлетворяет следующий набор коэффициентов:
a=2, k=3.
Рисунок 1 - Графики функций
2. Нахождение точек пересечения функций
Для нахождения точек пересечения будет использоваться метод половинного деления [1].
В методе половинного деления за-данный отрезок [а;b] разделим пополам и положим х0 = (а + b)/2. Из двух полученных отрезков [а; х0] и [x0; b] выби-раем тот, на концах которого функция у(х) имеет противополож-ные знаки. Полученный отрезок снова делим пополам и приво-дим те же рассуждения. Процесс продолжаем до тех пор, пока длина отрезка, на концах которого функция имеет противопо-ложные знаки, не будет меньше заданной точности, любую точку отрез-ка с заданной точностью можно принять за корень уравнения f(x)=0.
Таким образом, если х0 и х1, таковы, что f(х0)*f(х1) < 0, то по-лагаем х2=(х0+х1)/2 и вычисляем f(х2). Если f(х2)=0, то корень найден. В противном случае из отрезков [x0; х2] и [x2; x1] выбира-ем тот, на концах которого f принимает значения разных знаков, и проделываем аналогичную операцию. Процесс продолжаем до получения требуемой точности.
При нахождении точек пересечения исходный интервал [-2pi ; 2pi] делится на несколько интервалов и в каждом таком интервале происходит поиск точек пересечения функций. Размер интервалов s на которых происходит поиск точек пересечения функций будет зависеть от коэффициента k. Если то величина каждого интервала s равна 0,5 , иначе она будет равна 1.
У данных функций точки пересечения симметрично расположены относительно оси Y, поэтому поиск точек пересечения будет проходить на интервале [-xp;0], где , a,k-коэффициенты. Затем найденные точки пересечения берутся с положительным знаком аргумента х и добавляются на интервал [0; xp].
В качестве примера рассмотрим нахождение точки пересечения на интервале [-1;-0,5] при коэффициентах a=2, k=3. В данном случае точка xp=1 т.к =1 и размер интервала s на котором происходит поиск точки пересечения будет равен 0,5 т.к. . Поскольку график разности двух функций имеет противоположные знаки на концах отрезка [-xp ;-xp+s], следовательно на данном отрезке имеется точка пересечения функций. Поиск точки пересечения будет происходить путём деления заданного отрезка 2 равные части и определения значений функции f по краям полученных отрезков. Затем определяется отрезок по краям которого знаки функции f различны и так же делится на 2 равные части. Данная операция будет проделываться пока длина отрезка не будет меньше или равна 0,0001. В качестве точки пересечения будет браться середина полученного отрезка, в данном случае это точка x=-0,78. Так же независимо от начальных коэффициентов a и k точкой пересечения будет являться точка с координатами [0;0].
3. Вычисление площади геометрической фигуры
Для вычисления площади фигуры будет использоваться метод прямоугольников [1].
Разделим отрезок [а; b] на n равных частей, т. е. на n эле-ментарных отрезков. Длина каждого элементарного отрезка . Точками деления будут: х0 =а; х1=a+h; х2=a+2h; … xn-1= а+(n -- 1)h; хn= b. Эти числа будем называть узлами. Вы-числим значения функции f(х) в узлах, обозначим их у0,y1..., уn. Стало быть, у0=f(a), у1 =f(х1), у2 =f(х2), ..., уn=f(b). Числа у1,у2,у3, ..., уn являются ординатами точек графи-ка функции, соответствующих абсциссам х0,х1,х2..., хn
Площадь криволинейной трапеции приближенно заменяется площадью многоугольника, составлен-ного из n прямоугольников. Таким образом, вычисление опреде-ленного интеграла сводится к нахождению суммы n элементар-ных прямоугольников.
В данной программе будет определяться сумма площадей фигур, образованных пересечением двух функций. Площадь каждой фигуры по отдельности будет определяться как где Si-площадь i-ой фигуры, a,b-точки пересечения функций, f1(x), f2(x)-заданные функции.
Схема алгоритма
Алгоритм основной программы приведён на рисунке A1.
Алгоритм начинается с ввода коэффициентов a и k.
Далее идёт построение графиков функций на компоненте Chart и нахождение точек пересечения методом половинного деления. Поиск точек пересечения осуществляется в подпрограмме Method. Ей передаётся координата X начальной точки от которой следует искать точки пересечения функций. Результатом выполнения данной подпрограммы будет количество точек пересечения функций и массив с координатами по оси X полученных точек пересечения. Алгоритм подпрограммы Method представлен на рисунке A2. численный геометрический программа язык
Затем с помощью подпрограммы area, которой передаётся количество точек пересечения функций и их координаты, вычисляется площадь фигуры на отрезке от некоторой точки a до точки b. После результаты записываются в Memo1 и вычисляется сумма всех площадей фигур. Алгоритм подпрограммы area представлен на рисунке A3.
Описание программы
Общие сведения
Разработанная программа имеет название Project1. Программа написана на языке Object-Pascal в среде Delphi версии 7.0. Её текст содержится в файле Unit1.pas и приведён в приложении Б.
Функциональное назначение
Данная программа предназначена для определения площади геометрической фигуры.
Описание логической структуры
В программе можно выделить блоки выполняющие следующие действия:
-Ввод данных и построение графика
-Вызов функции Method
-Вызов функции area и нахождение площади фигуры
-Проверка сходных данных
Процедура Method содержит цикл в котором вычисляется точка пересечения двух функций и
Процедура area содержит цикл в котором вычисляется площадь фигуры образованной пересечением двух функций и
Вызов и загрузка
Для вызова программы на выполнение необходимо с помощью команд операционной системы компьютера сделать в качестве текущего каталог, в котором расположен исполняемый файл Project1.exe, и запустить его на выполнение.
Входные и выходные данные
Входными данными для программы являются значения коэффициентов a и k.
Выходными данными для программы являются площадь геометрической фигуры, графики функций.
4. Описание применения
Программа предназначена для определения площади геометрической фигуры.
Программа предназначена для использования на персональных компьютерах типа IBM PC стандартной комплектации.
Размер файла с исполняемым модулем программы составляет 548 Кбайт.
Пример выполнения программы приведён на рисунке 2.
Рисунок 2 - Пример выполнения программы
Заключение
В данной курсовой работе была разработана программа Project1, предназначенная для построения графиков заданных функций и определения площади геометрической фигуры.
Все требования, предъявленные к данной программе, были выполнены.
Результаты тестирования показали, что программа работает верно во всех предполагаемых ситуациях.
Список используемых источников
1. Колдаев В.Д. Численные методы и программирование - Москва: Изд-во ИД «ФОРУМ» ИНФРА-М, 2009.- 3с, 64-65с, 164-165c.
Приложение
Схемы программы Project1
Рисунок A1- Алгоритм основной программы
Рисунок A2- Алгоритм процедуры Method Рисунок A3-Алгоритм процедуры area
Текст программы Project1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TeEngine, TeeFunci, Series, ExtCtrls, TeeProcs, Chart,Math;
type
TForm1 = class(TForm)
cht1: TChart;
Series1: TLineSeries;
TeeFunction1: TAverageTeeFunction;
btn1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Series2: TLineSeries;
TeeFunction2: TAddTeeFunction;
Series3: TPointSeries;
Label1: TLabel;
Edit3: TEdit;
Label2: TLabel;
Memo1: TMemo;
Memo2: TMemo;
btn2: TButton;
Label4: TLabel;
Label5: TLabel;
procedure btn1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit1Change(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure Edit3Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
mas=array [1..10] of Real;
var
Form1: TForm1;
x,y,a,k,a2,b2,xp,arp:Real;
n,i,t:Integer;
m,ar:mas;
implementation
{$R *.dfm}
procedure method(a2:Real; var xp:real;var n:Integer; var m:mas );
var
c,q,s:Real;i:Integer;
begin
n:=0;i:=1;t:=1;
if Abs(k)>1 then s:=0.5 else
s:=1;
repeat
q:=a2;
b2:=a2+s;
while Abs(b2-a2)>0.0001 do
begin
c:=(a2+b2)/2;
if (a*sin(a2)-k*a2*a2*a2)*(a*sin(c)-k*c*c*c)<=0 then b2:=c
else a2:=c;
end;
xp:=(a2+b2)/2;
if (abs(a*sin(xp)-k*xp*xp*xp)<=0.1) and (xp>=-6.28) and (xp<=6.28) then
begin
m[i]:=roundto(xp,-2);
n:=n+1; i:=i+1;
end;
a2:=q+s;
until (b2>=-0.1);
if m[n]<>0 then
begin
m[n+1]:=0; n:=n+1;
end;
for i:=2*n-1 downto n+1 do begin
if m[t]<>0 then
m[i]:=abs(m[t]);
t:=t+1;
end;
end;
procedure area(m:mas;n:Integer; var ar:mas);
var
i:Integer;t1,t2,y1,y2,dl:Real;
begin
i:=1;
repeat
ar[i]:=0;
dl:=Abs(m[i+1]-m[i]);
t1:=m[i];
repeat
y1:=a*sin(t1);y2:=k*t1*t1*t1;
ar[i]:=ar[i]+abs(y1*dl/5-y2*dl/5);
t1:=t1+dl/5;
until(t1>=m[i+1]);
ar[i]:=roundto(ar[i],-2);
i:=i+1;
until (i=n);
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
//первый график
Series1.Clear;
a:=StrToFloat(Edit1.Text);
k:=StrToFloat(Edit2.Text);
x:=-2*pi;
repeat
y :=a*sin(x);
Series1.AddXY(x,y,'',clNavy);
x:=x+0.01
until (x>=2*pi);
//второй график
Series2.Clear;
x:=-2*pi;
repeat
y :=k*x*x*x;
if Abs(y)<=(Abs(a+a/2)) then
Series2.AddXY(x,y,'',clGreen);
x:=x+0.01
until (x>=2*pi);
//точки пересечения
Series3.Clear;
a2:=-exp(1/3*ln(Abs(1.5*a/k)));
method(a2,xp,n,m);
Edit3.Text:=IntToStr(2*n-1);
Memo1.Lines.Clear;
for i:=1 to 2*n-1 do begin
Memo1.Lines.Add(FloatToStr(m[i]));
Series3.AddXY(m[i],k*m[i]*m[i]*m[i]);
end;
end;
//площадь
procedure TForm1.btn2Click(Sender: TObject);
begin
n:=StrToInt(Edit3.text);
area(m,n,ar);
Memo2.Lines.Clear;
arp:=0;
for i:=1 to n-1 do
begin
memo2.lines.add('площадь фигуры на отрезке '+floattostr(m[i])+' ; '+floattostr(m[i+1])+' равна '+floattostr(ar[i]));
arp:=arp+ar[i];
end;
memo2.lines.add('Общая площадь равна '+FloatToStr(arp));
end;
//защита от недопустимых значений коэффициентов
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of '0'..'9','-',',',#8: ;
else key:=chr(0);
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
if (Edit1.Text='') or (Edit2.Text='') or (Edit1.Text='0') or (Edit2.Text='0') then Btn1.Enabled:=False
else Btn1.Enabled:=True;
if abs(StrToFloat(Edit2.text))>1000 then Edit2.text:='1000';
if abs(StrToFloat(Edit1.text))>1000 then Edit1.text:='1000';
end;
procedure TForm1.Edit3Change(Sender: TObject);
begin
if (Edit3.Text='') or (Edit3.Text='1') then Btn2.Enabled:=False
else Btn2.Enabled:=True;
end;
end.
Размещено на Allbest.ru
...Подобные документы
Методы грамматического разбора. Разработка структуры учебного транслятора на базовом языке программирования Object Pascal в среде объектно-ориентированного визуального программирования Borland DELPHI 6.0 с использованием операционной системы Windows XP.
курсовая работа [493,8 K], добавлен 12.05.2013Вычисление площади геометрических фигур с помощью интегрального исчисления. Основные свойства площади как функции. Разработка алгоритма работы программы на языке Object-Pascal в среде Delphi. Текст программы, порядок ее запуска и полученный результат.
курсовая работа [281,0 K], добавлен 06.06.2013Применение объектно-ориентированного программирования для написания нескольких модулей программы. Вычисление алгебраического уравнения методом половинного деления. Применение метода Эйлера в теории численных методов общих дифференциальных уравнений.
курсовая работа [398,1 K], добавлен 26.02.2015Основные понятия и структура обработчика на языке Pascal. Элективные курсы по информатике в системе профильного обучения. Элективный курс "Программирование в среде Delphi". Методические материалы по изучению программирования на языке Object Pascal.
методичка [55,4 K], добавлен 08.12.2010Разработка программы для нахождения корней нелинейных уравнений несколькими методами: методом хорд, касательных, половинного деления, итераций. Реализации программы с помощью системы программирования Delphi 7. Методика работы пользователя с программой.
курсовая работа [1,3 M], добавлен 11.02.2013Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.
курсовая работа [275,9 K], добавлен 22.12.2011Характеристика вычислительной системы и инструментов разработки. Программирование на языке Pascal в среде Turbo Pascal и на языке Object Pascal в среде Delphi. Использование процедур, функций, массивов, бинарного поиска. Создание базы данных в виде файла.
отчет по практике [2,1 M], добавлен 02.05.2014Предмет объектно-ориентированного программирования и особенности его применения в средах Паскаль, Ада, С++ и Delphi. Интегрированная среда разработки Delphi: общее описание и назначение основных команд меню. Процедуры и функции программы Delphi.
курсовая работа [40,8 K], добавлен 15.07.2009Описания объектов, свойств, методов, формы и основных модулей текста программы в среде Delphi. Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования. Анализ результатов тестирования программного продукта.
курсовая работа [2,4 M], добавлен 27.08.2012Анализ предметной области объектно-ориентированного программирования. Языки Delphi, Object Pascal - объектно-ориентированная среда программирования. Основные алгоритмические решения. Решение дифференциального уравнения методом Рунге-Кутта в среде Excel.
курсовая работа [1,5 M], добавлен 02.04.2011Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования Delphi, которое, как планируется, будет обеспечивать решение специализированных задач по формированию, обработке на ЭВМ и выводу информации.
курсовая работа [967,6 K], добавлен 20.05.2008Особенности создания программы "Файловый менеджер" в среде объектно-ориентированного программирования Delphi. Назначение и основные функции программы, формулировка задачи. Описание программы, использованные компоненты, интерфейс и порядок применения.
контрольная работа [1,3 M], добавлен 19.06.2012Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.
курсовая работа [1,2 M], добавлен 04.08.2014Обзор основных используемых языков программирования (С++, Java, Pascal). Анализ существующих методов шифрования паролей. Основные понятия объектно-ориентированного программирования. Реализация приложения для генерирования паролей на языке Object Pascal.
курсовая работа [822,4 K], добавлен 07.07.2012История развития, характеристика, предназначение и особенности языка программирования Delphi. Разработка проекта создания кроссворда на объектно-ориентированном языке Delphi, который состоит из 19 вопросов по горизонтали и 16 вопросов по вертикали.
курсовая работа [970,5 K], добавлен 15.05.2014Способы и методы нахождения значения определённого интеграла. Программные средства языка C. Программные средства языка Pascal (версия 7.0). Алгоритм программы вычисления определённого интеграла. Тестирование программы. Обработка результатов измерений.
курсовая работа [2,5 M], добавлен 01.06.2010Разработка программы по оформлению заказов на билеты Оренбургского государственного областного драматического театра им. Горького. Использование объектно-ориентированного программирования и реализация проекта в среде визуального программирования Delphi 7.
курсовая работа [6,3 M], добавлен 12.11.2014Этапы написания программы на четырех языках программирования (Turbo Pascal 7.0, Borland C++ 3.11, Delphi 7, Builder C++ 6.0), которая выводит на экран имя и фамилию студента, используя стандартные средства графики и простейшие геометрические фигуры.
контрольная работа [1,4 M], добавлен 05.06.2010Особенности и тонкости программирования в среде Delphi. Специфика перехода от алгоритмического решения к непосредственной программной реализации на языке Object Pascal с использованием всех необходимых средств данного языка. Анализ полученных результатов.
реферат [246,2 K], добавлен 17.11.2012Сущность задач оптимизации и методы их решения с ориентацией на современные средства компьютерной техники. Область допустимых решений. Структура оптимизационной модели. Проверка правильности нахождения точек координат методом половинного деления.
курсовая работа [2,4 M], добавлен 25.04.2015