Смекни!
smekni.com

Розвязок інтеграла метоном Нютона Котеса та Сімсона (стр. 5 из 6)


Рисунок 7.7. Перегляд данних

Для виведення інфоромації про програму або автора вибираємо пункт “Про програму” або „Про автора” відповідно з меню допомоги „?”.

7.2.4 Вихід з програми

Для виходу з програми достатньо вибирати пункт “Вихід”, і натиснути клавішу <Enter>.


Висновки

В результаті виконання даної роботи було розроблено програму, яка задовольняє усім вимогам до курсової роботи - складається з основної програми та 1-го модуля (бібліотеки) користувача, працює в режимі меню.

Курсова робота складається з 7 розділів. В першому розділі було приведено основні відомості стосовно розробки програм, працюючих в режимі графічного інтерфейсу, особливості роботи з математичними функціями.

В другому розділі наведено математичну модель програми.

Третій розділ присвячений тестуванню програми, а також дослідженню об’єкта на ЕОМ.

В четвертому розділі проводиться аналіз результатів дослідження.

В п’ятому розділі проводиться аналіз похибок експериментальних досліджень.

В шостому розділі приводиться аналіз ефективності програми.

Сьомий розділ складає супроводжувальна документація, призначена для персоналу, який обслуговує дане програмне забезпечення.

Під час виконання курсової роботи я набула досвіду професіонального програмування. Я дійшла висновку, що мова програмування Турбо Сі безумовно може бути використана для написання подібних матиматичних систем, тому що вона має декілька зручних циклів, має багато математичних функцій, компілятор дає оптимізований код.


Додаток А

Міністерство освіти і науки України

Вінницький національний технічний університет

Інститут автоматики електроніки та комп’ютерних систем управління

Кафедра комп’ютерних систем управління

Узгоджено Розроблено

Керівник __________С.М. Москвіна

Студент_________ О.В.Левицька

”_____” __________2004р.

Технічне завдання

на виконання курсової роботи

” Дослідження еліптичного інтегралу на ЕОМ.”

При розробці даної роботи необхідно виконувати слідуючи етапи:

1.1 Найменування та галузь застосування об’єкта розробки: цей комплекс програм може бути застосований на будь-якому підприємстві для полегшення та покращення результатів роботи інженерів

1.2 Підстава для проведення роботи: дослід штучного інтелекту

1.3 Дата початку роботи:8.01.04.

1.4 Дата закінчення роботи: 10.04.04.

1.5 Мета призначення розробки: створити як найкращий комплекс програм для полегшення та покращення роботи інженера підприємства

1.6 Вимоги до надійності системи: використання структурного програмування, окреме підключення модулів, єдине меню, тощо – усе це забезпечує надійність системи. Програмне забезпечення та супроводжуюча текстова документація повинна задовільнити таким гостам:

ГОСТ 19.701-90 (МСО 5807-85) ГОСТ 19.101-77 (СТСЄВ 1626-7а)

ГОСТ 19.781-74 ГОСТ 7.1-84 ДСТУ 3008-85

ГОСТ 19.401-78 ГОСТ 19.106-78

1.7 Стадії та етапи розробки:

1 етап: розробка індивідуального та технічного завдання.(до 15.01.04)

2 етап: огляд та аналіз методів моделювання зміни температури термопари на ЕОМ (до 1.02.04).

3 етап: розробка алгоритмів моделювання зміни температури термопари на ЕОМ (до 20.02.04).

4 етап: розробка керуючої програми, яка повинна працювати в режимі багато ієрархічного меню (до 10.03.04).

5 етап: об’єднання всіх програмних модулів та тестування керуючої програми (до 15.03.04).

6 етап: розробка тестів, тестування та демонстрація роботи всього комплексу (до 15.03.04).

7 етап: розробка технічної документації та пояснювальної записки (до 20.03.04).

8 етап: вимоги до безпеки: розроблене програмне забезпечення повинно відповідати вимогам Сніп та ДЕСТів до робочого місця оператора ЕОМ.


Додаток Б

Лістинг головної програми

#include <stdio.h>

#include <conio.h>

#include <io.h>

#include <sys&bsol;stat.h>

#include <stdlib.h>

#include <math.h>

#include "cwindow.cpp"

void FrameW(int x1,int y1,int x2,int y2,int tb=3,int tk=15,int rk=15){

int ii;

textcolor(rk);

textbackground(tb);

//int x=wherex(),

// y=wherey();

gotoxy(x1,y1); cprintf("г");

for(ii=x1+1;ii<=x2-1;ii++)

cprintf("-");

cprintf("¬");

for(ii=y1+1;ii<=y2-1;ii++){

gotoxy(x1,ii);

cprintf("¦");

}

gotoxy(x1,y2); cprintf("L");

for(ii=x1+1;ii<=x2-1;ii++)

cprintf("-");

cprintf("-");

for(ii=y1+1;ii<=y2-1;ii++){

gotoxy(x2,ii);

cprintf("¦");

}

window(x1+1,y1+1,x2-1,y2-1);

clrscr();

textcolor(tk);

}

void cursor_off(){

union REGS r;

r.x.ax=0x100;

r.x.cx=0x2607;

int86(0x10,&r,&r);

}

void cursor_on(){

union REGS r;

r.x.ax=0x100;

r.x.cx=0x506;

int86(0x10,&r,&r);

}

void VievZavd(void){

window(1,1,79,24);

FrameW(4,7,35,11);

cprintf(" f ________________");

cprintf("&bsol;n&bsol;rF(k,f)=S v1-(k^2)*sin(Q)^2 dQ");

cprintf("&bsol;n&bsol;r 0");

}

class CD {

public:

float fip,fik,fit,kp,kk,kt,h,hi;

public:

CD(float,float,float,float,float);

void Change_fi(void); // интервал

void Change_k(void); // коефициенты

void Change_h(void); // шаг

void Viev(void); // вывод значений

};

CD::CD(float _fip,float _fik,float _kp,float _kk,float _h){

fip=_fip;

fik=_fik;

kp=_kp;

kk=_kk;

h=_h;

hi=0.1;

}

void CD::Change_fi(void){

window(1,1,80,25);

CWindows win1(24,9,56,16,"");

win1.ShowWindow();

cprintf("Змiна меж iнтегрування");

cprintf("&bsol;n&bsol;rВведiть новi межi fi");

cprintf("&bsol;n&bsol;r fi_поч=");

cursor_on();

scanf("%f",&(this->fip));

cprintf("&bsol;r fi_кiнц=");

scanf("%f",&(this->fik));

cursor_off();

Viev();

win1.HideWindow();

}

void CD::Change_k(void){

window(1,1,80,25);

CWindows win1(24,9,56,16,"");

win1.ShowWindow();

cprintf("Змiна меж коефiцiэнтiв");

cprintf("&bsol;n&bsol;rВведiть новi коефiцiэнти");

cursor_on();

cprintf("&bsol;n&bsol;rk_поч=");

scanf("%f",&(this->kp));

cprintf("&bsol;rk_кiнц=");

scanf("%f",&(this->kk));

cursor_off();

Viev();

win1.HideWindow();

}

void CD::Change_h(void){

window(1,1,80,25);

CWindows win1(24,9,56,16,"");

win1.ShowWindow();

cprintf(" Змiна кроку");

cprintf("&bsol;n&bsol;rВведiть новий крок");

cprintf("&bsol;n&bsol;rh=");

cursor_on();

scanf("%f",&(this->h));

cursor_off();

Viev();

win1.HideWindow();

}

void CD::Viev(void){ //

window(1,1,79,24);

FrameW(4,3,50,5);

cprintf("fip=%4.2f;fik=%4.2f;kp=%4.2f;kk=%4.2f;h=%5.4f",fip,fik,kp,kk,h);

}

void Ramky(void) //Ф-я для вивода рамки

{ //синего цвета на весь экран

window(1,1,80,25);

textbackground(15);

clrscr();

window(3,2,78,24);

textbackground(1);

clrscr();

for(int i=1;i<=1747;i++) cprintf("-");

window(1,1,80,25);

}

void PrintfStrMenu(char str[20]) //Вывод невыделеного пункта меню

{

text_info TextBegin; //начальные установки текста

gettextinfo(&TextBegin); //Получить начальные установки

textcolor(0);

textbackground(15);

cprintf("%s",str);

textattr(TextBegin.attribute);

}

void PrintfStrMenuP(char str[20]) //Вывод выделеного пунка меню

{

text_info TextBegin; //начальные установки текста

gettextinfo(&TextBegin); //Получить начальные установки

textcolor(0);

textbackground(2);

cprintf("%s",str);

textattr(TextBegin.attribute);

}

int menu() //Ф-я вывода главного меню

{ //возыращает номер выделеного пункта

int num=1; //Режим меню

char key=1; //Опрос клавиши

char numMin=1; //Мин. реж. меню

char numMax=5; //Макс. реж. меню

int PosMenuX=3, //Положение верхнего

PosMenuY=1, //левого угла меню

HightMenu=1, //Высота меню

WidthMenu=75; //Ширина меню

//*******************************************

window(PosMenuX,PosMenuY,PosMenuX+WidthMenu,PosMenuY+HightMenu-1);

cursor_off();

do{

gotoxy(1,1);

if (num==1){

PrintfStrMenuP(" ? ");

}

else{

PrintfStrMenu(" ? ");

}

if (num==2){

PrintfStrMenuP(" Дослiдження ");

}

else{

PrintfStrMenu(" Дослiдження ");

}

if (num==3){

PrintfStrMenuP(" Тестування ");

}

else{

PrintfStrMenu(" Тестування ");

}

if (num==4){

PrintfStrMenuP(" Змiна параметрiв ");

}

else{

PrintfStrMenu(" Змiна параметрiв ");

}

if (num==5){

PrintfStrMenuP(" Вихiд ");

}

else{

PrintfStrMenu(" Вихiд ");

}

if((key=getch())==0){ //если код расширеной клавиши,

switch(getch()){ // то щитываем очередной из буф. клавиатуры

case 72:;break; //клавиша вверх

case 75:--num;break;

case 77:++num;break;

case 80:key=13;break; //клавиша вниз

}

if(num<numMin) num=numMax; //если выбираем больше максимального,. то получаем минимальный

if(num>numMax) num=numMin; // <= а здесь наоборот

}

else{

if((key>=numMin+48)&&(key<=numMax+48))

num=key-48;

}

} while(!(key==13)); //выход, если нажат ентер

return num;

}

//************************* Выпадающие меню **************************

void PrintfStrMenu_x(char str[20]) //Вывод невыделеного пункта меню

{

text_info TextBegin; //начальные установки текста

gettextinfo(&TextBegin); //Получить начальные установки

textcolor(0);

textbackground(7);

cprintf("%s&bsol;n&bsol;r",str);

textattr(TextBegin.attribute);

}

void PrintfStrMenuP_x(char str[20]) //Вывод выделеного пунка меню

{

text_info TextBegin; //начальные установки текста

gettextinfo(&TextBegin); //Получить начальные установки

textcolor(0);

textbackground(6);

cprintf("%s&bsol;n&bsol;r",str);

textattr(TextBegin.attribute);

}

int menu_x(int _PosMenuX,int _PosMenuY,int _WidthMenu,int _HightMenu,char _numMax=1,char s1[]="123321",char s2[]="",char s3[]="",char s4[]="",char s5[]="") //Ф-я вывода главного меню

{ //возыращает номер выделеного пункта

int num=1; //Режим меню

char key=1; //Опрос клавиши

char numMin=1; //Мин. реж. меню

char numMax=_numMax; //Макс. реж. меню

int PosMenuX=_PosMenuX, //Положение верхнего

PosMenuY=_PosMenuY, //левого угла меню

HightMenu=_HightMenu, //Высота меню

WidthMenu=_WidthMenu; //Ширина меню

char *s[6];

s[1]=s1;

s[2]=s2;

s[3]=s3;

s[4]=s4;

s[5]=s5;

//*******************************************

cursor_off();

window(1,1,80,25);

CWindows win_1(PosMenuX,PosMenuY,PosMenuX+WidthMenu,PosMenuY+HightMenu);

win_1.ShowWindow();

do{

gotoxy(1,1);

for(int i=1;i<=numMax;i++){

if(i==num) PrintfStrMenuP_x(s[i]);

else PrintfStrMenu_x(s[i]);

}

if((key=getch())==0){ //если код расширеной клавиши,

switch(getch()){ // то щитываем очередной из буф. клавиатуры

case 72:--num;break; //клавиша вверх

case 75:{key=27;}break;

case 77:{key=27;}break;

case 80:++num;break; //клавиша вниз

}

if(num<numMin) num=numMax; //если выбираем больше максимального,. то получаем минимальный

if(num>numMax) num=numMin; // <= а здесь наоборот

}

else{

if((key>=numMin+48)&&(key<=numMax+48))

num=key-48;

}

} while(!((key==13)||(key==27))); //выход, если нажат ентер

win_1.HideWindow();

if(key==27) return 0;

return num;

}

void HelpAbout(char FileName[]) //ф-я вывода помощи из соответствующего файла

{

FILE *help_f;

window(1,1,80,25);

CWindows win1(4,5,77,20,"Допомога");

win1.ShowWindow();

if ((help_f=fopen(FileName,"r"))==NULL) //если неудается открыть, то выводим соответственно сообщение