FPMeny1[h].setwidth(100);
FPMeny1[0].setpos(227,57,"По Лагранжу");
FPMeny1[1].setpos(227,57+19,"По Ньютону");
for (h=0;h<PMeny2;h++)
FPMeny2[h].setwidth(100);
FPMeny2[0].setpos(227,57+19,"По Лагранжу");
FPMeny2[1].setpos(227,57+19+19,"По Ньютону");
}
///////////////////////////////////////////////////////////////////////
void DoSome(int i)
{
switch (i)
{
case 0:
closegraph();exit(1);
break;
case 1:
DrowMenyAll(FMeny1,Meny1,0);
BoolMeny1=1;
break;
case 2:
DrowMenyAll(FMeny2,Meny2,0);
BoolMeny2=1;
break;
case 3:DrowMenyAll(FMeny3,Meny3,0);
BoolMeny3=1;break;
case 4: closegraph();exit(0); break;
///////////////////////
case 20:messageaboutavt();break;
case 21:messageabout();;break;
case 22:;break;
case 23:;break;
////////////////////////
///////////////////////
case 30:;break;
case 31:break;
case 32:;break;
case 33:;break;
case 34:windows(3,50,630,406,7,"",1);break;
case 40:
/* int dy=30,dx=20;
for (int i=0;i<110;i++)
{
putpixel(i+dx,dy*IntLang(i)+120,4);
putpixel(i+dx,dy*IntNuton1(i)+120,2);
putpixel(i+dx,dy*IntNuton2(i)+120,1);
if ((i%20)==0)
{
setcolor(4);
circle(i+dx,dy*IntLang(i)+120,2);
setcolor(2);
circle(i+dx,dy*IntNuton1(i)+120,2);
setcolor(1);
circle(i+dx,dy*IntNuton2(i)+120,2);
}
}
*/
edit1[0].setpos(200,200,"Введiть файл","");
EditEnter(edit1,FEdit1);
if (exittru==27) break;
if ((in = fopen(edit1[0].gettext(), "wt")) == NULL)
{
fprintf(stderr, "Cannot open input file.\n");
break;
}
fprintf(in,"Результати роботи\n");
if (Tt!=-1000)
{
fprintf(in," Iнтерполяцiя по Лагранжу\n");
fprintf(in,"T=%10.5f\n",Tt);
fprintf(in,"Q=%10.5f\n",FLTt);
E=fabs(FLTt/6006);
fprintf(in,"e=%10.5f\n",E);
}
if (Ttn!=-1000)
{
fprintf(in," Iнтерполяцiя по Ньютону\n");
fprintf(in,"T=%10.5f\n",Ttn);
fprintf(in,"Q=%10.5f\n",FNTt1);
E=fabs(FNTt1-IntLang(Ttn));
fprintf(in,"e=%10.5f\n",E);
}
fclose(in);
break;
case 41:
windows(3,50,630,406,7,"",1);
setcolor(4);
mouseoff();
outtextxy(240,80,"Результати роботи");
if (Tt!=-1000)
{
setcolor(1);
outtextxy(50,150," Iнтерполяцiя по Лагранжу");
sprintf(sd,"T=%10.5f",Tt);
outtextxy(40,170,sd);
sprintf(sd,"Q=%10.5f",FLTt);
outtextxy(40,190,sd);
E=fabs(FLTt/6006);
sprintf(sd,"e=%10.5f",E);
outtextxy(40,210,sd);
}
if (Ttn!=-1000)
{
setcolor(1);
outtextxy(50,250," Iнтерполяцiя по Ньютону");
sprintf(sd,"T=%10.5f",Ttn);
outtextxy(40,270,sd);
sprintf(sd,"Q=%10.5f",FNTt1);
outtextxy(40,290,sd);
E=fabs(FNTt1-IntLang(Ttn));
sprintf(sd,"e=%10.5f",E);
outtextxy(40,310,sd);
}
mouseon();
break;
case 42:
fprintf(stdprn,"Rezult\r\n");
if (Tt!=-1000)
{
fprintf(stdprn," Interpol LAGRANG\r\n");
fprintf(stdprn,"T=%10.5f\r\n",Tt);
fprintf(stdprn,"Q=%10.5f\r\n",FLTt);
E=fabs(FLTt/6006);
fprintf(stdprn,"e=%10.5f\r\n",E);
}
if (Ttn!=-1000)
{
fprintf(stdprn," Interpol NUTON\r\n");
fprintf(stdprn,"T=%10.5f\r\n",Ttn);
fprintf(stdprn,"Q=%10.5f\r\n",FNTt1);
E=fabs(FNTt1-IntLang(Ttn));
fprintf(stdprn,"e=%10.5f\r\n",E);
}
fprintf(stdprn, "\f");
break;
case 100:;
case 110:
edit1[0].setpos(200,200,"Введiть t (по Лагр.)","");
EditEnter(edit1,FEdit1);
if (exittru==27) break;
Tt=atof(edit1[0].gettext());
FLTt=IntLang(Tt);
//printf("\n f(%f)= %10.10f %10.10f %10.10f ",Tt,FLTt,FNTt1,FNTt2);
break;
case 101:;
case 111:
edit1[0].setpos(200,200,"Введiть t (по Ньютону)","");
EditEnter(edit1,FEdit1);
if (exittru==27) break;
Ttn=atof(edit1[0].gettext());
//FLTt=IntLang(Ttn);
if (Ttn<50)
FNTt1=IntNuton1(Ttn);
else
FNTt1=IntNuton2(Ttn);
//printf("\n f(%f)= %10.10f %10.10f %10.10f ",Tt,FLTt,FNTt1,FNTt2);
break;
///////////////////////
}
}
4 Розробка тестів та аналіз результату тестування
Для впевненості роботи програми проведемо її тестування. Але тестування необхідно виконувати в два основних етапи: тестування головної програми, тобто достовірність роботи головного меню програми, та власне і роботи самих пунктів меню, правильність роботи самих методів.
4.1 Опис тестів
При запуску програми (ехе-файл чи з середовища Туро Сі) з'являється головне меню програми (рисунок 4.2.1). Вибір необхідного пункту меню можна здійснювати за допомогою миші, вибраний пункт зразу ж підсвічується. Для його виконання достатньо нажати клавішу „Enter” чи клацнути два рази лівою клавішею мишки.
Тест 1: вихід з програми.
Активуємо пункт меню „Вихід”, за допомогою якого можна вийти з програми при натисненні кнопки миші.
Тест 2: тестування по Лагранжу.
Активуємо пункт меню „Тестування ” - „Тест 1 ” –“По Лагранжу”. З’являється вікно в якому вводимо значення температури для певного тестування.
Тест 3: тестування по Ньютону.
Активуємо пункт меню „Тестування” - „Тест 2 ”-–“По Ньютону”. З’являється вікно в якому вводимо значення температури для певного тестування.
Тест 4: запис результатів тестування в файл.
Для цього потрібно активувати пункт меню “Результати”-“В файл”. З’являється діалогове вікно в якому потрібно вказати назву файлу, в який безпосередньо буде виконуватись запис результатів тестування за відповідним методом.
Тест 5: вивід результатів тестування на екран.
Для цього потрібно активувати пункт меню “Результати”-“На екран”. На екрані зразу ж з’являються результати тестування за певним методом або обидва результати одночасно.
Тест 6: вивід результатів тестування на друк.
Це зробимо за допомогою кнопки меню “Результати”-“На друк”.Результати тестування виведуться на друк лише в тому випадку, якщо налаштований принтер.
Тест 7: отримання інформації про автора.
Активуємо пункт меню „Довідка”-„Про автора”. Активується діалогове вікно в якому описані короткі відомості про автора.
Тест 8: отримання інформації про програму.
Активуємо пункт меню „Довідка”-„Про програму”. Активується діалогове вікно в якому з’являється назва курсової роботи.
4.2 Аналіз результатів тестування
Рисунок 4.2.1. Головне меню програми
Тест 1. Відкрили пункт меню „Вихід” - „Вихід[Alt+X]” та вийшли з програми.
Тест 2. Активували пункт меню „Тестування ” - „Тест 1 ” –“По Лагранжу”. Вводимо по черзі в діалоговому вікні чисельне значення температури Т=270,320,550,750,670С.
Тест 3. Активували пункт меню „Тестування” - „Тест 2 ”-–“По Ньютону”
Вводимо по черзі в діалоговому вікні чисельне значення температури Т=270,320,550,750,670С.
Рисунок 4.2.3. Результати проведення тесту № 3
Тест 4. Нехай потрібно записати результати тестування в файл „Інтерполяція”. Внесемо дану інформацію в діалогове вікно, яке зявиться на екрані.
Рисунок 4.2.4.Результати проведення тесту №4
Тест 5. Користувача цікавить вивід результатів тестування на екран.
Рисунок 4.2.5.Результати проведення тесту № 5
Рисунок 4.2.6. Результати проведення тесту № 6
Рисунок 4.2.7.Результати проведення тесту №7
Рисунок 4.2.8. Результати проведення тесту №8
Якщо зробити загальний висновок з проведеного аналізу тестування програмного продукту, то можна з впевненістю сказати про те, що проведена робота є не просто практичною реалізацією поставленого перед розробником завдання, а саме програмою, яка готова вирішувати реальні задачі.
До переваг даної програми можна віднести:
- зручний інтерфейс, який за своєю простотою приховує можливість вирішувати різноманітні завдання різного ступеня складності;
- добре відлагоджений процес вирахування напруги матеріалу провідника за вказаною температурою, дає можливість вірно застосовувати провідники в певних приладах тощо.
Значною перевагою програми є те, що є можливість виводу на друк звітів про здійснене тестування матеріалів, що покращує конкурентоспроможність програмного продукту.
5 Оцінка похибок результатів експериментальних досліджень
Для аналізу похибок необхідно знати точне та наближене значення. Для функції тестування провести аналіз похибки набагато простіше, адже точне значення знаходиться дуже легко.
Похибка при інтерполяції за Лагранжем може бути оцінена таким чином:
(5.1)де
.Похибка інтерполяції для першої формули Ньютона можна оцінити відповідно як:
(5.2)де
(5.3)Похибка інтерполяції для другої формули Ньютона можна оцінити відповідно як:
(5.4)де
(1.23)6 Оцінка ефективності комплексу програм для дослідження
Комплекс програм дослідження зміни температури термопари розроблено в середовищі TurboC.
Ефективність програми це багатокритеріальна оцінка, яка формується як на основі об’єктивних так і суб’єктивних оцінок її роботи користувачем. Але основними є:
- швидкодія;
- об’єм програмного коду;
- взаємодія з іншими прикладними програмами та операційними системами.
Дана програма є ефективним варіантом розробки поставленої у курсовій роботі задачі завдяки тому, що були використані основи структурного програмування: