Принципы объектно-ориентированного программирования

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

ВВЕДЕНИЕ

В конце 70-х годов прошлого века резко возрос интерес к языкам высокого уровня благодаря возможности использования в научных исследованиях, в технике и экономике вычислительных машин, выполняющих построение некоторых величин в точном соответствии с указанным алгоритмом. Эта возможность привлекательна по той причине, что явления и процессы, которые изучаются в рамках упомянутых исследований, часто удается описать с помощью понятий математики — функций, систем уравнений, неравенств — и для получения конкретных сведений об изучаемых явлениях и процессах надо провести некоторые действия над математическими объектами. Человеку достаточно описать алгоритм необходимых преобразований и вычислений, а сами действия (как правило, настолько обширные и громоздкие, что их невозможно выполнить вручную) выполнит вычислительная машина.

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

Из распространенных языков программирования в 90-е годы выделился своей популярностью Паскаль, созданный в начале 70-х годов профессором Швейцарской высшей технической школы Н. Виртом. Такое название он получил в честь французского ученого Блеза Паскаля, изобретателя счетной машины. Выше упомянутый язык программирования предельно прост, логичен и эффективен. В Паскале сконцентрированы многие лучшие черты языков- предшественников. Сравнение этого языка с более простыми языками вроде Бейсика показывает, что текст алгоритма в виде программы на Бейсике содержит больше подробностей о действиях ПЭВМ, текст на Паскале яснее выражает математическую сущность алгоритма. Язык предоставляет пользователю большие возможности для решения широкого круга задач. Он содержит полный набор структур данных: простые переменные (целые, действительные, символьные, логические), массивы, строки, множества, записи и файлы.

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

1 ПОСТАНОВКА ЗАДАЧИ

Цель данного курсового проекта — научиться использовать методы объектно-ориентированного программирования на примере численных методов, в частности написание нескольких модулей и связь их в одну общую программу.

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

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

Создать объект решения дифференциальных уравнений методом Эйлера: и описать вышеуказанный метод, составить блок-схему программы, описать стандартные и не стандартные функции, применяемые в задаче, описать интерфейс и привести пример.

Изучить принцип работы MathCAD, Microsoft Exсel и проверить в данных приложениях правильность программ.

2. МАТЕМАТИЧЕСКОЕ ОПИСАНИЕ МЕТОДОВ

2.1 Вычисление алгебраического уравнения методом половинного деления

Его ещё называют методом дихотомии. Этот метод решения уравнений отличается от выше рассмотренных методов тем, что для него не требуется выполнения условия, что первая и вторая производная сохраняют знак на интервале [a, b]. Метод половинного деления сходится для любых непрерывных функций f(x) в том числе недифференцируемых.

Разделим отрезок [a, b] пополам точкой. Если f(с)?0 (что практически наиболее вероятно), то возможны два случая: либо f(x) меняет знак на отрезке [a, c] (рисунок 2), либо на отрезке [c, b] (рисунок 1).

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

2.2 Вычисление определенного интеграла по формуле прямоугольников

Численное интегрирование состоит в нахождении интеграла от непрерывной функции по квадратурной формуле

,

где коэффициенты ank— действительные числа и узлы принадлежат[a,b], k=1,2,…,n. Вид суммы определяет метод численного интегрирования, а разность — погрешность метода.

При этом для метода прямоугольников формула примет вид:

,

где, x0=a, xk=xk-1+(i+0,5)h, (i=0,1,2,…,n-1).

Правая часть формулы прямоугольников является интегральной суммой и при стремиться к данному интегралу. Однако, при фиксированном отличается от соответствующего интеграла на величину Rn(f). По заданной предельной абсолютной погрешности подбирается параметр, или, что-то же самое, шаг h, при котором выполняется неравенство |Rn(f)|<.

Величина Rn(f) (в предположении существования входящих в нее производных) характеризуется равенством для метода прямоугольников

, где [a,b].

В этом и состоит метод вычисления определенного интеграла по формуле прямоугольника.

2.3 Решения дифференциальных уравнений методом Эйлера

Учитывая ключевую позицию, которую занимает метод Эйлера в теории численных методов общих дифференциальных уравнений, рассмотрим несколько способов его вывода. При этом будем считать, что вычисления проводятся с расчетным шагом, расчетными точками (узлами) служат точки (i = 0,1,…, n) промежутка и целью является построение таблицы 1 приближенных значений yi решения у=y{x} задачи в расчетных точках хi.

Таблица 1

x

x0

x1

xn?b

y

y0

y1

yn?y (b)

приближенных значений yi решения у=у{х) задачи в расчетных точках хi.

Геометрический способ. Пользуясь тем, что в точке x0 известно значение решения y(x0)=y0, и значение его производной можно записать уравнение касательной к графику искомой функции у=у(х) в точке (х0; у0 При достаточно малом шаге h ордината эта касательная, полученная подстановкой в правую часть значения, по непрерывности должна мало отличаться от ординаты y(x1) решения y(x) задачи.

Следовательно, точка (x1, y1) пересечения касательной (1,3) с прямой х=х1 может быть приближенно принята за новую начальную точку. Через эту точку снова проведем прямую, Через эту точку снова проведем прямую, которая уже приближенно отражает поведение касательной к у=у(х) в точке (х1; у(х1)). Подставляя сюда х=х2(1+h), иначе, пересекая эту «касательную» прямой х=х2, получим приближение значения у(х2) значением, и т. д. В итоге этого процесса, определяемого формулой, i=0,1,2…,n и называемого методом Эйлера, график решения у=у(х) данной задачи Коши приближенной представляется ломанной, составленной из отрезков приближенных касательных откуда происходит другое название — метод ломаных (рисунок 3)

Рисунок 3 — График решения задачи Коши.

Модифицированный метода Эйлера отличается тем, что мы рассчитываем угловой коэффициент в точке с шагом h/2.

,

,

.

Таким образом, идет происходит вычисление дифференциальных уравнений модифицированным методом Эйлера.

3. БЛОК-СХЕМА ПРОГРАММЫ GLAV

3.1 Блок-схема модуля poldel (процедура poldel)

3.2 Блок-схема модуля integral (процедура integral)

3.3 Блок-схема модуля eiler (процедура myeiler)

4. ОПИСАНИЕ СТАНДАРТНЫХ ФУНКЦИЙ

Все создаваемые модули используют процедуру Clrscr стандартного модуля Crt [4]. Указанная процедура очищает экран и помещает курсор в его верхний левый угол. Действует процедура следующим образом: все символы заменяются на пробел с атрибутами, установленными в данный момент. Например, если цвет фона TextBackground не черный, то экран будет иметь цвет фона. Процедура выполняется в том окне, в котором она вызвана. Например, в случае

Window (1,1,60,20);

Clrscr;

Будет очищен прямоугольник 60*20, начинающийся в (1,1)

Следующие задействованные всеми создаваемыми модулями процедуры: Write (), Writeln (), Read (), Readln () стандартного модуля System [5]. Объявление этого модуля утилитой Uses не обязательно, он автоматически подключается программными средствами Pascal. Перечисленные операторы являются операторами ввода, вывода. Привлечение этих процедур открывает возможность многократного использования одной и той же программы для вычисления с различными исходными данными.

При выполнении оператора ввода Read () переменным присваиваются значения исходных данных.

Процедура Readln () выполняет процедуру Read (), после чего переходит на следующую строку. Readln () без параметров осуществляет переход на начало следующей строки без предварительного считывания.

С помощью процедур вывода Write () строится последовательность значений, которая является результатом выполнения программы. Параметр, заключенный в круглые скобки может содержать указания ширины поля и количества десятичных знаков. Выражения вывода могут быть следующих типов: char, integer, real, string, packet string или boolean. Процедура вывода, таким образом, позволяет выделить из всего набора вычисленных значений те, которые служат ответом к решавшейся при выполнении программой задаче.

Процедура Writeln () выполняет процедуру Write (), а затем осуществляет переход в начало следующей строки. Процедуры ввода и вывода часто применяют вместе. Например, для ввода трех чисел и вывода их суммы

Read (a, b, c);

х:= a+b+c;

Write (x);

Последней общей для всех модулей функцией является функция ReadKey, которая считывает символ с клавиатуры [5]. Она описана в стандартном модуле Crt. Возвращаемый тип данных — тип char. Функция ReadKey принимает значение считываемого символа, при этом символ не выводится на экран. Если до обращения к ReadKey значение KeyPressed было равно True, то считывание происходит незамедлительно. В противном случае программа ожидает ввода с клавиатуры. Для считывания кода, соответствующего специальным клавишам, к функции ReadKey необходимо обратиться два раза. (Под специальными, подразумеваются функциональные клавиши, клавиши управления курсором, клавиши, нажатые одновременно с Alt и т. д.). Первый раз функция ReadKey принимает значения #0, а во второй раз — значение расширенного кода, соответствующего данной специальной клавише. Значение #0 не может быть присвоено ReadKey никаким другим способом. Поэтому если ReadKey = #0, то следующее значение ReadKey обязательно должно трактоваться как расширенный код. Не смотря на то, что применение функции очень широко, однако чаще всего она используется для задержки программы при отладке. Пример применения функции

Ch: = ReadKey — возвращает считанный символ.

И, наконец, последняя, стандартная функция, используемая только в модуле myiter1. Это функция Abs () — возвращающая абсолютное значение аргумента. Она входит в состав стандартного модуля System. Возвращаемый тип данных тот же, что и у аргумента (real, integer).

Abs (x) — возвращает абсолютное значение х.

5. ОПИСАНИЕ НЕСТАНДАРТНЫХ ФУНКЦИЙ

Программа GLAVN сама по себе использует не стандартные модули (eiler, integral, polovind), которые в свою очередь содержат не стандартные процедуры и функции, выполнение которых приводит к выполнению программы. Поэтому описание не стандартных процедур и функций, по сути, сводится к описанию процедур и функций, содержащихся в выше перечисленных модулях.

EILER — эта процедура первоначально запрашивает точность с которой нужно вычислить уравнение y'=, после чего решает его модифицированным методом Эйлера и выводит ответ на экран.

POLOVIN — эта процедура первоначально запрашивает точность с которой нужно вычислить уравнение =0, после чего решает его методом половинного деления и выводит ответ на экран.

INTEGRAL — эта процедура запрашивает начало, конец интервала и количество разбиений, после чего вычисляет интеграл выводит его на экран и проверяет его.

6. ОПИСАНИЕ ИНТЕРФЕЙСА

Основная программа GLAV (использующая методы структурного программирования) работает следующим образом. Используя способ запроса, определяет дальнейший ход развития. При получении любого результата отличного от 1,2,3 вновь возвращается на начало программы. Тем самым, исключая возможность ошибочного ввода. При получении ответа соответствующего цифрам 1,2,3 передает управление одной из процедур описанных в не стандартных модулях пользователя. При этом выполнение главной программы практически заканчивается за исключением оператора выхода. Управление передается соответственно одному из модулей (polovind, integral, eiler,) или другими словами процедурам пользователя (polovindel, myintegral, myeiler,). Каждый из перечисленных модулей по сути своей представляет отдельную программу, являющуюся составной частью другой. Это позволяет в зависимости от выбора пользователя выполнить тот или иной самостоятельный модуль, входящий в главную программу.

При выборе 1 управление передается модулю eiler (процедура myeiler) выполнение которого приводит к выходу из программы.

Аналогично построены и два других модуля входящих в программу GLAV, за исключением того, что процедура polovindel в ходе своего выполнения не однократно передает управление функции f () являющейся неотъемлемой частью выше названной процедуры.

Окно главной программы:

Рисунок 4 — Результат работы программы Glav

Результат процедуры eiler:

Рисунок 5 — Результат работы программы Eiler

Результат процедуры integral:

Рисунок 6 — Результат работы программы Pramoygolniki

Результат процедуры poldel:

Рисунок 7 — Результат работы программы Polovinnoe delenie

7. ЧИСЛЕННЫЕ ПРИМЕРЫ

Все вышеперечисленное в данной курсовой работе проиллюстрировано на конкретных примерах.

При проверке правильности программы использовалось приложение Microsoft Excel. В приложении вводим данные в виде таблицы. Далее, выделяем данные, по которым нужно построить график, выбираем вставку точечной диаграммы и получаем построенный график.

1 Решение уравнения модифицированным методом Эйлера вида:. При вводимой погрешности 0. 001 дает результат:

И соответствующий график (рисунок 4) зависимости выглядит так:

Рисунок 8 — График решения уравнения модифицированным методом Эйлера

Таблица 2

x

y (k-1)

A

A (k)

y

0

1

-1

0

1

0. 1

1

-0. 99

5. 63E-09

1

0. 2

1

-0. 96

2. 5E-07

1

0. 3

1

-0. 91

2. 48E-06

1. 3

0. 4

1

-0. 84

1. 3E-05

1. 16

0. 5

1. 2

-0. 75

4. 73E-05

1. 63

0. 6

1. 6

-0. 64

0. 137

1. 2

0. 7

1. 2

-0. 50 998

0. 338

1. 538

0. 8

1. 54

-0. 35 993

0. 74

1. 1 278

0. 9

1. 128

-0. 18 979

0. 1 482

1. 2 759

1

1. 276

0. 552

0. 2 761

1. 552

По таблице 2 видно, что программа вычисления уравнения модифицированным методом Eiler работает правильно (рисунок 5).

2 Вычисление определенного интеграла на отрезке [1,2] методом прямоугольников функции вида дает следующий результат. Определенный интеграл равен 0. 99 938. При этом погрешность вычисления по отношению к формуле Ньютона- Лейбница составляет 1−0. 99 938=0. 62, что практически соответствует истине.

Таблица 3

Х

1,075

1,125

1,175

1,225

1,275

1,325

1,375

1,425

1,475

1,525

У

-0,833

-0,703

-0,558

-0,398

-0,223

-0,033

0,1419

0,392

0,627

0,877

Проверить решение можно в программе Mathcad. Для этого вводим данные интеграл в рабочее окно приложения и получаем результат.

Рисунок 9 — Проверка решения интеграла

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

На рисунке 9 видно, что программа по вычислению Integral функционирует правильно (рисунок 6).

3 Вычисления алгебраического уравнения методом половинного деления, вида. Проверка решения в Microsoft Exсel.

По данным таблицы 4 построим график зависимости, из которого видно, что корень уравнения находится на интервале от 1.2 до 1.3.

Рисунок 10 — График зависимости у от х

Таблица 4

x

y

1

-15

1. 1

-8. 43 149

1. 2

-0. 40 768

1. 3

9. 25 893

1. 4

20. 77 024

1. 5

34. 34 375

1. 6

50. 21 376

1. 7

68. 63 257

1. 8

89. 87 168

1. 9

114. 223

2

142

2. 1

173. 539

2. 2

209. 2003

2. 3

249. 3694

2. 4

294. 4582

2. 5

344. 9063

2. 6

401. 1818

2. 7

463. 7831

Примем a = 1,2 и b = 1,3 и по этим данным составим таблицу в Microsoft Exсel, в которой просчитываем решение до момента пока погрешность вычисления не станет равной 0,001.

Таблица 5

a

b

(a+b)/2

f (a)

f (b)

f ((a+b)/2)

|a-b|

1. 2

1. 3

1. 25

-0. 40 768

9. 25 893

4. 208 008

0. 1

1. 2

1. 25

1. 225

-0. 40 768

4. 208 008

1. 847 329

0. 05

1. 2

1. 225

1. 2125

-0. 40 768

1. 847 329

0. 706 808

0. 025

1. 2

1. 2125

1. 20 625

-0. 40 768

0. 706 808

0. 146 334

0. 0125

1. 2

1. 20 625

1. 203 125

-0. 40 768

0. 146 334

-0. 13 148

0. 625

1. 203 125

1. 20 625

1. 204 688

-0. 13 148

0. 146 334

0. 7 227

0. 3 125

1. 203 125

1. 204 688

1. 203 906

-0. 13 148

0. 7 227

-0. 6 218

0. 1 562

1. 203 906

1. 204 688

1. 204 297

-0. 6 218

0. 7 227

-0. 2 749

0. 781

1. 204 297

1. 204 688

1. 204 492

-0. 2 749

0. 7 227

-0. 1 013

0. 391

1. 204 492

1. 204 688

1. 20 459

-0. 1 013

0. 7 227

-0. 145

0. 195

1. 20 459

1. 204 688

1. 204 639

-0. 145

0. 7 227

0. 2 886

9. 77E-05

1. 20 459

1. 204 639

1. 204 614

-0. 145

0. 2 886

0. 716

4. 88E-05

1. 20 459

1. 204 614

1. 204 602

-0. 145

0. 716

-0. 37

2. 44E-05

1. 204 602

1. 204 614

1. 204 608

-0. 37

0. 716

0. 174

1. 22E-05

Из таблицы 5 видим, что программа Polovinnoe delenie работает без ошибок (рисунок 7).

8. ДИАГРАММА ВЗАИМОДЕЙСТВИЯ

8.1 Диаграмма классов

ЗАКЛЮЧЕНИЕ

В заключение хотелось бы отметить, что метод объектно-ориентированного программирования, а в частности инкапсуляция, то есть свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя, позволяют более мобильно и качественно проводить работу по модернизации программного обеспечения. Так достаточно усовершенствовать отдельный модуль откомпилировать его и главный модуль, для достижения, желаемого результата. Более того, текст главной программы более читаем, и занимает меньше места. Имеющиеся наработки в отдельных модулях можно использовать в других программах, не задумываясь об их работоспособности. Четко сформированный объект позволяет яснее представить цели и задачи стоящие перед программистом. Не нужно все время перемещаться по тексту взад и вперед. В любой промежуток времени работы над очень большой программой появляется возможность сконцентрироваться на отдельном модуле. Открывается возможность совместной работы нескольких человек над одной громоздкой программной. Удачно разработанный модуль одного программиста становиться, доступен другим.

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

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

программирование алгебраический уравнение

1. Информатика: учебник для вузов / А. Н. Гуда [и др. ]; под ред. В. И. Колесникова. — М.: Дашков и К, 2008. — 400 с.

2. Чекмарев, Ю. В. Вычислительные системы, сети и телекоммуникации [Электронный ресурс]/ Ю. В. Чекмарев.- «ДМК Пресс», 2010.- 184 с. Режим доступа: http: //e. lanbook. com/books/element. php? pl1_cid=258&pl1_id=1108.

3. Шаньгин, В. Ф. Защита компьютерной информации [Электронный ресурс]/ В. Ф. Шаньгин.- «ДМК Пресс», 2010. -544 с. Режим доступа: http: //e. lanbook. com/books/element. php? pl1_cid=258&pl1_id=1146.

4 Артемова, С. В. Информатика. Методические указания по выполнению лабораторных работ/ С. В. Артемова, Т. И. Чернышова, Н. Г. Чернышов; Тамб. гос. техн. ун-т. — Тамбов, 2006. 54 с.

5. Галявов, И.Р. Borland C++ для себя [Электронный ресурс]/ И. Р. Галявов. — «ДМК Пресс», 2009.- 214 с. Режим доступа: http: //e. lanbook. com/books/element. php? pl1_cid=258&pl1_id=1230.

6. Алексеев, Е. Р FreePascal и Lazarus: Учебник по программированию [Электронный ресурс]/ О. В. Чеснокова, Т. В. Кучер.- «ДМК Пресс», 2010.- 438 с. Режим доступа: http: //e. lanbook. com/books/element. php? pl1_cid =258& pl1_id =1267.

7. Буч, Г., Рамбо Д., Якобсон И. Язык UML руководство пользователя [Электронный ресурс]/ Г. Буч, Д. Рамбо, И. Якобсон. — «ДМК Пресс», 2008.- 496 с. Режим доступа: http: //e. lanbook. com/books/element. php? pl1_cid =258& pl1_id =1246.

8. OpenOffice. org для профессионала [Электронный ресурс].- «ДМК Пресс», 2009. — 448 с. Режим доступа: http: //e. lanbook. com/books/ element. php? pl1_cid =258& pl1_id =1223.

ПоказатьСвернуть
Заполнить форму текущей работой