Создание программ на основе алгоритмов для решения вычислительной задачи

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 30.01.2015
Размер файла 638,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

Федеральное государственное автономное образовательное учреждение высшего профессионального образования

«Национальный исследовательский Томский политехнический Университет»

Институт электронного обучения

Курсовая работа

по дисциплине: Программирование и алгоритмизация

Создание программ на основе алгоритмов для решения вычислительной задачи

Томск - 2015г.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. РЕШЕНИЕ ВЫЧИСЛИТЕЛЬНОЙ ЗАДАЧИ

1.1 Формулировка задания

1.2 Краткое пояснение метода решения задачи

1.3 Блок-схема алгоритма, выполненная в соответствии с ЕСПД

1.4 Пояснения к блок-схеме, приведенные отдельно от блок-схемы и оформленные в виде обычных предложений

1.5 Листинг программы

1.6 Скриншоты экрана монитора, отражающие спроектированную форму, введённые данные и полученные результаты.11

1.7 Выкладки, подтверждающие правильность полученных результатов

2. СОЗДАНИЕ КОМПОНЕНТА DELPHI

2.1 Формулировка задания

2.2 Общая технология создания компонента Delphi

2.3 Технология создания компонента с обоснованием принятых решений

2.4 Листинг модуля

2.5 Листинг программы обращения к модулю

2.6 Скриншоты

2.7 Выкладки, подтверждающие правильность полученных результатов

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ВВЕДЕНИЕ

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

Алгоритм точно описывает, какой либо процесс, а так же инструкцию по его выполнению. Разрабатывать данный алгоритм - это трудоемкий и сложный процесс. Технику разработки алгоритма для решения задач на ЭВМ называют алгоритмизацией.

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

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

1. РЕШЕНИЕ ВЫЧИСЛИТЕЛЬНОЙ ЗАДАЧИ

1.1 Формулировка задания

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

Текст задачи: Написать программу, которая вычисляет периметр и площадь правильного n-угольника, вписанного в окружность заданного радиуса. Для первой задачи должны быть представлены:

1. Краткое пояснение метода решения задачи, т.е. применяемого алгоритма.

2. Блок-схема алгоритма, выполненная в соответствии с ЕСПД.

3. Пояснения к блок-схеме, приведенные отдельно от блок-схемы и оформленные в виде обычных предложений.

4. Листинг программы.

5. Скриншоты экрана монитора, отражающие спроектированную форму, введённые данные и полученные результаты.

6. Выкладки, подтверждающие правильность полученных результатов.

Студент должен предоставить преподавателю файлы, позволяющие проверить работоспособность предлагаемых решений и при необходимости внести коррективы. Как правило, это файлы с расширениями pas, dpr, dfm.

1.2 Краткое пояснение метода решения задачи

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

Рисунок 1 - Окружность и радиус окружности

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

Рисунок 2 - Правильные n-угольники

алгоритм вычислительный программирование визуальный

В любой правильный многоугольник можно вписать окружность. Около любого правильного многоугольника можно описать окружность. Центры вписанной в правильный многоугольник окружности и описанной около правильного многоугольника окружности совпадают. Эту точку называют центром правильного многоугольника.

Рисунок 3- Вписанная и описанная окружности вокруг правильного шестиугольника

Число вершин правильного многоугольника обычно обозначается как n, сторона правильного многоугольника- a, радиус вписанной окружности - r, радиус описанной окружности - R, периметр - P, площадь - S.

Найдем периметр и площадь правильного n-угольника, вписанного в окружность заданного радиуса, используя следующую таблицу 1 [2].

Таблица 1 - Определение длины стороны, периметра и площади правильного n-угольника, вписанного в окружность

Величина

Рисунок

Формула

Описание

Сторона

Выражение стороны через радиус описанной окружности

Периметр

Выражение периметра через радиус описанной окружности

Площадь

Выражение площади через радиус описанной окружности

1.3 Блок-схема алгоритма, выполненная в соответствии с ЕСПД

Блок-схема функции GetValue

1.4 Пояснения к блок-схеме, приведенные отдельно от блок-схемы и оформленные в виде обычных предложений

Пояснение я блок-схеме 1.

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

Затем обращаемся к функции GetValue, которая помогает ввести в переменную n значение из визуального компонента Edit1, расположенного на форме. Функция проверяет ввод на соответствие формату целого числа. Если число нецелое, или если введено не число, то функция вернет n=0. Проверяем условие n<>0. Если число сторон равно 0, то расчет не имеет смысла и мы заканчиваем работу с процедурой. Если n<>0, то затем аналогично с помощью функции GetValue вводим значение в переменную r из визуального компонента Edit2, расположенного на форме. Проверяем условие (n>0) and (r>0). Если условие ложно, то заканчиваем работу с процедурой. Если оно истинно, то считаем длину стороны многоугольника (a), его периметр (P), и площадь (S), преобразуем формат вывода в более приемлемый и выводим значения на форму в компоненты TLabel. На этом процедура заканчивается.

Пояснение я блок-схеме 2.

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

1.5 Листинг программы

procedure TFormZad3.Button1Click(Sender: TObject);

var

i: Integer; // вспомогательная переменная

n: Integer; // число сторон n-угольника

r: Integer; // радиус окружности

a: Real; // длина стороны n-угольника

begin

//проверим ввод - определим число сторон n-угольника

n:=GetValue(Edit1.Text);

//проверим ввод - определим радиус окружности

if n<>0 then R:=GetValue(Edit2.Text) else exit;

// если число скважин введено успешно и правильно, то установим

// нужный размер колонок StringGrid1

if (n>0) and (r>0) then begin

a:=2*R*Sin(pi/n); // длина стороны многоугольника

Label5.Caption:=FormatFloat('0.##', n*a); // периметр многоугольника

Label6.Caption:=FormatFloat('0.##',(n/2)*R*R*Sin(2*pi/n)); // площадь многоугольника

end {else

ShowMessage('Неверно ввели данные')};

end;

// проверка числового ввода

Function TFormZad3.GetValue(userval: string): Integer;

var

kod: integer;

uservalue: integer;

n: Integer;

begin

// проверим правильно ли ввели число

val(userval,uservalue,kod);

if (kod=0) and (uservalue>0) then begin

// конвертируем строку в целое число

n:=StrToInt(userval);

end else begin

MessageDlg('Неверно введено число', mtWarning, [mbOK],0);

n:=0;

end;

Result:=n; // Вернуть число, усеченное до целой величины

end;

1.6 Скриншоты экрана монитора, отражающие спроектированную форму, введённые данные и полученные результаты

1.7 Выкладки, подтверждающие правильность полученных результатов

Для проверки работы программы мы произвели расчеты в Mathcad и построили решение визуально. Для радиуса описанной окружности R=10 и правильного четырехугольника (квадрата), длина стороны квадрата, вписанного в данную окружность составила a=14,142. Это решение подтверждают графические построения. Это же решение получено в программе.

Также совпали значения периметра и площади квадрата, вписанного в окружность радиусом 10, полученные по программе и в Mathcad.

Рисунок 4- Проверка работы программы в Mathcad и графически

2. СОЗДАНИЕ КОМПОНЕНТА DELPHI

2.1 Формулировка задания

В системе Delphi создать заказной (авторский) компонент. Причём этот компонент должен помогать решать задачу, выполненную студентом в 4-ом семестре в рамках индивидуального домашнего задания.

Текст задания: Объявить в Delphi класс, позволяющий объекту хранить информацию о количестве скважин куста на нефтяном промысле. Предусмотреть в созданном классе наличие метода, который по введённому суточному дебиту каждой скважины определяет номера двух скважин с минимальной производительностью. Применить класс в проекте, реально определяющем такие номера. Для ввода данных в проекте обязательно использовать компонент StringGrid. Перед окончанием работы проекта освободить динамическую память, выделенную под объект.

Для этого задания надо представить описание технологии создания компонента с необходимым обоснованием принятых решений, листинги модулей, скриншоты.

Студент должен предоставить преподавателю файлы, позволяющие проверить работоспособность предлагаемых решений и при необходимости внести коррективы. Как правило, это файлы с расширениями pas, dpr, dfm.

2.2 Общая технология создания компонента Delphi

Среда визуального программирования Borland Delphi содержит в себе большое количество готовых к использованию компонентов, но при разработке сложных приложений даже такого многообразия не хватает. В таких случаях можно устанавливать в среду компоненты сторонних производителей либо разрабатывать собственные компоненты [3]. Компонент - это разновидность класса, обладающая способностью взаимодействовать с интегрированной средой разработки (IDE) Delphi во время проектирования приложений.

Когда разработчик приложения помещает компонент на форму, то дизайнер форм создает экземпляр выбранного компонента из соответствующего компонентного класса. Компонент отображается на форме, а его опубликованные свойства становятся доступными для редактирования на этапе разработки либо с помощью инспектора объектов, либо через созданные разработчиком компонента редакторы компонентов и редакторы свойств [4]. Базовую функциональность компонентов обеспечивает класс TComponent, являющийся предком всех компонентов. Например, TComponent реализует свойства Name и Tag, которые наследуются всеми компонентами. Более того, TComponent содержит методы и свойства, которые предоставляют компонентам возможность обрабатываться дизайнером форм.

Хотя компоненты и реализуются с использованием классов языка Delphi, но объявление класса не является объявлением компонента, если класс не порожден от TComponent. Экземпляры классов, которые произведены от TComponent, называются компонентами, а экземпляры всех других классов называются объектами. Главная разница между этими двумя понятиями заключается в том, что компонентами можно манипулировать на форме, тогда как объектами - нельзя.

Особенности построения компонентов:

- компоненты имеют других конечных пользователей;

- компоненты являются инструментами и используются разработчиками приложений;

- написание компонентов является объектно-ориентированным невизуальным процессом.

В общем случае процесс разработки компонента должен включать следующие этапы:

- формулировка требований к компоненту и выбор класса-предка;

- написание кода компонента;

- отладка и предварительное тестирование компонента;

- включение компонента в среду Delphi;

- окончательное тестирование.

Рассмотрим процесс создания компонента. Его можно использовать для разработки любого компонента Delphi, независимо от его сложности [5]:

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

2. Следующий шаг заключается в создании модуля компонента. Это можно выполнить либо вручную, либо задействовав Эксперта компонентов (Component Expert).

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

4. Далее компонент можно тестировать. Так как у компонента есть два интерфейса - времени выполнения и времени проектирования, то и тестирование выполняется в два шага. Тестирование времени выполнения можно делать сразу же после окончания кодирования, но тестирование времени проектирования можно проводить только после того, как компонент будет зарегистрирован в Delphi и появится на палитре компонентов.

Рассмотрим перечисленные шаги более подробно.

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

Исходный код компонента располагается в модуле. Хотя возможно поместить в единственный модуль любое количество компонентов, обычно в модуль помещаются только элементы управления, близкие по смыслу.

Существует два способа создания модуля компонента - «ручной» и с использованием эксперта компонентов.

Эксперт компонентов упрощает задачу создания модуля компонента. Он генерирует синтаксически корректный модуль Delphi, содержащий базовую реализацию компонента. Он также создает «заглушки», включающие пустое объявление класса и процедуру Register, а также заполненный раздел uses модуля компонента. Эксперт не генерирует никакой функциональности, обеспечивая только каркас или фундамент, на котором строится компонент.

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

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

Следуя упомянутым выше соглашениям, назовём класс создаваемого компонента TMyButton. Объявление класса - это то место, где объявляются различные интерфейсы компонента. Конкретно, с пользовательской точки зрения, наиболее важными являются разделы public и published, поскольку именно они определяют интерфейсы времени выполнения (runtime) и времени проектирования (design-time) соответственно.

Свойства, методы и события, объявленные в разделе public, составляют интерфейс времени выполнения. На эти элементы можно сослаться или их можно использовать только тогда, когда приложение, использующее компонент, выполняется. Свойства и события, объявленные в разделе published, также доступны во время выполнения, но более важно то, что они доступны в Инспекторе объектов во время проектирования.

Эксперт компонентов не заполняет всех разделов генерируемого класса компонента. Он ограничивается объявлением четырех различных разделов.

2.3 Технология создания компонента с обоснованием принятых решений

Компонент курсовой работы мы создавали с помощью Эксперта компонентов. Создали новый проект типа Component (см.рис.1 слева), после чего заполнили требуемые данные в Эксперте компонентов (рис.2 справа).

Рисунок 1 - Создание нового компонента с помощью эксперта компонентов

Эксперт компонентов требует ввести следующую информацию:

- имя класса-предка, от которого будет порожден новый компонент (Tcomponent);

- имя класса нового компонента (ComponentClassOil);

- имя страницы палитры компонентов (Samples);

- имя модуля компонента (ComponentClassOil.pas);

- пути для поиска файлов.

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

Часть переменных мы определили как приватные (видимые только самому модулю), для них перед именем файла нужно добавить букву F. Часть переменных определили как Public, эти переменные видят программы, которые обращаются к компоненту. Остальные переменные, процедуры и свойства, а также конструктор, мы разместили в разделе Published, чтобы Инспектор объектов Delphi видел эти процедуры и свойства.

type

TComponentClassOil = class(TComponent)

private // элементы класса, которые видно только внутри класса

FOil: array of Integer;

Fn: Integer;

protected

{ Protected declarations }

public

{ Public declarations }

NWells: array of Real;

published // эти методы видны из других модулей и доступны в Инспекторе объектов

// количество скважин

property n: Integer read Fn write Fn;

// динамический массив под дебет каждой скважины

Constructor Create(AOwner: TComponent); override; // метод создает объект класса

procedure GetValueWells(userval:string); // считать число скважин в кусту

procedure SortWells(var n1, n2: Integer); // сортировка скважин по дебету

procedure ShowValue(); // показывает значение i

end;

Процедуру регистрации компонента на панели Samples нам уже создал Эксперт:

// процедура регистрации компонента на вкладке Sample

procedure Register;

begin

RegisterComponents('Samples', [TComponentClassOil]);

end;

Нам осталось только добавить тело конструктора и трех процедур, описанных в разделе implementation (см.листинг ниже). После чего делаем сохранение и компиляцию полученного компонента, что дает нам файл myoilpack.dpk. Этот файл нужно запустить в среде Delphi, чтобы он зарегистрировался в системе и установился на панель Sample.

Далее нужно в основной программе курсовой работы:

- описать переменную типа класса созданного компонента;

- обратиться к конструктору и создать экземпляр класса;

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

- выполнить вычисления, обратившись к компоненту и вернуть результат в программу, показать его на форме;

- уничтожить экземпляр класса компонента в памяти и обнулить его переменную.

Реализацию описанный шагов см.листинг ниже.

2.4 Листинг модуля

unit ComponentClassOil;

interface

uses

SysUtils, Classes, Dialogs;

// описываем тип класса, позволяющий объекту хранить информацию

// о количестве скважин куста на нефтяном промысле

type

TComponentClassOil = class(TComponent)

private // элементы класса, которые видно только внутри класса

FOil: array of Integer;

Fn: Integer;

protected

{ Protected declarations }

public

{ Public declarations }

NWells: array of Real;

published // эти методы видны из других модулей и доступны в Инспекторе объектов

// количество скважин

property n: Integer read Fn write Fn;

// динамический массив под дебет каждой скважины

Constructor Create(AOwner: TComponent); override; // метод создает объект класса

procedure GetValueWells(userval:string); // считать число скважин в кусту

procedure SortWells(var n1, n2: Integer); // сортировка скважин по дебету

procedure ShowValue(); // показывает значение i

end;

// процедура регистрации компонента на вкладке Sample

procedure Register;

// раздел реализации

implementation

// процедура регистрации компонента на вкладке Sample

procedure Register;

begin

RegisterComponents('Samples', [TComponentClassOil]);

end;

// конструктор класса - создает класс в памяти

constructor TComponentClassOil.Create(AOwner: TComponent);

begin

// насколько нам известно скважин в кусте нет на момент создания объекта класса

Fn:=0;

end;

// сортировка скважин по дебету для определения 2-х скважин

// с минимальным дебетом

procedure TComponentClassOil.SortWells(var n1, n2: Integer);

// n1, n2- номера скважин с минимальным дебетом

var

i,j: Integer; // вспомогательная переменная

Temp: Integer; // вспомогательная переменная

begin

// сортировка методом пузырька с помощью индексного массива

SetLength (FOil, n); //отвели место в памяти под массив номеров

// заполним массив индексов порядковыми номерами

for i:=0 to Fn-1 do FOil[i]:=i;

// отсортируем методом пузырька индексы исходного массива

for i:=0 to Fn-2 do

for j:=0 to Fn-2 do

// если впереди оказывается больший элемент, сдвигает его назад

if NWells[FOil[j]]>NWells[FOil[j+1]] then begin

Temp:=FOil[j];

FOil[j]:=FOil[j+1];

FOil[j+1]:=Temp;

end;

// после сортировки первых два элемента индексного массива - минимальные

// так как массив начинается с 0 элемента, то добавим 1

n1:=FOil[0]+1; n2:=FOil[1]+1;

end;

procedure TComponentClassOil.ShowValue;

begin

ShowMessage('Число скважин установлено равным '+intToStr(Fn));

end;

// считать число скважин в кусту

Procedure TComponentClassOil.GetValueWells(userval: string);

var

kod: integer;

uservalue: integer;

begin

// проверим правильно ли ввели число (может быть целое или не целое)

val(userval,uservalue,kod);

if (kod=0) and (uservalue>0) then begin

// конвертируем строку в целое число

n:=StrToInt(userval);

ShowValue; // обратиться к процедура которая показывает число скважин

end else begin

MessageDlg('Неверно введено число скважин', mtWarning, [mbOK],0);

n:=0;

end.

2.5 Листинг программы обращения к модулю

unit UnitZad2;

// раздел описаний

interface

uses

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

Dialogs, StdCtrls, Buttons, Grids, ComponentClassOil;

type

TFormZad2 = class(TForm) // с модулем связана форма с виз.элементами

BitBtn1: TBitBtn;

Edit1: TEdit;

Label1: TLabel;

Button2: TButton;

StringGrid1: TStringGrid;

Edit2: TEdit;

Edit3: TEdit;

Button3: TButton;

Label3: TLabel;

procedure BitBtn1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

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

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormZad2: TFormZad2;

ClassOil: TComponentClassOil;

// раздел реализации

implementation

uses UnitZad1;

{$R *.dfm}

// Кнопка выхода из формы

procedure TFormZad2.BitBtn1Click(Sender: TObject);

begin

Hide; // закрыли форму

FormZad1.Show; // показали главную форму

end;

// Нажали кнопку ввода числа скважин

procedure TFormZad2.Button2Click(Sender: TObject);

var

i: Integer; // вспомогательная переменная

begin

//передаем ввод в класс - определим число скважин

ClassOil.GetValueWells(Edit1.Text);

// если число скважин введено успешно и правильно, то установим

// нужный размер колонок StringGrid1

if ClassOil.n>0 then begin

with StringGrid1 do begin

ColCount:=ClassOil.n+1;

// И запишем заголовки колонок

for i:=1 to ColCount-1 do

Cells[i,0]:='Скв.'+IntToStr(i);

// а также установим названия строк

Cells[0,0]:='N скв.';

Cells[0,1]:='Дебет (м^3/сут)';

ColWidths[0]:=100; // а также изменим ширину 1 колонки

Enabled:=True; // дадим доступ к редактирвоанию StringGrid1

end;

end else

// запретим доступ к редактирвоанию StringGrid1 если что-то не так с числом скважин

StringGrid1.Enabled:=False;

end;

// Ищем две скважины с минимальным дебетом

procedure TFormZad2.Button3Click(Sender: TObject);

var

i, n1, n2: Integer; // вспомогательная переменная

begin

// если еще не ввели число скважин или ввели неверно

if ClassOil.n=0 then begin

ShowMessage('Не определено число скважин куста');

exit; // выход из процедуры

end;

// если число скважин задано, определим размер динамического массива

SetLength (ClassOil.NWells, ClassOil.n); //отвели место в памяти под массив

// введем данные в массив

For i:=1 to ClassOil.n do

ClassOil.NWells[i-1]:=StrToFloat(StringGrid1.Cells[i,1]); //массив А(1,2,3,4,5)

ClassOil.SortWells(n1, n2);

Edit2.Text:=IntToStr(n1);

Edit3.Text:=IntToStr(n2);

end;

// в момент создания формы в памяти создаем объект класса

procedure TFormZad2.FormCreate(Sender: TObject);

begin

ClassOil:=TComponentClassOil.Create(ClassOil); //создаем в памяти объект класса

end;

// в момент уничтожения формы освобождаем память, занятую под объект класса

procedure TFormZad2.FormDestroy(Sender: TObject);

//ClassOil.Free; //уничтожаем объект

FreeAndNil(ClassOil); // уничтожение и объекта и переменной

end;

// в элемент разрешается вводить только числа и разделители вещ. чисел

procedure TFormZad2.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in ['0'..'9', #8, DecimalSeparator]) then Key:=#0;

end.

2.6 Скриншоты

2.7 Выкладки, подтверждающие правильность полученных результатов

Имеем 5 скважин со следующими значениями дебетом:

1 - 3453 м3/сутки

2 - 3 м3/сутки

3 - 5324 м3/сутки

4 - 11 м3/сутки

5 - 43 м3/сутки

По суточному дебиту каждой скважины определим номера двух скважин с минимальной производительностью: это скважины 2 и 4. Программа выдала то же решение.

ЗАКЛЮЧЕНИЕ

Наука программирования (computer science) занимается исследованием свойств алгоритмов и разработкой методов построения программ. Актуальность изучения науки определяется современными тенденциями развития информатики как науки, в частности, переходом к программированию на основе объектно-ориентированной методологии. Объектно-ориентированное программирование (object-oriented rogramming) - это технология реализации программ, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.

Писать сложные программы в тысячи и десятки тысяч строк без расчленения на самостоятельные фрагменты, т. е. без структурирования, просто невозможно. Object Pascal имеет различные средства для структурирования программ. На нижнем уровне деления (для элементарных подзадач) чаще всего используются процедуры и функции, а на верхнем уровне (для больших задач) используются модули. Часто используемые визуальные и невизуальные объекты в Delphi вынесены в виде отдельных так называемых компонентов, которые основаны на иерархии классов.

В данной курсовой работе мы, используя алгоритмизацию, создали алгоритм решения вычислительной задачи в соответствии с ЕСПЧ, на основании этого алгоритма написали решение задачи на языке Object Pascal, который используется средой программирования Delphi. Поскольку мы в задаче задействуем визуальный ввод и вывод информации, то для решения использован ряд визуальных стандартных компонентов. Процесс и результаты решения задачи приведены в разделе 1 курсовой работы.

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Справочник по математике. Геометрия (Планиметрия) URL: http://www.resolventa.ru/spr/planimetry.htm

2. Справочные материалы по планиметрии URL: http://www.gazpromschool.ru/students/projects/geometry/index.htm

3. Г.Э. Вощинская, В.Г. Рудалев, М.А. Артемов РАЗРАБОТКА КОМПОНЕНТОВ В DELPHI. Учебно-методическое пособие для вузов. Воронеж: Издательско-полиграфический центр Воронежского государственного университета, 2007.- 58 с.

4. Александровский А.Д. Delphi 5.0. Разработка корпоративных приложений. -М. : ДМК, 2000. - 512 с.

5. Конопка Р. Создание оригинальных компонентов в среде DELPHI. - Киев: НИПФ-ДиаСофтЛтд, 1996. - 512 с.

6. Фаронов В.В. Искусство создания компонент Delphi. Библиотека программиста.- СПб.: Питер, 2005.- 464 с.

7. Гофман, В.Э.; Хомоненко, А.Д. Delphi 5; СПб: БХВ - Москва, 2000. - 800 c.

8. Дарахвелидзе, П.Г.; Марков, Е.П. Delphi 2005 для Win32 наиболее полное руководство; БХВ-Петербург - Москва, 2005. - 602 c.

9. Понамарев, В. Базы данных в Delphi 7. Самоучитель; СПб: Питер - Москва, 2003. - 224 c.

10. Сван, Том Секреты 32-разрядного программирования в Delphi (+ дискета); К.: Диалектика - Москва, 1997. - 480 c.

10. Федоров, А. Delphi 2.0 для всех; М.: Компьютер-пресс - Москва, 1997. - 464 c.

11. Архангельский А.Я. Программирование в Delphi. Учебник по классическим версиям Delphi. - М.: ООО «Бином-Пресс», 2006. - 1152 с.: ил.

12. Архангельский А.Я. Программирование в Delphi. - М.: ООО «Бином-Пресс», 2004. - 1152 с.: ил.

Размещено на Allbest.ru


Подобные документы

  • Теоретические основы объектно-ориентированного языка программирования Delphi, изучение среды визуального проектирования приложений. Определение 40-го числа Фибоначчи, составление листинга и блок-схемы программы, тестирование ее на работоспособность.

    курсовая работа [261,1 K], добавлен 25.03.2015

  • Особенности среды визуального проектирования Borland Delphi 7.0. Этапы разработки программы и составления блок-схемы алгоритмов. Способы вычисления кусочно-заданной функции одной переменной. Рассмотрение компонентов среды Delphi, ее предназначение.

    контрольная работа [703,8 K], добавлен 24.09.2012

  • Исследование особенностей разработки линейных алгоритмов и их реализации в среде Delphi. Составление тестов для проверки программы. Характеристика основных элементов интерфейса, компонентов, значения их свойств. Построение графической схемы алгоритма.

    лабораторная работа [316,6 K], добавлен 08.11.2012

  • Описание методов дихотомии (половинного деления) и касательных. Их применение для решения нелинейных уравнений. Графическое отделение корней. Блок-схемы алгоритмов. Тексты (листинги) программ на языке Delphi. Тестовый пример решения задачи с помощью ЭВМ.

    курсовая работа [944,6 K], добавлен 15.06.2013

  • Проектирование программного модуля в среде программирования Borland Delphi 7.0. Схемы алгоритмов решения задач по темам "Символьные переменные и строки", "Массивы", "Работа с файлами", "Создание анимации". Реализация программного модуля, код программы.

    отчет по практике [961,6 K], добавлен 21.04.2012

  • Особенности и тонкости программирования в среде Delphi. Специфика перехода от алгоритмического решения к непосредственной программной реализации на языке Object Pascal с использованием всех необходимых средств данного языка. Анализ полученных результатов.

    реферат [246,2 K], добавлен 17.11.2012

  • Решение задач с помощью языка программирования Delphi: вычисление значения функции Y от X; систем двух уравнений; прогрессий; последовательностей; вычисление числа с определенной точностью; перевод числа из десятичной в восьмеричную систему счисления.

    отчет по практике [83,8 K], добавлен 08.06.2010

  • Общая характеристика системы программирования Delphi, а также принципы создания ее компонентов. Описание значений файлов приложения, созданного с помощью Delphi. Структура и свойства библиотеки визуальных компонентов (Visual Component Library или VCL).

    отчет по практике [1,1 M], добавлен 07.12.2010

  • Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования Delphi, которое, как планируется, будет обеспечивать решение специализированных задач по формированию, обработке на ЭВМ и выводу информации.

    курсовая работа [967,6 K], добавлен 20.05.2008

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

    курсовая работа [476,6 K], добавлен 22.05.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.