Разработка программы построения графика математических функций

Страницы работы

Фрагмент текста работы

Министерство образования Республики Беларусь

Белорусский государственный университет транспорта

Электротехнический факультет

Кафедра «Информатика и информационные технологии»

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

«Разработка программ на языке программирования С\С++»

Выполнил                                                                                  Принял

студент гр. ЭМ-22                                                                     преподаватель

Бусел М.А.                                                                                 Халамов С.В.

Гомель. 2004.

 


Содержание

1.  Введение.

2.  Постановка задачи и алгоритм решения.

3.  Листинг исходного кода программы.

4.  Используемые возможности языка С\С++ и компилятора Builder C++ Borland 6.0.

5.  Результат программы.

6.  Заключение.

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

1 Введение.

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

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

На основе Си в 80-е годы был разработан язык Си++, вначале названный "Си с классами". Си++ практически включает язык Си и дополнен средствами объектно-ориентированного программирования. Рабочая версия Си++ появилась в 1983 г. С тех пор язык продолжает развиваться и опубликовано несколько версий проекта стандартов Си и Си++.

Программа на Си/Си++ представляет собой один или несколько исходных файлов, которые могут транслироваться раздельно. Результаты трансляции (объектные файлы) объединяются в исполняемый файл редактором связей (компоновщиком). Обычно различают два типа исходных файлов: файлы заголовков и программные файлы. Файлы заголовков содержат описания типов данных и прототипов функций и предназначены для включения в программные файлы перед их компиляцией, их имена, как правило, имеют расширение .h, например, stdio.h. Программные файлы содержат описания функций и, возможно, глобальных переменных и констант, их имена принято записывать с расширениями .c или .cpp, например, prog.cpp. Один и тот же файл заголовков может включаться в несколько программных файлов

Каждый файл содержит последовательность так называемых "внешних определений", описывающих типы данных, переменные, константы и функции.

Системы обработки данных на базе ЭВМ стали важной особенностью жизни общества. Вычислительная техника стала неотделима от повседневной деятельности человека в любой отрасли знаний.

2 Постановка задачи и алгоритм решения.

Задание на курсовую работу: Разработка программы построения графика математических функций.

При написании данной программы был использован компилятор языка С\С++  - Builder C\C++ Borland 6.0, который позволяет более удобно работать с готовыми визуальными компонентами.

Алгоритм выполнения программы можно представить в виде следующего рисунка:

3 Листинг исходного кода программы.

Исходный код ядра программы:

#include <vcl.h>

#pragma hdrstop

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

USEFORM("Main.cpp", FormMain);

USEFORM("About.cpp", Fa);

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

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

        try

        {

                 Application->Initialize();

                 Application->Title = "Fuction reasercher 1.0";

                 Application->CreateForm(__classid(TFormMain), &FormMain);

                 Application->CreateForm(__classid(TFa), &Fa);

                 Application->Run();

        }

        catch (Exception &exception)

        {

                 Application->ShowException(&exception);

        }

        catch (...)

        {

                 try

                 {

                         throw Exception("");

                 }

                 catch (Exception &exception)

                 {

                         Application->ShowException(&exception);

                 }

        }

        return 0;

}

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

Исходный код непосредственно самой программы:

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

#include <vcl.h>

#pragma hdrstop

#include <math.h>

#include "Main.h"

#include "About.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormMain *FormMain;

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

struct __data

{

        double x,y;

};

        float M = 1;

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

float func(AnsiString cmd, double x)

{

  AnsiString s1,s2;

  s1 = cmd;

  int lens,level = 0;

  lens = cmd.Length();

  int i = 0;

  for (i=1;i<=lens;i++)

  {

   if (cmd[i] == '(') level++;

   if (cmd[i] == ')') level--;

   if ((cmd[i] == '-') && (level == 0))

   {

     s1=cmd.SubString(1,i-1);

     s2=cmd.SubString(i+1,lens-i);

     float f = func(s1,x) - func(s2,x);

     return f;

    }

   if ((cmd[i] == '+') && (level == 0))

   {

     s1=cmd.SubString(1,i-1);

     s2=cmd.SubString(i+1,lens-i);

     float f = func(s1,x) + func(s2,x);

     return f;

   }

   if ((cmd[i] == '*') && (level == 0))

   {

     s1=cmd.SubString(1,i-1);

     s2=cmd.SubString(i+1,lens-i);

     float f = func(s1,x) * func(s2,x);

     return f;

   }

   if ((cmd[i] == '/') && (level == 0))

   {

 s1=cmd.SubString(1,i-1);

     s2=cmd.SubString(i+1,lens-i);

     float f = func(s1,x) / func(s2,x);

     return f;

   }

  }

  s1 = cmd.SubString(1,3);

  s2 = cmd.SubString(5,lens-5);

  if (s1 == "sin")

  {

   float f = sin(func(s2,x));

   return f;

  }

  if (s1 == "cos")

  {

   float f = cos(func(s2,x));

   return f;

  }

  if (s1 == "abs")

  {

   float f = abs(func(s2,x));

   return f;

  }

  if (s1 == "tan")

  {

   float f = tan(func(s2,x));

   return f;

  }

  s1 = cmd.SubString(1,4);

  s2 = cmd.SubString(6,lens-6);

  if (s1 == "sqrt")

  {

   float f;

   f = func(s2,x);

   if (f < 0)

   return 0;

   else return sqrt(f);

  }

  if (s1 == "atan")

  {

   float f = atan(func(s2,x));

   return f;

  }

  if (cmd == "x")

  {

   float f = x;

   return f;

  }

  float f=0;

  f = cmd.ToDouble();

  return f;

}

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

__fastcall TFormMain::TFormMain(TComponent* Owner)

        : TForm(Owner)

{

Button6->Enabled=false;

Label2->Caption = FormatDateTime("hh:nn:ss", Now());

Label3->Caption = FormatDateTime("dd:mm:yy",Now());

}

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

void func_draw()

{

 __data * data = new __data[1000];

 int i = 0;

 double px,py;

 double dx,dy;

 double gx1,gx2,gxt,gy,step;

 px = FormMain->Image1->Width;

 py = FormMain->Image1->Height;

 dx = 20 * M;

 dy = (py/px)*20 * M;

 gx1 = -dx/2;

 gx2 = dx/2;

 gy = dy/2;

 step = dx/1000;

 gxt = gx1;

 AnsiString temp;

 temp = FormMain->Edit1->Text;

 //if (temp == "input function ...") temp="0";

 for (i;i<1000;i++)

 {

  data[i].x = gxt;

  data[i].y = func(temp,gxt);

  gxt = gxt + step;

 }

 double x1,x2,y1,y2;

 FormMain->Image1->Repaint();

 FormMain->Image1->Canvas->Pen->Color = 200;

 FormMain->Image1->Canvas->MoveTo(0,int(py/2));

 FormMain->Image1->Canvas->LineTo(int(px),int(py/2));

 FormMain->Image1->Canvas->MoveTo(int(px/2),0);

 FormMain->Image1->Canvas->LineTo(int(px/2),int(py));

 FormMain->Image1->Canvas->TextOutA(1,int(py/2)+1,AnsiString(gx1));

 FormMain->Image1->Canvas->TextOutA(px-1-FormMain->Image1->Canvas->TextWidth(AnsiString(gx2)),int(py/2)+1,AnsiString(gx2));

 FormMain->Image1->Canvas->TextOutA(int(px/2)+1,1,AnsiString

Похожие материалы

Информация о работе