Министерство образования Республики Беларусь
Белорусский государственный университет транспорта
Электротехнический факультет
Кафедра «Информатика и информационные технологии»
Курсовая работа
«Разработка программ на языке программирования С\С++»
Выполнил Принял
студент гр. ЭМ-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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.