Разработка программы на языке C++. Курсовая работа (т). Информационное обеспечение, программирование.

Разработка программы на языке C++. Курсовая работа (т). Информационное обеспечение, программирование.




💣 👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻


























































Информационное обеспечение, программирование

Вы можете узнать стоимость помощи в написании студенческой работы.


Помощь в написании работы, которую точно примут!

Похожие работы на - Разработка программы на языке C++

Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе

Нужна качественная работа без плагиата?

Не нашел материал для своей работы?


Поможем написать качественную работу Без плагиата!

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


Федеральное
государственное бюджетное образовательное


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


«Комсомольский-на-Амуре
государственный технический университет»


Кафедра
«Теоретические основы электротехники»














по
дисциплине «Программирование и основы алгоритмизации»


Студент
группы 9ИНб-1 М. А. Путинцева


4. Разработка
программы на языке C++


Приложение А Программа на языке C++


Приложение Б Блок-схемы метода
Рунге-Кутта 4 порядка для решения ОДУ









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


Программирование основывается на специальных
алгоритмических языках, с помощью которых и задаются инструкции компьютеру
(вернее, его процессору), законченный набор которых называется программой.
Алгоритмических языков в данное время имеется большое множество, каждый из
которых служит для решения своих задач. В то же время есть и языки общего
назначения, на которых пишется большое количество современных приложений для
компьютера. К этим языкам можно отнести такие, как C++, Java, C#, Delphi и
другие.


Программы, которые мы пишем на алгоритмических
языках, непосредственно не понятны компьютеру (процессору), т.к. на самом
низком уровне он может воспринимать и понимать лишь два числа: ноль и единицу.
Иными словами, процессор оперирует лишь значениями и командами в двоичном коде
(а двоичный код, как вы знаете, состоит из нулей и единиц). Для того чтобы
текст составленной программы смог выполняться компьютером, его нужно
преобразовать к понятному компьютеру формату. Для этой цели служат, так
называемые трансляторы, у которых в свою очередь есть тоже две разновидности:
компиляторы и интерпретаторы. Разница между ними в том, что компиляторы
полностью преобразуют код к формату, понятному компьютеру, а затем уже он
выполняется. Интерпретаторы построчно преобразуют код к понятному компьютеру
формату, которые он так же построчно и выполняет. Вторым способом выполнение
программы будет происходить несколько медленнее, нежели первым. В то же время
программы, написанные на интерпретируемых языках программирования, могут быть
легко перенесены в другую программную среду. К примеру, могут выполняться как
на компьютерах, так и на смартфонах. Все вы, наверное, слышали о
java-приложениях, которые могут работать в разных средах, за счет того, что
java является интерпретируемым языком и выполняется специальной джава-машиной.









программирование язык си
дифференциальное уравнение


Разработать программу на языке С++, в которой
реализовано:


) решение дифференциального уравнения с
начальными условиями на интервале .


) аппроксимация полученного решения параболой
методом наименьших квадратов.


) расчет погрешности аппроксимации.


) построение графиков решения дифференциального
уравнения, аппроксимирующей функции и погрешности аппроксимации.


Программа должна сопровождаться понятным
пользователю интерфейсом.


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


Несколько лет назад рядовому программисту
оставалось только мечтать о создании своих собственных программ, работающих в Windows.
Единственным средством разработки был Borland
C++ for
Windows, явно
ориентированный на профессионалов, обладающих серьезными знаниями и опытом.
Бурное развитие вычислительной техники, потребность в эффективных средствах
разработки программного обеспечения привели к появлению на рынке целого ряда
систем программирования, ориентированных на так называемую "быструю
разработку", среди которых особо следует отметить Microsoft
Visual Basic
и Borland Delphi.
В основе систем быстрой разработки (RAD-систем,
Rapid Application
Development - среда быстрой разработки
приложений) лежит технология визуального проектирования и событийного
программирования, суть которой заключается в том, что среда разработки берет на
себя большую часть работы по генерации кода программы, оставляя программисту
работу по конструированию диалоговых окон и написанию функций обработки
событий. Производительность программиста при использовании RAD
систем фантастическая!


Успех и популярность Delphi
вызвал желание фирмы Borland
распространить методы быстрой разработки на область профессионального
программирования, что и привело к появлению Borland
C++ Builder.++
Builder - это среда
быстрой разработки, в которой в качестве языка программирования используется
язык C++ Builder
(C++ Builder
Language). Не вдаваясь в
подробности, можно сказать, что язык C++
Builder - это расширенный C++.
Например, в C++ Builder
есть строковый (AnsiString)
и логический (bool) типы,
которых нет в классическом C++.


В настоящее время программистам стала доступна
очередная, шестая версия пакета - Borland
C++ Builder
6. Как и предыдущие версии, Borland
C++ Builder
6 позволяет создавать различные программы: от простейших однооконных приложений
до программ управления распределенными базами.


Borland
C++ Builder
может работать в среде операционных систем от Windows
98 до Windows
XP. Особых
требований, по современным меркам, к ресурсам компьютера пакет не предъявляет:
процессор должен быть типа Pentium
или Celeron
(рекомендуется Pentium
II 400 МГц); объем
оперативной памяти должен составлять не менее 128 Мбайт (рекомендуется 256
Мбайт) и свободное дисковое пространство должно быть достаточным (для полной
установки версии Enterprise
необходимо приблизительно 750 Мбайт).




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


К задачам вычислительной математики относят:


нахождение собственных значений и векторов
матрицы


нахождение сингулярных значений и векторов
матрицы


решение нелинейных алгебраических уравнений


решение систем нелинейных алгебраических
уравнений


решение дифференциальных уравнений (как
обыкновенных дифференциальных уравнений, так и уравнений с частными
производными)


решение систем дифференциальных уравнений


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


Дифференциа ́ льное
уравне ́ ние
- уравнение, связывающее значение некоторой неизвестной функции в некоторой
точке и значение её производных различных порядков в той же точке.
Дифференциальное уравнение содержит в своей записи неизвестную функцию, ее
производные и независимые переменные; однако не любое уравнение, содержащее
производные неизвестной функции, является дифференциальным уравнением.
Например, не является дифференциальным уравнением. Стоит также отметить, что
дифференциальное уравнение может вообще не содержать неизвестную функцию,
некоторые её производные и свободные переменные, но обязано содержать хотя бы
одну из производных.


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


Решением (интегралом) дифференциального
уравнения порядка n называется функция y(x), имеющая на некотором интервале (a,
b) производные y'(x),y''(x),...,y(n)(x) до порядка n включительно и
удовлетворяющая этому уравнению. Процесс решения дифференциального уравнения
называется интегрированием. Вопрос об интегрировании дифференциального
уравнения считается решенным, если нахождение неизвестной функции удается привести
к квадратуре, независимо от того, выражается ли полученный интеграл в конечном
виде или нет.


Все дифференциальные уравнения можно разделить
на обыкновенные (ОДУ), в которые входят только функции (и их производные) от
одного аргумента, и уравнения с частными производными (УРЧП), в которых
входящие функции зависят от многих переменных. Существуют также стохастические
дифференциальные уравнения (СДУ), включающие случайные процессы.


Решение систем дифференциальных
уравнений


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


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




уi+1=уi+(k1+2k2+2k3+k4)/6,=hf(xi,yi),=hf(xi+h/2,
yi+k1/2),=hf(xi+h/2, yi+k2/2),=hf(xi+h, yi+k3),+1=xi+h,



где уi+1,уi - значения искомой функции в точках
xi+1, xi соответственно, индекс i показывает номер шага интегрирования, h - шаг
интегрирования. Начальные условия при численном интегрировании учитываются на
нулевом шаге: i=0, x=x0, y=y0









В ходе выполнения курсовой работы я закрепила
знания работы с программой C++Builder . Благодаря уникальному сочетанию
удобства разработки пользовательских интерфейсов, компонентной архитектуры,
однотипности доступа к разнообразным базам данных было проще программировать.









1. Шилдт, Г. А. Программирование на
C и C++ для Windows / Г. Шилдт - М.: BHV, 1996.-235с.


. Петзолд, Ч. Р. Программирование
для Windows / Ч. Петзолд - Санк-Петербург: BHV, 1997.-345с.


. Страуструп, Б. В. Язык
программирования Си++ / Б. Страуструп- М: Радио и связь, 1991.-468с.


. Архангельский, В.В.
Программирование в С++ Builder 6 / В.В. Архангельский - М.: Бином, 1998г.- 560с.



. Подбельский, В.В. Программирование
на языке Си / В.В Подбельский. - М: Финансы и статистика, 2002. - 600с.









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


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


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


classTForm1
: publicTForm//Создание нового
класса формы


TButton
*approx;//Кнопка
аппроксимировать


TButton
*CalcDy;//Кнопка
рассчитать погрешность


TButton
*Draw;//Кнопка построить
график


TGroupBox *Draws;*Solution;//Кнопки
выбора
типа
графика*AppFunc;*Mistake;*Operation;*Clear;//Кнопка
отчистить*Timer1;//Таймер__fastcall
FormCreate(TObject *Sender);__fastcall SolveClick(TObject *Sender);__fastcall
approxClick(TObject *Sender);__fastcall ClearClick(TObject *Sender);__fastcall
CalcDyClick(TObject *Sender);__fastcall SolutionClick(TObject *Sender);__fastcall
AppFuncClick(TObject *Sender);__fastcall MistakeClick(TObject
*Sender);__fastcall FormShow(TObject *Sender);__fastcall Timer1Timer(TObject
*Sender);__fastcall DrawClick(TObject *Sender);:       // User declarations:                                                                         //
User declarations


__fastcall TForm1(TComponent*
Owner);


//---------------------------------------------------------------------------PACKAGE
TForm1 *Form1;


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


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


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


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


#defineNONE
0 //Не требуется построения графика


#defineAPR
2 //График аппроксимирующей функции


intx_c=30,y_c=170;
//Начало координат


double x0 = 0.5; //Интервалxk = 1.5;
y0 = 0.6;
//Начальное условие


intn = 2+(xk-x0)/h;
//Количество узлов сетки


intg_type=NONE;
//Вид графика для построения


double *knots; //Узлы
сетки*knots_half; //Узлы сетки*solutions; //Значения решений*solutions_half;
//Значения решений c полушагом*approxim; //Значения апроксимир.
функции*correct; //Уточнённое решение*errors; //Значения
поправок*approxim_correct; //Значения
аппроксим.
с
поправкой[3][4];
//Система уравнений для поиска коэф. апр. функции


double
Parab[3]={0,0,0};
//Коэффициенты аппроксимирующей функции


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


doubleMy(double,
double); //Функция в
правой части диф.уравнения


double ApproxFunc(double);
//Аппроксимирующая функция


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


__fastcall
TForm1::TForm1(TComponent* Owner)


//---------------------------------------------------------------------------__fastcall
TForm1::FormCreate(TObject *Sender)


solutions
= newdouble [n];
//Выделение памяти под массивы значений


approxim = new double [n];= new
double [n];= new double [n];_half = new double [n*2];= new double [n];_correct
= new double [n];_half= new double [n*2];(int i=0; iEnabled=true;
//Разрешение ранее недоступных объектов управления


//Вычисления методом Рунге-Кутта 4 порядка


{=My(knots[i],solutions[i]);=My(knots[i]+h/2.0,solutions[i]+h/2.0*k1);=My(knots[i]+h/2.0,solutions[i]+h/2.0*k2);=My(knots[i]+h,solutions[i]+h*k3);[i+1]=solutions[i]+h/6*(k1*+2*k2+2*k3+k4);


//Вычисления методом Рунге-Кутта 4 порядка с
полушагом


{=My(knots_half[i],solutions_half[i]);=My(knots_half[i]+h_half/2.0,solutions_half[i]+h_half/2.0*k1);=My(knots_half[i]+h_half/2.0,solutions_half[i]+h_half/2.0*k2);=My(knots_half[i]+h_half,solutions_half[i]+h_half*k3);_half[i+1]=solutions_half[i]+h_half/6*(k1*+2*k2+2*k3+k4);


Screen->Lines->Add("Решение
диф. уравнения");


Screen->Lines->Add("-------------------------------------------------------------------");(i=0;
iLines->Add("x = " + AnsiString(knots[i]) +


"\t f(x,y) = " +
AnsiString(solutions[i]));->Lines->Add("-------------------------------------------------------------------");


//Вывод решения с полушагом на экран


Screen->Lines->Add("Решение
диф. уравнения c
полушагом");


Screen->Lines->Add("-------------------------------------------------------------------");(i=0;
i<2*n; i++)>Lines->Add("x = " + AnsiString(knots_half[i]) +


"\t f(x,y) = " +
AnsiString(solutions_half[i]));>Lines->Add("-------------------------------------------------------------------");


//---------------------------------------------------------------------------__fastcall
TForm1::approxClick(TObject *Sender)


//Вычисление коэффициентов системы уравнений для
вычисления апр. функции


//Согласно методу наименьших квадратов


CalcDy->Enabled=true;
//Разрешение ранее недоступных органов управления


AppFunc->Enabled=true;(i=0;
iLines->Add("Коэффициенты
апроксимирующей функции");


Screen->Lines->Add("-------------------------------------------------------------------");>Lines->Add("a
= " + AnsiString(Parab[0]));>Lines->Add("b = " +
AnsiString(Parab[1]));>Lines->Add("c = " +
AnsiString(Parab[2]));->Lines->Add("-------------------------------------------------------------------");


//Расчёт через аппроксимирующую функцию с
выводом на экран


{[i]=ApproxFunc(knots[i]);>Lines->Add("x
= " + AnsiString(knots[i]) +


"\t f(x,y) = " +
AnsiString(approxim[i]));


}>Lines->Add("-------------------------------------------------------------------");


//---------------------------------------------------------------------------__fastcall
TForm1::ClearClick(TObject *Sender)


//Очистка рабочей
областиi=Screen->Lines->Count;_type=NONE;(i>=1)//Очищаем
поле
вывода


{>Lines->Delete(0);=Screen->Lines->Count;
Solution->Enabled=false;//Запрещаем
органы управления


AppFunc->Enabled=false;>Enabled=false;>Enabled=false;>Enabled=false;2->Invalidate();//Очищаем
окно отображения графика


//---------------------------------------------------------------------------__fastcall
TForm1::CalcDyClick(TObject *Sender)


//Вычисление погрешности методом Рунге-Ромберга


Mistake->Enabled=true;(i=0;
iLines->Add("Рассчёт
погрешности аппроксимации и корректировка значений");


Screen->Lines->Add("-------------------------------------------------------------------");(i=0;
iLines->Add("x =
"+AnsiString(knots[i]) +


":\t Поправка: " +
AnsiString(errors[i])+"\t Значение: "+(approxim_correct[i]));


}>Lines->Add("-------------------------------------------------------------------");


//---------------------------------------------------------------------------__fastcall
TForm1::SolutionClick(TObject *Sender)


//---------------------------------------------------------------------------__fastcall
TForm1::AppFuncClick(TObject *Sender)


//---------------------------------------------------------------------------__fastcall
TForm1::MistakeClick(TObject *Sender)


//---------------------------------------------------------------------------ApproxFunc(double
x)


//Значение аппроксимирующей функции в точке x


return
(Parab[0]*pow(x,2.0)+Parab[1]*x+Parab[2]);


//---------------------------------------------------------------------------My(double
x, double y)


//значение правой части диф. уравнения в точке (x,y)


//---------------------------------------------------------------------------__fastcall
TForm1::FormShow(TObject *Sender)


Form2->Width=420;
//Устанавливаем размеры формы для вывода графиков


Form2->Height=Height;->Show();
//Отображаем форму->Left=20+Left+Width;->Top=Top;(Sender); //Выводим
сетку


//---------------------------------------------------------------------------__fastcall
TForm1::Timer1Timer(TObject *Sender)


//Если положение главного окна изменилось, тянем
вслед за ним окно графиков


Form2->Left=20+Left+Width;->Top=Top;



//---------------------------------------------------------------------------__fastcall
TForm1::DrawClick(TObject *Sender)


//Чертим
графикi;kx=(double)Form2->Width/n; //коэффициенты сжатия по
осямky=(double)Form2->Height/n;->Canvas->MoveTo(x_c,y_c);
//Вычерчивание координатных
осей->Canvas->LineTo(Width,y_c);->Canvas->MoveTo(x_c,y_c);->Canvas->LineTo(x_c,0);


//Вычерчивание сетки серым
цветом->Canvas->Pen->Color=clDkGray;(i=0; iCanvas->MoveTo(x_c+i*kx,Height-35);->Canvas->LineTo(x_c+i*kx,0);->Canvas->TextOutA(x_c+i*kx-5,Height-35,AnsiString(x0+i*h));


{->Canvas->MoveTo(x_c-5,y_c-i*ky);->Canvas->LineTo(Width,y_c-i*ky);


/*if ((i%4)==0)
*/Form2->Canvas->TextOutA(x_c-30,-5+y_c-i*ky,AnsiString(i/4.0));


switch (g_type)
//В зависимости от выбранного графика, чертим график


Form2->Canvas->Pen->Color=clRed;
//Красным цветом


{->Canvas->MoveTo(x_c+i*kx,y_c-solutions[i]*ky*4.0);->Canvas->LineTo(x_c+(i+1)*kx,y_c-solutions[i+1]*ky*4.0);


caseAPR:
//График аппроксимирующей функции


Form2->Canvas->Pen->Color=clRed;
//Красным цветом(i=0; iCanvas->MoveTo(x_c+i*kx,y_c-approxim[i]*ky*4.0);->Canvas->LineTo(x_c+(i+1)*kx,y_c-approxim[i+1]*ky*4.0);


{->Canvas->Pen->Color=clNavy;
//График аппроксимации синим(i=0; iCanvas->MoveTo(x_c+i*kx,y_c-approxim[i]*ky*4.0);->Canvas->LineTo(x_c+(i+1)*kx,y_c-approxim[i+1]*ky*4.0);


//График аппроксимации с учётом погрешности
разовым


Form2->Canvas->Pen->Color=clFuchsia;(i=0;
iCanvas->MoveTo(x_c+i*kx,y_c-approxim_correct[i]*ky*4.0);->Canvas->LineTo(x_c+(i+1)*kx,y_c-approxim_correct[i+1]*ky*4.0);


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




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


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


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


classTForm2
: publicTForm //Определение
класса формы для вывода графика


__published:                                                         //
IDE-managed Components:      // User declarations:                                                                 //
User declarations


__fastcall TForm2(TComponent*
Owner);


//---------------------------------------------------------------------------PACKAGE
TForm2 *Form2;


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


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


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


__fastcall
TForm2::TForm2(TComponent* Owner)


Решение дифференциального уравнения на
промежутке [x0;xk]
при начальном условии y0
методом Рунге-Кутта 4 порядка











































Решение дифференциального уравнения на
промежутке [x0;xk]
при начальном условии y0
методом Рунге-Кутта 4 порядка с полушагом















































Вычисление погрешностей аппроксимации методом
Рунге-Ромберга






































Похожие работы на - Разработка программы на языке C++ Курсовая работа (т). Информационное обеспечение, программирование.
Дипломная работа по теме Институт опеки и попечительства
Дипломная работа по теме Управление социальными инновациями
Как Сделать Литературу В Курсовой Работе
Хранение И Передача Точного Времени Астрономия Реферат
Огэ По Русскому Сочинение Рассуждение
Сочинение Маша И Гринев
Реферат по теме Сущность, закономерность постсоциалистической трансформации России
Отчет По Преддипломной Практике Финансы И Кредит
Реферат по теме Система инновационного управления фирмой
Сочинение 9.3 По Васильеву
Эссе Диссертация
Контрольная работа: Экономический анализ предприятия
Реферат по теме Общее понятие о системах искусственного интеллекта
Реферат по теме Бизнес-план разработки
Курсовая Работа На Тему Принципи Організації Та Планування Виробництва
Курсовая работа по теме Тлумачення правових норм
Оздоровительный Бег И Ходьба Реферат По Физкультуре
Эссе По Теме Современная Социальная Политика России
Сочинение На Тему Природа В Изображении Тютчева
Сочинение по теме Инфернальные акценты российской прозы
Реферат: Криминалистическая фотография
Реферат: Місце і роль права в системі соціальних норм
Реферат: Функціоналізм: заключна форма

Report Page