48772

Система моделирующая движение молекул идеального газа в замкнутом пространстве

Курсовая

Информатика, кибернетика и программирование

Моделирование движения молекул газа. Выполнить моделирование поведения молекул в прямоугольном сосуде, разделенном подвижной вертикальной перегородкой с отверстием.

Русский

2013-12-15

111 KB

16 чел.

Аннотация.

           Объём курсовой работы составляет шестнадцать страниц страниц.  В этой работе содержится семь рисунков представляющих главным образом диаграмм и схемы алгоритмов, и три таблицы. Целью данной курсовой работы является построить систему моделирующую движение молекул идеального газа в замкнутом пространстве.  Также в курсовую работу входит два приложения: в первом находится текст основной программы, а во втором текстпрограммы-драйвера для тестирования процедуры столкновения со стенкой  и листинг тестирования.  Оценка результатов выполнения даётся в заключении к данной курсовой работе.  

ЗАДАНИЕ (вариант 21).

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

1. Системный анализ.

Выпишем  факты:

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

Сразу оговорюсь, что прямоугольный сосуд я рассматриваю не как отдельный объект, а как совокупность четырёх стенок попарно перпендикулярных друг другу.

Стенка: в прямоугольном сосуде; молекулы отражаются от стенок без потери энергии.

Перегородка: разделенном  подвижной вертикальной перегородкой с отверстием; можно изменять величину отверстия в перегородке; можно перемещать перегородку в, горизонтальном направлении.

Молекула: молекулы отражаются от стенок без потери энергии; молекулы отражаются  друг от друга без потери энергии.

  1.  Стенка(Wall)
  •  Атрибуты:

длина (length)

         угол(anglе)

  1.  Перегородка(Barrier)
  •  Атрибуты:

        Величина отверстия(delta)

  •  Действия:

        изменить размер отверстия(hole_scale)

        двигать перегородку(move)

  1.  Молекула(Ball)
  •  Атрибуты:

         координаты центра(centreX,centreY)

         угол(angl)

         радиус(radius)

  •  Действия:

         двигать шар(move)

         установить значение угла движения(set_angl)

         установить значение радиуса(set_radius)

         установить значение координаты Х(set_centreX)

         установить значение координаты Y(set_centreY)

  •  Сообщения др объектам:

         ударить шар в другой шар(hit)

         ударить шар в стенку(hit_on_wall)

         ударить шар в перегородку(hit_on_barr)

к данному словарю предметной области следует сделать некоторые уточнения: 1) величина отверстия delta имеет начальное значение 40 и при изменении изменяется пошагово причём шаг равен 5;      2)в реальном мире скорость молекулы зависит от её кинетической энергии, но в задаче оговорено, что при столкновениях энергия молекулы не изменяется, а значит и скорость остаётся постоянной поэтому примем скорость молекулы velo=6; 3)абстракция сущности молекулы angl отвечает и за угол движения и за направление движения. 

 

                                                                         Ball

     

    1..n   1..n

                                                     1     

                 1

                                             

                               Wall                                                               Barrier  

Рисунок1.   Диаграмма классов на стадии анализа

            TheWall:Wall

          

              PassivBall:Ball        

                                       hit(PassivBall)                                       

ActivBall:Ball

hit_on_barrier()

     TheBarrier:Barrier      

Рисунок2.Диаграмма объектов на стадии анализа

Функции системы:

  1.  Управление моделированием осуществляется при помощи команд вводимых с клавиатуры: кнопка «вправо» – перемещение подвижной перегородки вправо, кнопка «влево» - перемещение подвижной перегородки влево, кнопки «серый плюс» и «серый минус» (на дополнительной клавиатуре) – соответственно увеличение и уменьшение размеров отверстия в перегородке.  Перед началом моделирование задаётся количество моделируемых молекул , также путём ввода с клавиатуры.  Выход из программы происходит при нажатии клавиши ESC
  2.  Отображение на экране компьютера перемещения молекул, результатов их столкновений со стенками, перегородкой и между собой

Эксплуатационные требования:

  •  технические средства – IBM PC  486DX2(66МГц)
  •  операционная система – MS DOS
  •  процесс моделирования управляется одним оператором.

2.  проектирование.

Идентификация содержания классов.

Класс Wall.  Реализует понятие “стенка сосуда”, объекты этого класса ограничивают рабочее поле на котором происходит моделирование. Стенки различаются длиной и углом (вертикальные и горизонтальные) оперируя с этими параметрами моделируем «сосуд».

Класс Barrier.  На первый взгляд кажется логичным наследовать этот класс от Wall, но из-за специфического поведения объектов этого класса наследование становится не удобным.  Атрибутами в этом классе являются координаты центра перегородки, и в они же являются центром отверстия, что делает удобной работу с составным объектом этого класса.

Класс Ball.   Основной класс, описывающий вид и поведение молекулы.  В этой работе молекулы представляются в виде окружностей постоянного радиуса( отсюда Ball) что требует введения атрибутов centreX и centreY – как координат центра окружности, и radius – радиуса молекулы.   Атрибут angl изменяется при столкновении молекулы с чем-либо и задаёт направление движения.

Идентификация связей между классами и объектами.

Класс Barrier. Объекты данного класса взаимодействуют с объектами класса Ball., при этом они передают им свои параметры, соответственно вводим функции getcx(), getcy(), getdelta()  возвращающие координаты центра перегородки и радиус отверстия.

Класс Ball. Имеет общедоступный метод изменения любого поля – set(), который используется при инициализации.

     1            1

                   Wall         1        1.N                     Ball  1..N 1      Barrier

Рисунок 3. Диаграмма классов на этапе проектирования

                 TheWall:Wall

     PassivBall:Ball

                                                                          P  

       Hit_on_wall()                 Hit(PassivBall)

                                                               getcx(),      getcy(),     getdelta()

          TheBarrier:Barrie

  ActiveBall:Ball

Рисунок 4. Диаграмма объектов на стадии проектирования

ActiveBall:Ball                  TheBarrier:Barrier                PassivBall:Ball

                      getcx()

                      getcy()

                     getdelta()

                   

                                                                               Hit(PassivBall)

Рисунок 5. Диаграмм взаимодействия на стадии проектирования

Диаграмма модулей в данной курсовой работе смысла не имеет т.к. все классы и функции находятся в одном одуле .

3.  Программирование.

Программирование производится на языке С++.  Основу для программирования составляют диаграммы и спецификации этапа проектирования.

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

Класс «Стенка»

class Wall

{

 protected:

int length; // длина стенки

int angle; // угол стенки ( 0 или 90);

int x,y;

 public:

Wall(int l, int a)

  {length = l; angle = a;}

void show(int ix,int iy); // нарисовать стенку

 };

       

 Класс «Перегородка»

class Barrier

 {

protected:

 int cx;  // координаты центра

   int cy; //

 int delta; // радиус отверстия в перегородке

public:

 Barrier(int icx, int icy, int d){delta = d;cx=icx;cy=icy;}

 void hide( int ix,int iy); //скрыть перегородку

 void show( int ix,int iy);//нарисовать перегородку

 int hole_scale(int dy); // изменение радиуса отверстия в перегородке

  void move(int dx); // переместить перегородку

 int getcx(){return cx;}

 int getcy(){return cy;}

 int getdelta(){return delta;}

};

Класс «Молекула»

class Ball

 {

protected:

 int centreX;//координаты центра

 int centreY;

 int radius;//радиус молекулы

 double angl;//угол определяющий направление движения молекулы

public:

 Ball() {;}

 void show();

 void hide();

 int move(); //переместить молекулу

 int hit(Ball b2);//столкновение с др молекулой

 int hit_on_wall();//столкновение со стенкой

 void hit_on_barr(int x,int y,int d); // столкновение с перегородкой

void set(int bool,int value) //функция инициализирующая поля класса (в зависимости от значения bool)

{

if(bool==1) radius = value;

if(bool==2) centreX = value;

if(bool==3) centreY = value;

if(bool==4) angl =1.0*value;

}

 };

4.  Тестирование.

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

Спецификация метода int Ball::hit_on_wall()

Имя -   hit_on_wall()

Назначение – изменить угол движения молекулы

Входные параметры -  centtreX, centreY – координаты центрамолекулы  

                                       аngl – угол движения молекулы.

Выходные параметры - centtreX, centreY – координаты центрамолекулы  

                                       аngl – угол движения молекулы.

Особые ситуации – нет

Вызываемые модули – нет.

 

Ситуации:

  1.  молекула ударяется в верхнюю стенку -  угол отрицателен     
  2.  молекула ударяется в левую стенку -  угол отрицателен       
  3.  молекула ударяется в правую стенку -  угол отрицателен          
  4.  молекула ударяется в нижнюю стенку -  угол положителен          
  5.  молекула ударяется в правую стенку -  угол положителен          
  6.  молекула ударяется в левую стенку -  угол положителен          

Эффекты:

  1.  при ударе о стенку угол меняет знак и становится отрицательным
  2.  при ударе о стенку угол меняет знак и становится положительным
  3.  при ударе о стенку угол не меняет знак

Примечание: 1)во всех случаях значение угла по модулю изменяется

                        2) ни какие две ситуации не могут существовать одновременно

         1

         2                                   b

         3         V

                                c

         4

         5       V

                                            a                 

         6

Рисунок 6.Функциональная диаграмма

 Таблица1. Таблица решений  

Тесты

Ситуац

1

2

3

4

5

6

1

I

S

S

S

S

S

2

S

I

S

S

S

S

3

S

S

I

S

S

S

4

S

S

S

I

S

S

5

S

S

S

S

I

S

6

S

S

S

S

S

I

Эффект

A

A

A

A

P

A

A

B

P

A

A

A

A

A

C

A

P

P

A

P

P

S- состояния нет

I- состояние есть

A- эффекта нет

P- эффект есть

Исходя из данной таблицы видно, что в принципе достаточно трёх тестов.

После написания программы драйвера, и её выполнения получим такие результаты:

Входные данные

Выходные данные

Ожидаемый выход

1

Angl = 60.000000

Angl = -60.000000

Angl = -60.000000

2

Angl = -60.000000

Angl = 60.000000

Angl =60.000000

3

Angl =60.000000

Angl = 120.000000

Angl = 120.00000

Таблица2. Таблица тестов

Теперь изобразим приближенный алгоритм функции

                  

           вход

          А

     angl= 180.0-(angl)

     Б  

   angl= 0.0-(angl)

                                                                                                                        выход

Рисунок7. Блок-схема метода hit_on_wall().

    

А = (25 >= centreX) или (centreX >= 600)

Б = (15 >= centreY) или (centreY >= 450)

Таблица3. Матрица ветвей            

Тесты

1

2

3

А

Да

Х

Х

Нет

Х

Б

Да

Х

Нет

Х

Х

При возникновении ситуации А – Нет, а  Б- Да, будет получена ситуация сначала  как в тесте №1, а затем как в тесте №2

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

Заключение.

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

Список литературы.

  1.  Методические указания к курсовой работе по дисциплине технология программирования. Составители: И.Р. Дубов, В.А. Барков, А.Г. Долинин.  Владимир:1999г
  2.  Лекции по дисциплине технология программирования  (преподаватель И.Р. Дубов)         Желонкина Н.В.

Приложение 1.

#include<graphics.h>

#include<dos.h>

#include<bios.h>

#include<math.h>

#include<iostream.h>

#include<stdlib.h>

#include<conio.h>

#define Pi  0.01745 // константа для перевода градусов в радианы

#define color BLACK // основной цвет

#define velo 6 // скорость молекулы

//*************************Класс «Стенка»************************

class Wall

{

 protected:

int length;

int angle;

int x,y;

 public:

Wall(int l, int a)

  {length = l; angle = a;}

void show(int ix,int iy); // нарисовать стенку

 };

void Wall::show( int ix,int iy)

 {

setcolor(15);

if( angle == 0)  // в зависимости от значения угла рисовать горизонтальную или вертикальную стенку

             bar(ix-5,iy-5,ix+length,iy);

else bar(ix-15,iy-5,ix,iy+length);

setcolor(color);

 }

//*************************Класс «Перегородка»**********************

class Barrier

 {

protected:

 int cx;  // координаты центра

   int cy; //

 int delta; // радиус отверстия в перегородке

public:

 Barrier(int icx, int icy, int d){delta = d;cx=icx;cy=icy;}

 void hide( int ix,int iy); //скрыть перегородку

 void show( int ix,int iy);//нарисовать перегородку

 int hole_scale(int dy); // изменение радиуса отверстия в перегородке

  void move(int dx); // переместить перегородку

 int getcx(){return cx;}

 int getcy(){return cy;}

 int getdelta(){return delta;}

};

void Barrier :: hide(int ix,int iy)

 {

setcolor(color);

line(ix,iy,ix,cy-delta);

line(ix,cy+delta,ix,460);

setcolor(15);

 }

void Barrier :: show(int ix,int iy)

 {

setcolor(15);

line(ix,iy,ix,cy-delta);

line(ix,cy+delta,ix,460);

setcolor(color);

 }

int Barrier::hole_scale(int dy)

 {

 delta=delta+dy;

 setcolor(color);

 line(cx,cy-delta,cx,cy+delta);

 setcolor(15);

 show(cx,10);

 }

void Barrier::move(int dx)

 { hide(cx,10);

   cx=cx+dx;

   show(cx,10);

 }

//************************************Класс «Молекула»*********************************

class Ball

 {

protected:

 int centreX;//координаты центра

 int centreY;

 int radius;//радиус молекулы

 double angl;//угол определяющий направление движения молекулы

public:

 Ball() {;}

 void show();

 void hide();

 int move();

 int hit(Ball b2);//столкновение с др молекулой

 int hit_on_wall();//столкновение со стенкой

 void hit_on_barr(int x,int y,int d); // столкновение с перегородкой

void set(int bool,int value) //функция инициализирующая поля класса (в зависимости от значения bool)

{

if(bool==1) radius = value;

if(bool==2) centreX = value;

if(bool==3) centreY = value;

if(bool==4) angl =1.0*value;

}

 };

void setnewfill(int fst,int col){setfillstyle(fst,col); setcolor(col);}

/****************Show()*******************/

void Ball::show()

 {fillellipse(centreX,centreY,radius,radius);}

/****************Hide()*******************/

void Ball::hide()

 {setnewfill(0,0);show();setnewfill(1,15);}

/****************Move()*****************/

int Ball::move()

 {

hide();

centreX = centreX + velo*1.0*cos(angl*Pi);//перемещение по оси Х

centreY = centreY + velo*1.0*sin(angl*Pi); //перемещение по оси Y

  if(hit_on_wall()==1) // если есть удар о стенку – отскочить (изменяется угол движения)

                    {centreX = centreX + velo*1.0*cos(angl*Pi);

        centreY = centreY + velo*1.0*sin(angl*Pi);}

show();

 }

/**************Hit()********************/

int Ball::hit(Ball b2)

{

if((abs(centreX-b2.centreX))<2.5*radius)              // если расстояние между центрами молекул по обеим осям

   if  ((abs(centreY-b2.centreY))<2.5*radius)        // меньше диаметра – изменить угол движения

       { if ((b2.angl==180)||(b2.angl==0))b2.angl=-angl;

 if((angl==180)||(angl==0))angl = -b2.angl;

 b2.angl=(angl+b2.angl)+b2.angl;

 angl=b2.angl+angl+angl;

      }//конец двойного условия

}

/******************Hit_On_Wall()******************/

int Ball::hit_on_wall()

{

// столкновение с вертикальными стенками

if ((25 >= centreX) || (centreX >= 600))

{

angl= 180.0-(angl); return 1;

}

// столкновение с горизонтальными стенками

if ((15 >= centreY)||(centreY >= 450))

{

 angl = 0.0-angl;return 1;

}

return 0;

}

/*******************Hit_On_Barr()*************/

void Ball::hit_on_barr(int x,int y,int d)

{

if((centreY-radius<(y-d))||(centreY+radius>(y+d))) //попадает ли молекула в отверстие

 if (abs(x-centreX)<=velo+radius) angl= 180.0-angl; // если не попадает, но находится у перегородки – отскочить  

}

/******************************Головная программа****************************************/

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

int main()

{   int n;

cout<<"‚ўҐ¤ЁвҐ зЁб«® ¬®«ҐЄг: ";

cin>>n;

cout<<"ЏаҐ¦¤Ґ 祬 ­ з вм а Ў®вг б Їа®Ја ¬¬®© Їа®звЁвҐ нв®!!!! "<<endl;

cout<<"1) —в®Ўл Ё§¬Ґ­Ёвм Ї®«®¦Ґ­ЁҐ ЇҐаҐЈ®а®¤ЄЁ,ЁбЇ®«м§г©вҐ Є­®ЇЄЁ "" <= ""Ё"" => """<<endl;

cout<<"2) —в®Ўл Ё§¬Ґ­Ёвм ўҐ«ЁзЁ­г®вўҐабвЁп ў ЇҐаҐЈ®а®¤ЄҐ ЁбЇ®«м§г©вҐ "" + ""Ё"" - ""­             ¤®Ї®«­ЁвҐ«м­®© Є« ўЁ вгॠ"<<endl;

cout<<"3) „«п ўл室  Ё§ Їа®Ја ¬¬л ЁбЇ®«м§г©вҐ Є­®ЇЄг Esc  ";

delay(10000);

int gdriver=DETECT,gmode;

Ball B[255];  // статический массив молекул

for (int j=0; j<=n ; j++) // цикл инициализации свойств молекул – объектов

{

B[j].set(1,2); // установка радиуса

B[j].set(2,50+15*j); //

B[j].set(3,50+19*j);//

B[j].set(4,30+15*j);//установка угла

}

Wall W1(600,0);     //

Wall W2(450,90);  //

Wall W3(600,0);   //Инициализируем стенки

Wall W4(450,90);//

Barrier Barr(300,220,40); // и перегородку

initgraph(&gdriver,&gmode,"c:\\bc45\\bgi");

//основной цикл, выполнять пока не нажато ESC

while(bioskey(0) != 283)

{

for(int i=0;i<=n+1 && ! kbhit();i++)

{

if(i>n)i=0;

B[i].move();

for(int k=0;k<=n;k++)

{

if(k==i) k++;

B[i].hit(B[k]);

}

B[i].hit_on_barr(Barr.getcx(),Barr.getcy(),Barr.getdelta());

W1.show(20,10);

W2.show(20,10);

W3.show(20,460);

W4.show(620,10);

Barr.show(Barr.getcx(),10);

}

switch (bioskey(0))

{

 case 18989: Barr.hole_scale(-5);break;

 case 20011: Barr.hole_scale(5);break;

 case 19200: Barr.move(-5);break;

 case 19712: Barr.move(5);break;

 default: break;

}

}

closegraph();

}// ************************Конец головной программы*******************

Приложение 2.

#include<stdio.h>

#include<math.h>

#include<iostream.h>

#include<stdlib.h>

#include<conio.h>

#define Pi  0.01745

#define color BLACK

#define velo 6

class Wall

{

 protected:

int length;

int angle;

int x,y;

 public:

Wall(int l, int a)

  {length = l; angle = a;}

void show(int ix,int iy);

  };

void Wall::show( int ix,int iy)

 {

setcolor(15);

if( angle == 0) bar(ix-5,iy-5,ix+length,iy);

else bar(ix-15,iy-5,ix,iy+length);

setcolor(color);

 }

class Ball

 {

protected:

 int centreX;

 int centreY;

 int radius;

 double angl;

public:

 Ball() {;}

 void show();

 void hide();

 int move();

 int hit(Ball b2);

 int hit_on_wall();

 void hit_on_barr(int x,int y,int d);

 double getangle(){return angl;}

 void set(int bool,int value)

{

if(bool==1) radius = value;

if(bool==2) centreX = value;

if(bool==3) centreY = value;

if(bool==4) angl =1.0*value;

}

 };

void setnewfill(int fst,int col){setfillstyle(fst,col); setcolor(col);}

void Ball::show()

 {fillellipse(centreX,centreY,radius,radius);}

void Ball::hide()

 {setnewfill(0,0);show();setnewfill(1,15);}

int Ball::move()

 {

hide();

centreX = centreX + velo*1.0*cos(angl*Pi);

centreY = centreY + velo*1.0*sin(angl*Pi);

if(hit_on_wall()==1){centreX = centreX + velo*1.0*cos(angl*Pi);

centreY = centreY + velo*1.0*sin(angl*Pi);}

show();

 }

int Ball::hit_on_wall()

{

if ((27 >= centreX) || (centreX >= 598))

{

 angl= 180.0-(angl); return 1;

}

if ((15 >= centreY)||(centreY >= 450))

{

 angl = 0.0-angl;return 1;

}

return 0;

}

int main()

{

FILE *stream;

stream = fopen("c:\\losf\\test.dat", "w+");

int gdriver=DETECT,gmode;

Ball B;

B.set(1,2);

B.set(2,50);

B.set(3,50);

B.set(4,60);

Wall W1(600,0);

Wall W2(450,90);

Wall W3(600,0);

Wall W4(450,90);

initgraph(&gdriver,&gmode,"c:\\bc45\\bgi");

for(int i=0; ! kbhit();i++)

{

B.move();

//if (B.hit_on_wall()){

fprintf(stream, "%f \n ", B.getangle());

fprintf(stream, " \n "); //}

delay(10);

W1.show(20,10);

W2.show(20,10);

W3.show(20,460);

W4.show(620,10);

}

fclose(stream);

closegraph();

}

Листинг тестирования

60.000000

-60.000000

60.000000

120.000000

Оглавление.

Аннотация.................................................................................................2

Задание......................................................................................................3

  1.  Системный анализ...............................................................................3
  2.  Проектирование...................................................................................5
  3.  Программирование..............................................................................6
  4.  Тестирование.......................................................................................8

Заключение...............................................................................................10

Список литературы..................................................................................10

Приложения

  1.  Приложение1........................................................................................11
  2.  Приложение2........................................................................................14

16


 

А также другие работы, которые могут Вас заинтересовать

1588. Залеживание и отек беременных (причины, диагностика и профилактика) 23.27 KB
  Беременность-физиологическое состояние самки в период вынашивания плода. Залеживание организма. У беременных (преимущественно у коров и кобыл) в подкожной клетчатке скапливается транссудат и имеются общие или местные застои венозной крови.
1589. Защитные функции желтка куриного яйца и глицерина при замораживании спермы в жидком азоте 19.4 KB
  Хранение спермы в жидком азоте позволяет значительно улучшить породные качества разводимого скота, так как в тысячи раз увеличивается количество самок, осеменяемых спермой ценных производителей.
1590. Значение и необходимость разбавления спермы 19.32 KB
  Целью разбавления спермы - создание окружающей среды, способность защитить половые клетки от повреждений в процессе консервирования, увеличивается объем полового продукта для разделения его на множество спермодоз и обеспечение высокой выживаемости спермиев после хранения.
1591. Иннервация, кровоснабжение и лимфатическая система половых органов самок 19.28 KB
  Иннервация (от лат. in — в, внутри и нервы), снабжение органов и тканей нервами, что обеспечивает их связь с центральной нервной системой. Иннервация осуществляется симпатическими и парасимпатическими нервными стволами.
1592. Искусственно приобретенное бесплодие как результат неправильной организации естественного и искусственного осеменения 18.56 KB
  Бесплодие - нарушение воспроизводства потомства, вызванное ненормальными условиями существования самок и самцов (погрешности в кормлении, содержании и эксплуатации, неправильное осеменение, болезни полового аппарата и других органов).
1593. Исходы абортов: мумификация, мацерация, гнилостное разложение 18.99 KB
  Аборт — прерывание беременности до момента, когда плоды становятся зрелыми и способными к внеутробному существованию.
1594. Прерывание беременности. Классификация абортов 18.79 KB
  Аборт - это прерывание беременности с последующим рассасыванием зародыша, мумификацией, мацерацией, путрификацией либо изгнанием из матки мертвого неизмененного плода (выкидыша) или незрелого живого плода (недоноска).
1595. Клиническая и рефлексологическая оценка племенных производителей 18.58 KB
  Клиническое исследование животного дает специалисту комплекс точных данных для постановки диагноза, позволяет сделать прогноз и назначить соответствующее лечение. Наружное исследование начинают с общего осмотра животного, затем осматривают круп и наружные половые органы.
1596. Клинические исследования молочной железы 18.95 KB
  Молочная железа, вымя коровы - железистый орган, состоящий из 4 четвертей; каждая из них внизу заканчивается соском. Вымя осматривают сзади и сбоку; при этом обращают внимание на его форму, сохранность волосяного покрова, цвет кожи; выявляют повреждения, кожные заболевания или их следы