Смекни!
smekni.com

Создание анимационно-обучающей программы по физике (стр. 8 из 9)

Рис. 2.

Электрическая схема калориметра представлена на рис. 3.

Нагревание обмотки 4 производится от сети переменного тока 2. Напряжение нагревателя регулируется лабораторным автотрансформатором. Измерения амперметром 3 и вольтметром 1. Термометр сопротивления 5 включен в мост постоянного тока 6. Методика измерения сопротивления с помощью моста постоянного тока дана в приложении.

Рис 3.

Если нагрет на ∆Т градусов калориметр с помещенным в него исследуемым телом, то энергия электрического тока пойдет на нагревание исследуемого тела и калориметра

IUt1 = mkck ∆Т + mTcT ∆Т+d. (6)

Здесь I и U – ток и напряжение на нагревателе, t1 - время нагревания, mk и mT - массы калориметра и нагреваемого тела, ck и сT – удельные теплоемкости калориметра и нагреваемого тела, d - потери тепла.

Для того чтобы вычислить и исключить из уравнения (6) тепло, идущее на нагрев калориметра, и потери тепла в окружающее пространство, можно нагреть пустой калориметр на те же ∆Т градусов. Потери тепла в обоих случаях будут одинаковыми, так как они зависят только от разности температур ∆Т но этот процесс потребует меньшего времени нагревания t2 :

IUt2 = mkck∆Т + d. (7)


Из равенства (6) и (7) следует


где ∆Т = t1 - t2. Величину можно определить по графикам зависимости ∆Т от t для пустого калориметра и калориметра с исследуемым телом (рис. 73). Температура нагрева измеряется в данной установке при помощи термометра сопротивления, т. е. металлической проволоки.


t2t1

Рис. 4

Сопротивление металла изменяется температурой по закону

R = R0 (1 + at)?, (9)


где R0 – сопротивление при температуре t, a - температурный коэффициент сопротивления, tкоторый в узком диапазоне температуру можно считать постоянным.

Измерив температуру воздуха в комнате tn по ртутному термометру и сопротивление RB измерительной обмотки при помощи моста постоянного тока, можно из формулы (9) рассчитать R0:


где a - температурный коэффициент сопротивления меди.

Приведенная формула (9) позволяет также по известному сопротивлению R0 обмотки термометра сопротивления и измеренному приращению сопротивления DR = R – RB подсчитать DT:

DT = Dt = DR / (aR0) (11).


3.2 Блок – схема программы


Блок-схема подпрограммы opis()


Блок-схема подпрограммы teoria()



Блок схема подпрограммы Telo()



3.3 Листинг программа

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <dos.h>

#include <ctype.h>

#include "steps.h"

int main(void)

{

int gdriver = DETECT, gmode, errorcode,i;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{ printf("Graphics error: %s&bsol;n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch(); exit(1); }

menu:

cleardevice();

setbkcolor(BLACK);

settextjustify(LEFT_TEXT, LEFT_TEXT);

settextstyle(DEFAULT_FONT, HORIZ_DIR, 1);

setfillstyle(SOLID_FILL,15);

setcolor(WHITE);

rectangle(0,0,getmaxx(),getmaxy());

setcolor(RED);

outtextxy(20,64,"-, + - перемещение, Enter - Выбор");

settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);

settextjustify(0, 1);

setcolor(BLUE);

outtextxy(10,12,"");

outtextxy(180,30,"*** M E НЮ***");

outtextxy(10,45,"‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑");

setcolor(RED);

outtextxy(30,100,"1.Теория и выполнение работы");

outtextxy(30,150,"2.Описание установок");

outtextxy(30,200,"3.Практика");

outtextxy(30,250,"4.Выход");

int y=80,y1=120;

char x;

setcolor(14);

rectangle(15,y,620,y1);

m1:

x=getch();

switch (toascii(x))

{

case 43: if (y==230)

{

setcolor(BLACK);

rectangle(15,y,620,y1);

y=80; y1=120;

setcolor(14);

rectangle(15,y,620,y1);

goto m1;

}

setcolor(BLACK);

rectangle(15,y,620,y1);

y=y+50;

y1=y1+50;

setcolor(14);

rectangle(15,y,620,y1);

goto m1;

case 45: if (y==80)

{

setcolor(BLACK);

rectangle(15,y,620,y1);

y=230;

y1=270;

setcolor(14);

rectangle(15,y,620,y1);

goto m1;

}

setcolor(BLACK);

rectangle(15,y,620,y1);

y=y-50;

y1=y1-50;

setcolor(14);

rectangle(15,y,620,y1);

goto m1;

case 13: for (i=0;i<1;i++)

{

setcolor(BLUE);

rectangle(15,y,620,y1);

sound(100);

delay(100);

setcolor(14);

rectangle(15,y,620,y1);

sound(200);

delay(100);

}

nosound();

switch(y)

{ case 80: teoria();

goto menu;

case 130: opis();

goto menu;

case 180: telo();

goto menu;

case 230: goto door;

}

goto m1;

default:

goto m1;

}

door:

closegraph();

return 0;

}

ФайлSteps.h

void step1()

{

setcolor(15);

int a10[10]={395,372, 403,378, 548,194, 540,188, 395,372};

drawpoly(5,a10);

int a11[8]={404,361, 382,345, 509,183, 531,199};

drawpoly(4,a11);

setfillstyle(9,7);

floodfill(383,345,15);

setfillstyle(2,9);

floodfill(396,372,15);

}

void step2()

{

setcolor(15);

int a11[10]={395,370, 405,375, 480,165, 470,160,395,370};

drawpoly(5,a11);

int a10[8]={400,355, 375,345, 440,165, 465,175};

drawpoly(4,a10);

setfillstyle(9,7);

floodfill(383,345,15);

setfillstyle(2,9);

floodfill(396,369,15);

}

void step3()

{

setcolor(15);

setfillstyle(9,7);

rectangle(366,355,395,165);

floodfill(370,340,15);

setfillstyle(2,9);

rectangle(395,148,405,372);

floodfill(396,150,15);

}

void step11()

{

setcolor(GREEN);

setfillstyle(SOLID_FILL,GREEN);

int a10[10]={395,372, 403,378, 548,194, 540,188, 395,372};

fillpoly(5,a10);

int a11[8]={404,361, 382,345, 509,183, 531,199};

fillpoly(4,a11);

}

void step22()

{

setcolor(GREEN);

setfillstyle(SOLID_FILL,GREEN);

int a11[10]={395,370, 405,375, 480,165, 470,160,395,370};

fillpoly(5,a11);

int a10[8]={400,355, 375,345, 440,165, 465,175};

fillpoly(4,a10);

}

void step33()

{

setcolor(GREEN);

setfillstyle(SOLID_FILL,GREEN);

bar3d(366,355,395,165,0,0);

bar3d(395,148,405,372,0,0);

}

void voice()

{ sound(25);

delay(4);

nosound(); }

void teoria()

{

int x,i;

cleardevice();

FILE *file1;

char s, s1=' ';

if ((file1=fopen("tr.txt","r"))==NULL)

{ perror("Не могу открыть файл! &bsol;n");

exit(1); }

while (!kbhit())

{ s=fgetc(file1);

if (s==EOF) break;

if (s=='&bsol;n' && s1=='&bsol;n') delay(1500);

printf("%c", s);

voice(); delay(10); s1=s; }

fclose(file1);

getch();

}

void telo(void)

{

int i,j,I,U,M,t,T;

setbkcolor(GREEN);

cleardevice();

settextjustify(LEFT_TEXT, LEFT_TEXT);

settextstyle(DEFAULT_FONT, HORIZ_DIR, 1);

setcolor(15); setfillstyle(SOLID_FILL,15);

printf(" ВХОДНЫЕДАННЫЕ");

printf("&bsol;n Силатока(1-3): ");

scanf("%d",&I);

printf(" Напряжение(110-220): ");

scanf("%d",&U);

printf(" Масса(100-300): ");

scanf("%d",&M);

printf(" Время нагревания(1-3): ");

scanf("%d",&t);

printf(" Начальная температура(15-25): ");

scanf("%d",&T);

//VINT

bar3d(85,254,185,266,0,0); bar3d(67,237,85,283,0,0);

int a1[10]={376,215, 185,239, 185,281, 376,305, 376,215};

fillpoly(5,a1);

//kryuchok

arc(381,260,270,180,5);

arc(381,260,270,180,4);

//Blok

int a2[14]={95,140, 395,140, 395,148, 103,148, 103,245, 95,245, 95,140};

drawpoly(7,a2);

int a3[12]={365,148, 365,172, 127,172, 127,250, 103,250, 103,245};

drawpoly(6,a3);

line(365,172,365,180);

line(365,180,127,180);

int a4[14]={95,380, 395,380, 395,372, 103,372, 103,275, 95,275, 95,380};

drawpoly(7,a4);

int a5[12]={365,372, 365,348, 127,348, 127,270, 103,270, 103,275};

drawpoly(6,a5);

line(365,348,365,340); line(365,340,127,340);

setfillstyle(5,9);

floodfill(97,142,15); floodfill(100,372,15);

setfillstyle(9,7);

floodfill(105,162,15); floodfill(125,300,15);

setfillstyle(4,3);

floodfill(355,178,15); floodfill(360,342,15);

//Vnut blok

int a6[12]={348,188, 348,215, 157,239, 157,254, 127,254, 127,250};

drawpoly(6,a6);

int a7[12]={348,332, 348,305, 157,281, 157,266, 127,266, 127,270};

drawpoly(6,a7);

int a8[68]={127,188, 140,188, 140,195, 153,195, 153,188, 166,188, 166,203, 179,203, 179,188, 192,188, 192,195, 205,195, 205,188, 218,188, 218,203, 231,203, 231,188, 244,188, 244,195, 257,195, 257,188, 270,188, 270,203, 283,203, 283,188, 296,188, 296,195, 309,195, 309,188, 322,188, 322,203, 335,203, 335,188, 348,188};

drawpoly(34,a8);

setfillstyle(6,8);

floodfill(130,190,15);

int a9[68]={127,332, 140,332, 140,317, 153,317, 153,332, 166,332, 166,325, 179,325, 179,332, 192,332, 192,317, 205,317, 205,332, 218,332, 218,325, 231,325, 231,332, 244,332, 244,317, 257,317, 257,332, 270,332, 270,325, 283,325, 283,332, 296,332, 296,317, 309,317, 309,332, 322,332, 322,325, 335,325, 335,332, 348,332};

drawpoly(34,a9);

setfillstyle(6,8);

floodfill(130,330,15);

//spiral

setcolor(BLUE);

for(i=146,j=173;i<=310;i=i+52,j=j+52)

{ circle(i,191,3);

circle(j,329,3); }

for(i=172,j=146;i<=340;i=i+52,j=j+52)

{ circle(i,199,3);

circle(j,321,3);}

//krishka

step1();

//move

int k;

for(k=0;k<19;)

{

setcolor(GREEN);

setfillstyle(SOLID_FILL,15);

bar3d(85-k,254,185-k,266,0,0); bar3d(67-k,237,85-k,283,0,0);

a1[0]=376-k; a1[2]=185-k; a1[4]=185-k; a1[6]=376-k; a1[8]=376-k;

fillpoly(5,a1);

arc(381-k,260,270-k,180,5); arc(381-k,260,270-k,180,4);

k++;

setcolor(15);

bar3d(85-k,254,185-k,266,0,0); bar3d(67-k,237,85-k,283,0,0);

arc(381-k,260,270-k,180,5); arc(381-k,260,270-k,180,4);

a1[0]=376-k; a1[2]=185-k; a1[4]=185-k; a1[6]=376-k; a1[8]=376-k;

fillpoly(5,a1);

delay(100);

}

delay(1000);

step11();

step2();

delay(1000);

step22();

step3();

delay(2000);

setcolor(YELLOW);

for(i=146,j=173;i<=310;i=i+52,j=j+52)

{ circle(i,191,3);

circle(j,329,3); }

for(i=172,j=146;i<=340;i=i+52,j=j+52)

{ circle(i,199,3);

circle(j,321,3);}

delay(2000);

setcolor(RED);

for(i=146,j=173;i<=310;i=i+52,j=j+52)

{ circle(i,191,3);

circle(j,329,3); }

for(i=172,j=146;i<=340;i=i+52,j=j+52)

{ circle(i,199,3);

circle(j,321,3);}

delay(2000);

setcolor(LIGHTRED);

for(i=146,j=173;i<=310;i=i+52,j=j+52)

{ circle(i,191,3);

circle(j,329,3); }

for(i=172,j=146;i<=340;i=i+52,j=j+52)

{ circle(i,199,3);

circle(j,321,3);}

delay(2000);

step33();

step2();

delay(1000);

step22();

step1();

for(k=25;k>0;)

{

setcolor(GREEN);

setfillstyle(SOLID_FILL,15);

bar3d(85-k,254,185-k,266,0,0); bar3d(67-k,237,85-k,283,0,0);

a1[0]=376-k; a1[2]=185-k; a1[4]=185-k; a1[6]=376-k; a1[8]=376-k;

fillpoly(5,a1);

arc(381-k,260,270-k,180,5); arc(381-k,260,270-k,180,4);

k--;

setcolor(15);

bar3d(85-k,254,185-k,266,0,0); bar3d(67-k,237,85-k,283,0,0);

arc(381-k,260,270-k,180,5); arc(381-k,260,270-k,180,4);

a1[0]=376-k; a1[2]=185-k; a1[4]=185-k; a1[6]=376-k; a1[8]=376-k;

fillpoly(5,a1);

delay(100);

}

for(i=1;i<25;i++) printf("&bsol;n");

printf(" ВЫХОДНЫЕ ДАННЫЕ");

printf("&bsol;n Сила тока: %d",I);

printf("&bsol;n Напряжение: %d",U);

printf("&bsol;n Масса: %d",M);