Математическое обеспечение
В данной программе используется алгоритм итерациооного поиска:
Данный алгоритм реализует перебор всех имеющихся значений и выбор из них тех, которые удовлетворяют условиям.
1) Первое из условий, встречающееся в данном алгоритме является: b>=1 & b<=5;
2) Далее реализуется цикл for с условием y<=a и ведется поиск значений y, удовлетворяющих этому условию;
3) While выполняет прербор значений po<=b*12;
4) Размер выплат производится при условии o>=-1 & o<1.
Разработка алгоритма программы в виде блок-схемы
Блок-схема функции атерационного поиска:
Описание Работы Программы
|
При создании данной программы были использованы следующие компоненты:
1. Компонент Label – компонент используется для вывода на форму текста, пояснительных надписей, а так же данных без возможности редактирования.
2. Компонент Edit - поле радактированиия. В данной программе используется для вывода пояснительного текста.
3. Компонент Image – используется для вывода графических изображений, в данной программе для вывода графика.
4. Компонент Memo – элемент редактирования текста, который может содержать несколько строк. При работе программы данный компонент невидим и может распологоться в любом месте формы.
5. Компонент OpenDialog – осуществляет доступ к стандартному диалоговому окну «Открыть файл». Испльзуется для открытия файла из которого загружаются данные.
6. Компонент Button – кнопка. С помощью них осуществляются действия программы (выполняется загрузка файла, алгоритм)
|
В данной программе компонент Button1 представлен в обычной фореме, т.е. стандартная кнопка. Для нее задано событие Button1Click (нажатие кнопки 1) при котором появляется стандартное диалоговое окно «Открыть файл». После выбора файла, так же в этом событии происходит проверка правильности данных и дальнеейшее выполнение алгоритма. После вывода конкретного результата (или сообщения «Введнные данные не верны») можно использовать этот компонент снова.
Так же, в программе имеется компонент Button2 представленный так де в обычной форме. И при заданном событии Button2Click выполняет действие Clouse (выход из программы).
|
Так же при создании программы были изменены некоторые свойства компонента 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();
}
//---------------------------------------------------------------------------