Математическое обеспечение

В данной программе используется алгоритм итерациооного поиска:

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

1) Первое из условий, встречающееся в данном алгоритме является: b>=1 & b<=5;

2) Далее реализуется цикл for с условием y<=a и ведется поиск значений y, удовлетворяющих этому условию;

3) While выполняет прербор значений po<=b*12;

4) Размер выплат производится при условии o>=-1 & o<1.

 

Разработка алгоритма программы в виде блок-схемы

Блок-схема функции атерационного поиска:

 

 


 


 

 


Описание Работы Программы

Рис.2

 

При создании данной программы были использованы следующие компоненты:

1. Компонент Label – компонент используется для вывода на форму текста, пояснительных надписей, а так же данных без возможности редактирования.

2. Компонент Edit - поле радактированиия. В данной программе используется для вывода пояснительного текста.

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

4. Компонент Memo – элемент редактирования текста, который может содержать несколько строк. При работе программы данный компонент невидим и может распологоться в любом месте формы.

5. Компонент OpenDialog – осуществляет доступ к стандартному диалоговому окну «Открыть файл». Испльзуется для открытия файла из которого загружаются данные.

6. Компонент Button – кнопка. С помощью них осуществляются действия программы (выполняется загрузка файла, алгоритм)

Рис.3

 

В данной программе компонент Button1 представлен в обычной фореме, т.е. стандартная кнопка. Для нее задано событие Button1Click (нажатие кнопки 1) при котором появляется стандартное диалоговое окно «Открыть файл». После выбора файла, так же в этом событии происходит проверка правильности данных и дальнеейшее выполнение алгоритма. После вывода конкретного результата (или сообщения «Введнные данные не верны») можно использовать этот компонент снова.

Так же, в программе имеется компонент Button2 представленный так де в обычной форме. И при заданном событии Button2Click выполняет действие Clouse (выход из программы).

Рис.4  

 

 

Так же при создании программы были изменены некоторые свойства компонента TForm1 (Форма):

В часности изменено свойство BorderIcons (кнопки управления окном) – компонент biMaximaze (развернуть) сделан недоступным.

Был изменен компонент BorderStyle (вид границы) – bsSizeable (обычная граница) была заменена на bsSingle (тонкая граница) для отключения функции свободной трансформации окна.

 

Выводы

 

В ходе выполнения работы был изучен алгоритм итерационного поиска, а так же оновы программиррования в среде Borland C++ Builder. Данный язык так же называют средой быстрой разработки приложений, что вполне оправдано – для создания аналогичной программы на ассемблере необходимо было бы написать код на сотню страниц, в С++ на десяток, а на Borland C++ Builder всего несколько страниц. Borland C++ Builder является средой визуальной разработки приложений. Данный подход к программированию является одним из самых перспективных на сегодняшний день и это вполне оправданно как обьемом кода для написания программы, так и следствием из этого – экономией времени. А всплываюшие подсказки при написании кода, избавляют от необходимости обрашатся к справочникам для уточнения синтаксиса конкретной команды. Однако, для написания лбой программы необходимо знать и уметь составлять алгоритмы решения задачи, что входит исключительно в задачи программиста. В связи с этим, в ходе выполнения работы, были изучены основы програмирования на языке С++ , который является базовым для Borland C++ Builder, без знания основ которого не может быть реализован ни один алгоритм. Так что для работы в среде Borland C++ Builder необходимо знание основ как С++, так и объектно ориентиропанного программирования в целом.

 

Список используемой литературы

1. Культин Н.Б. Самоучитель С++ Builder. – СПб.: БХВ-Петербург,2005. – 320с.: ил.

2. Культин Н.Б. С/С++ в задачах и примерах. – СПб.: БХВ-Петербург, 2006. – 288с.: ил.

3. Borland Builder C++. Освой самостоятельно. – СПб.: Питер, 2005. – 702с.: ил.

4. Холзнер С. Visual C++ 6. Учебный курс. – СПб.: Питер, 2006. – 570с.: ил.

5. Красиков И.В., Красикова И.Е. Алгоритмы. Просто как дважды два. – М.: Эксмо,2006. – 256с.: ил.

6. Карпов Б., Баранова Т. С++. Специальный справочник (2-е издание). – СПб.: Питер, 2005. – 381с.: ил.

7. Франка П. С++: Учебный курс. – СПб.: Питер, 2005. – 522с.: ил.

 

 

Приложение

//---------------------------------------------------------------------------

 

#include <vcl.h>

#include <math.h>

#pragma hdrstop

 

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

long int a,b,c,x,p,po;

float o,y;

 

if (OpenDialog1->Execute())

{

Memo1->Lines->LoadFromFile(OpenDialog1->FileName);

Edit1->Text="Данные загружены";

a=StrToInt(Memo1->Lines->operator [](0));

Label2->Caption=IntToStr(a);

b=StrToInt(Memo1->Lines->operator [](1));

Label4->Caption=IntToStr(b);

c=StrToInt(Memo1->Lines->operator [](2));

Label6->Caption=IntToStr(c);

o=0;

if ((StrToInt(Label4->Caption)>=1) && (StrToInt(Label4->Caption)<=5))

{

for (y=a*c/100;y<=a;y=y+0.001)

{

o=a;

po=1;

while (po<=b*12)

{

o=o+o*c/100;

o=o-y;

po=po+1;

}

if (o<-1) break;

if ((o<1) && (o>=-1))

{

Label8->Caption=FloatToStrF(y,ffFixed,5,2);

o=a;

po=1;

Image1->Canvas->MoveTo(15,200);

Image1->Canvas->LineTo(15,5);

Image1->Canvas->LineTo(10,10);

Image1->Canvas->MoveTo(15,5);

Image1->Canvas->LineTo(20,10);

Image1->Canvas->MoveTo(0,114);

Image1->Canvas->LineTo(500,114);

//Image1->Canvas->MoveTo(0,0);

Image1->Canvas->MoveTo(po*7+14,120-o/10);

while (po<=b*12)

{

 

Image1->Canvas->MoveTo(po*7+14,120-o/10);

Image1->Canvas->LineTo(po*7+15,120-o/10);

 

o=o+o*c/100;

o=o-y;

po=po+1;

}

 

}

}

 

}

else

{

Edit1->Text="Загружаемые данные не верны";

}

}

 

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Form1->Close();

}

//---------------------------------------------------------------------------