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


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


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

Блок-схема: решение: S=/n/
And s1=/n/




Блок схема подпрограммы 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\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("Не могу открыть файл! \n");

 exit(1); }

 while (!kbhit())

 { s=fgetc(file1);

if (s==EOF) break;

if (s=='\n' && s1=='\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("\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("\n");

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

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

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

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

 printf("\n Время нагревания: %d min",t);

 printf("\n Начальная температура: %d C",T);

 printf("\n Конечная температура: %d C",T+t*9);

 printf("\n Удельная теплоемкость: %d",((T+t*9)-T)*2);

 getch();

}

void opis(void)

{

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

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

 cleardevice();

 settextjustify(LEFT_TEXT, LEFT_TEXT);

 settextstyle(DEFAULT_FONT, HORIZ_DIR, 1);

 setbkcolor(GREEN);

//VINT

 rectangle(85,254,185,266);

 rectangle(67,237,85,283);

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

 drawpoly(5,a1);

 line(70,250,50,250);

 outtextxy(10,250,"Винт");

 //kryuchok

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

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

 line(381,260,420,160);

 outtextxy(420,160,"Кручок");

//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);

 line(300,100,300,145);

 outtextxy(300,100,"Кожух");

 line(280,120,280,155);

 outtextxy(280,120,"Пенопласта");

 line(250,80,250,175);

 outtextxy(250,80,"Асбест");

//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(4);

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

 { circle(i,191,3);

 circle(j,329,3); }

// setcolor(4);

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

 { circle(i,199,3);

 circle(j,321,3);}

 setcolor(15);

 line(146,192,146,100);

 outtextxy(146,100,"Спираль");

 line(136,200,136,80);

 outtextxy(136,80,"Корпус");

 line(170,250,170,450);

 outtextxy(170,450,"Отверстье");

 line(370,250,370,450);

 outtextxy(370,450,"Испытуемое тело");

//krishka

 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);

 line(470,250,470,400);

 outtextxy(470,400,"Крышка");

 getch(); getch();

}


3.4 Описание работы программы

Рис. 1. Главное меню программы.

На первом рисунке показано меню программы. С помощью клавиш “-” и “+” пользователь может передвигаться по пунктам меню и с помощью клавиши “Enter” выбрать необходимый пункт. При этом управление передается соответствующей подпрограмме которая выполняет функции соответствующие выбранному меню.

Рис. 2. Вид раздела “Теория и выполнение работы”

После выбора первого раздела меню “Теория и выполнение работы”, управление передается соответствующей подпрограмме которая показывает внешний вид установки. Результат работы показан на рис.2.


Рис. 3. Вид окна ввода параметров опыта.

При выборе пункта меню “Практика” управление передается подпрограмме выполняющей эмуляцию работы установки. Сначала с пользователем осуществляется диалог, в ходе которого он вводит параметры предстоящего опыта, см. рис.3.

Рис. 4. Визуализация опыта.

После ввода пользователем параметров опыта, эти данные передаются подпрограмме визуализирующей процесс протекания опыта. Результат работы подпрограммы представлен на рис.4.


Рис. 5. Визуализация процесса протекания опыта.

Первый шаг визуализации это закрытие крышки калориметра, что показывается ни рис.5.

Рис. 6. Визуализация подачи напряжения на катушку.

Следующим шагом протекания опыта является подача тока на катушку и нагревания следствии этого спирали которая нагревает заготовку.


Рис. 7. Визуализация окончания опыта- открытие крышки калориметра.

Следующим шагом опыта является выключение подачи тока к спирали вследствие чего спираль перестает нагревать болванку и затем открывается крышка калориметра для извлечения болванки из него (см.рис.7.).

Рис. 8. Извлечение болванки из калориметра.

Завершение опыта – извлечение болванки из калориметра и выдача результата опыта (см. Рис. 8.).


Рис. 9. Результат выбора пункта «Теория».

В результате выбора пункта меню «Теория» пользователю выводится текстовая информация описывающая установку и сам опыт как показано на рис.9.


Заключение

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

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


Список используемой литературы

1.  Ливенцев Н.М. Практикум по физике для медицинских вузов. Москва 1972г.

2.  М.М. Архангельский. Курс физики. Механика. Москва. 1975г.

3.  А.К. Кикоин. Молекулярная физика. Наука. 1976г.

4.  А.Ф. Шевченко, Е.А. Безденежных. Физика. 1978г.

5.  А.Н. Ремизов. Медицинская и биологическая физика.1987г.

6.  М.А. Эссаулова и др. Руководство к лабораторным работам.

7.  А.Н. Ремизов. Сборник задач по медицинской и биологической физике. 1987г.

8.  О.Ф. Владимиров, Д.М. Ращупкин и др. Биофизика.

9.  А.Н. Матвеев. Молекулярная физика. Высшая школа. Москва. 1981г.

10.   А.Ф. Шевченко, Е.А. Безденежных. Физика.1978г.

11.  Д.В. Сивухин. Общий курс физики. Том 2. Термодинамика и молекулярная физика. Наука. 1975г.

12.   Г.С. Ландсберга. Элементарный учебник физики. Том 1. Москва. 1973г.


Информация о работе «Создание анимационно-обучающей программы по физике»
Раздел: Физика
Количество знаков с пробелами: 80867
Количество таблиц: 3
Количество изображений: 20

Похожие работы

Скачать
102471
0
17

... следует курсор установит на отметку “Exit” и нажат клавишу <Enter>. 14. Для повторения работы необходимо выполнить последовательно пункты с 4-го по 13-й. §2.3 Текст анимационно-обучающей программы механической системы Program Water_Program; Uses Crt, Graph; Const { Vvod Unit Graphics } FunWeb='c:tpBgi'; Var Gd,Gm,I,X,Y,X1,Y1,XX,YY,Rad,J:Integer; Z,J1,J2,W,V,G:Integer; ...

Скачать
235892
25
6

... работе в графическом режиме предназ­начается для обучения студентов младших курсов Санкт-Петербургской государственной Академии аэрокосмического приборостроения навыкам программирования, а именно работе в графическом режиме языка Turbo-Pascal . Для работы с настоящей программой необходимо знание стандарта языка, интегрированной среды и элементарным навыкам работы с персональным компьютером . ...

Скачать
107365
2
8

... мы все сделали правильно, воспроизведем курс с начала, щелкнув кнопку Restart на панели управления. Создание кадров «Автор» и «Уч. пособ» идентично созданию кадра «Заголовок». Первый отображает фамилию и инициалы автора, а второй указывает, что это – электронный обучающий комплекс. Пятый и шестой кадр {Wait Icon и Erase Icon) весьма тесно связаны друг с другом. Эта пара обеспечивает управляемый ...

Скачать
146463
19
10

... с положительностью сальдо поступлений и расходов и малым сроком окупаемости. 6. Обеспечение безопасности жизнедеятельности в системе ДО В данном дипломном проекте разработана автоматизированная информационная система дистанционного обучения по дисциплине “Финансы и кредит”. Ее использование тесно связано с применением ПЭВМ, поэтому организация рабочего места пользователя системы должна ...

0 комментариев


Наверх