753

Программная разработка инженерного калькулятора

Курсовая

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

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

Русский

2013-01-06

131.5 KB

747 чел.

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Государственное образовательное учреждение

Высшего профессионального образования

«Ижевский государственный технический университет»

Воткинский филиал

Кафедра «Ракетостроение»

Курсовая работа

по дисциплине: «Информатика»

на тему: «Программная разработка инженерного калькулятора»

(специальность 270102)

Выполнил: студент гр. Д 4-10-1                                            Юрков И.В.

Проверил:                                                                              Аношин А.В.

Воткинск, 2009

Содержание

1.Введение…………………………………………………………………………...3

2.Необходимые формулы и требования…………………………………………...4

3.Алгоритм …………………….....…………………………………………………5

4.Интерфейс………………………………………………………………………....6

5.Вывод………………………………………………………………………………7

6.Приложение I……………………………………………………………………...8

  6.1. Техническое задание…………………………………………………………8

6.1.1. Основания для разработки……………………………………………8

6.1.2. Назначение разработки………………………………………………..8

  6.2. Требования к программе или программному изделию……………………8

6.2.1. Требования к функциональным характеристикам…………………..8

6.2.2.Условия эксплуатации…………………………………………………8

6.2.3.Требования к составу и параметрам технических средств………….9

6.2.4.Требования к информационной и программной совместимости…...9

6.2.5.Требования к транспортированию и хранению……………………...9

   6.3.Технико-экономические показатели………………………………………10

   6.4.Стадии и этапы разработки………………………………………………...10

   6.5.Порядок контроля и приемки ……………………………………………...12

7.Приложение II: исходный код………………………………………………….13

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


1.
 Введение

Программы, работающие на компьютере, можно разделить на три категории:

  1.  Прикладные программы, непосредственно обеспечивающие выполнение необходимых пользователям работ: редактирование текстов, рисование, обработку информационных массивов и т.д.
  2.  Системные программы, выполняющие различные вспомогательные функции, например диагностика компьютера или резервное копирование информации.
  3.  Инструментальные системы (системы программирования), обеспечивающие создание новых программ.

Данные категории программ в свою очередь так же разделяются на несколько разделов. Например, прикладные программы можно разделить по уровню сложности обработки информации и результатов. Есть и более простые: всевозможные программы – калькуляторы (имитирующие работу обычного калькулятора). В среде Windows есть такая программа, по аналогии с ней  было сделано данное задание.

Темой данной курсовой работы является: «Программная разработка инженерного калькулятора» с описанием всех этапов разработки проекта, текстом программы, тестовых примеров, руководства пользователя в виде пояснительной записки.


2.
 Необходимые формулы и требования

 Приложение «Инженерный калькулятор» имеет ряд требований, необходимых для удобства использования:

  1.  Использование одного поля для ввода операторов и для вывода результата;
  2.  Расширенный набор действий: вычисление тригонометрических функций, возведение в степень, факториал, экспонента и т.п.;
  3.  Использование различных типов переменных;
  4.  Вывод сообщений с помощью функции ShowMessage при делении на нуль, извлечении корня из отрицательного числа, а также вычислении логарифма отрицательного числа и т.д.

          5.Необходимые формулы: xy=exp(y*ln(x)), n!=1*2*3*…*n, tg(x)=sin(x)/cos(x), ctg(x)=cos(x)/sin(x).


3.
 Алгоритм


4. Интерфейс

натуральный логарифм

синус

квадрат числа

факториал

косинус

куб числа

число равное 3,14

тангенс

возведение в степень

отношение единицы к числу

котангенс

квадратный корень

очистка поля

умножение

сложение

деление

вычитание

знак равенства

цифры


5. Вывод

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

Мой продукт (инженерный калькулятор) позволяет производить над числами не только четыре элементарных действия: сложение (x + y), вычитание (x - y), умножение (x * y) и деление (x / y), но и вычислять тригонометрические функции для углов, возводить числа в квадрат (x2), куб (x3) степень (xy), находить факториал (n!=1*2*3*…*n), натуральный логарифм (ln(x)), деление (1/x) и т.п.


6.
 Приложение I

6.1. Техническое задание

6.1.1. Основания для разработки

Задание выдано преподавателем по дисциплине “Информатика” Аношиным А.В. для выполнения курсовой работы на тему: «Инженерный калькулятор».

6.1.2. Назначение разработки

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

6.2. Требования к программе или программному изделию

6.2.1. Требования к функциональным характеристикам

Использование одного поля для ввода операторов и для вывода результата. Расширенный набор действий: вычисление тригонометрических функций, возведение в степень, факториал, экспонента и т.п. Использование различных типов переменных. Вывод сообщений при делении на нуль, извлечении корня из отрицательного числа, а также вычислении логарифма отрицательного числа и т.д.

6.2.2. Условия эксплуатации

Благоприятные климатические условия эксплуатации, при которых должны обеспечиваться функциональные характеристики. Программа не требует проведения каких-либо видов обслуживания. Минимальный уровень знаний  пользователя ПК:

а) самостоятельно   (в   требуемой   последовательности) включать и отключать пользовательский компьютер и периферийное оборудование от электропитания;

б) производить первоначальную загрузку пользовательской операционной системы;

в) вводить данные с клавиатуры;

г) использовать манипулятор-мышь для работы с элементами графического пользовательского интерфейса на экране монитора;

д) уметь пользоваться средствами операционной системы и оперировать ею с  помощью графического пользовательского интерфейса;

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

В том числе уметь:

  1.   осуществлять запуск Программ на выполнение;
  2.   использовать базовые функции оконного интерфейса, позволяющего изменять размер окна программы и перемещать его на экране монитора;
  3.  переключаться между окнами выполняющихся программ;
  4.  применять стандартные программы для поиска, копирования, перемещения, удаления и открытия файлов дисковой подсистемы;
  5.  активизировать режим подсказки (справки операционной системы);

6.2.3. Требования к составу и параметрам технических средств

  1.  Процессор Атлон, Целерон
  2.  Оперативная память 32Мб
  3.  Видео карта 16Мб

6.2.4. Требования к информационной и программной совместимости

  •  ОС Windows
  •  Оперативная память 32Мб

6.2.5. Требования к транспортированию и хранению

Допускается перемещение программного изделия в транспортной таре всеми видами транспорта (в том числе в отапливаемых герметизированных отсеках самолетов без ограничения расстояний). При перевозке в железнодорожных вагонах, вид отправки - мелкий малотоннажный.

При транспортировании и хранении программного изделия должна быть предусмотрена защита от попадания пыли и атмосферных осадков. Климатические условия транспортирования и хранения определяются требованиями к носителю.

6.3. Технико-экономические показатели

Требования к технико-экономическим показателям не предъявляются.

6.4. Стадии и этапы разработки

Жизненный цикл программного обеспечения включает в себя пять этапов: 1 - постановка задачи; 2 - анализ; 3 - проектирование и определение спецификаций; 4 - реализация, кодирование, тестирование и отладка; 5 - модификация и сопровождение. Рассмотрим их.

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

Для создания конкурентоспособных продуктов, в ходе выполнения этого этапа должны быть получены четкие ответы на следующие вопросы:

Что должна делать программа?

В чем состоят реальные проблемы, разрешению которых она должна способствовать?

Что представляют собой входные данные?

Какими должны быть выходные данные?

Какими ресурсами располагает проектировщик?

Уточняют среду функционирования ПО: комплектацию и параметры технических средств, версию используемой операционной системы (ОС) и др. В результате согласования между заказчиком и исполнителем составляют техническое задание (ТЗ) в соответствии с ГОСТ 19.210-78, которое служит основанием для дальнейшей работы.

Анализ. На данном этапе по результатам условий задачи выбирают математические абстракции, строят модель задачи и определяют метод преобразования исходных данных в результаты (методы решения задачи).

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

Существует три аспекта проверки алгоритма: на правильность; на эффективность реализации;  на вычислительную сложность.

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

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

Модификация и сопровождение. Это этап эксплуатации программы. Каким бы ни было изощренным тестирование программы, к сожалению, в больших программных комплексах чрезвычайно тяжело устранить абсолютно все ошибки. Устранение обнаруженных при эксплуатации ошибок, неудачных проектных решений, «узких мест» – первейшая задача этого этапа.

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

6.5. Порядок контроля и приемки

Курсовую работу принимает преподаватель Аношин А.В. на электронном носителе и в распечатанном варианте. Смотрит, как выполняется программа и соответствует ли она всем параметрам.


7.
Приложение II: исходный код

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls;

type

 TForm1 = class(TForm)

   Button1: TButton;

   Button2: TButton;

   Button3: TButton;

   Button4: TButton;

   Edit1: TEdit;

   Button5: TButton;

   Button6: TButton;

   Button7: TButton;

   Button8: TButton;

   Button9: TButton;

   Button10: TButton;

   Button11: TButton;

   Button12: TButton;

   Button13: TButton;

   Button14: TButton;

   Button15: TButton;

   Button16: TButton;

   Button17: TButton;

   Button18: TButton;

   Button19: TButton;

   Button20: TButton;

   Button21: TButton;

   Button22: TButton;

   Button23: TButton;

   Button24: TButton;

   Button25: TButton;

   Button26: TButton;

   Button27: TButton;

   Button28: TButton;

   procedure Button1Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure Button4Click(Sender: TObject);

   procedure Button5Click(Sender: TObject);

   procedure Button6Click(Sender: TObject);

   procedure Button7Click(Sender: TObject);

   procedure Button8Click(Sender: TObject);

   procedure Button9Click(Sender: TObject);

   procedure Button10Click(Sender: TObject);

   procedure Button11Click(Sender: TObject);

   procedure Button12Click(Sender: TObject);

   procedure Button13Click(Sender: TObject);

   procedure Button15Click(Sender: TObject);

   procedure Button14Click(Sender: TObject);

   procedure Button16Click(Sender: TObject);

   procedure Button17Click(Sender: TObject);

   procedure Button18Click(Sender: TObject);

   procedure Button19Click(Sender: TObject);

   procedure Button20Click(Sender: TObject);

   procedure Button21Click(Sender: TObject);

   procedure Button22Click(Sender: TObject);

   procedure Button23Click(Sender: TObject);

   procedure Button24Click(Sender: TObject);

   procedure Button25Click(Sender: TObject);

   procedure Button26Click(Sender: TObject);

   procedure Button27Click(Sender: TObject);

   procedure Button28Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

 oper:byte;

 a:real;

 b:real;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

a:=strtofloat(edit1.Text);

edit1.Text:='';

oper:=1;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

a:=strtofloat(edit1.Text);

Edit1.Text:='';

oper:=2;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

a:=strtofloat(edit1.Text);

edit1.Text:='';

oper:=3;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

a:=strtofloat(edit1.Text);

edit1.Text:='';

oper:=4;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

edit1.Text:=edit1.Text+inttostr(1);

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

edit1.Text:=edit1.Text+inttostr(2);

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

edit1.Text:=edit1.Text+inttostr(3);

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

edit1.Text:=edit1.Text+inttostr(4);

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

edit1.Text:=edit1.Text+inttostr(5);

end;

procedure TForm1.Button10Click(Sender: TObject);

begin

edit1.Text:=edit1.Text+inttostr(6);

end;

procedure TForm1.Button11Click(Sender: TObject);

begin

edit1.Text:=edit1.Text+inttostr(7);

end;

procedure TForm1.Button12Click(Sender: TObject);

begin

edit1.Text:=edit1.Text+inttostr(8);

end;

procedure TForm1.Button13Click(Sender: TObject);

begin

edit1.Text:=edit1.Text+inttostr(9);

end;

procedure TForm1.Button15Click(Sender: TObject);

begin

edit1.Text:=edit1.Text+inttostr(0);

end;

procedure TForm1.Button14Click(Sender: TObject);

var r:real;

begin

b:=strtofloat(edit1.Text);

if oper=1 then

begin

r:=a*b;

Edit1.Text:=floattostr(r);

end;

if oper=2 then

begin

if (b<>0) then

begin r:=a/b; Edit1.Text:=floattostr(r); end else

 ShowMessage('На 0 делить нельзя');

end;

if oper=3 then

begin

r:=a+b;

Edit1.Text:=floattostr(r);

end;

if oper=4 then

begin

r:=a-b;

Edit1.Text:=floattostr(r);

end;

if oper=5 then

begin

r:=exp(b*ln(a));

Edit1.Text:=floattostr(r);

end;

end;

procedure TForm1.Button16Click(Sender: TObject);

begin

edit1.Text:='';

end;

procedure TForm1.Button17Click(Sender: TObject);

var r:real; f:real;

begin

a:=strtofloat(edit1.Text);

f:=a*3.14159265359/180 ;

r:=sin(f);

Edit1.Text:=floattostr(r);

end;

procedure TForm1.Button18Click(Sender: TObject);

var r:real; f:real;

begin

a:=strtofloat(edit1.Text);

f:=a*3.14159265359/180 ;

r:=cos(f);

Edit1.Text:=floattostr(r);

end;

procedure TForm1.Button19Click(Sender: TObject);

var r:real; f:real; n:longint;

begin

a:=strtofloat(edit1.Text);

f:=a*3.14159265359/180 ;

if (f<>180/2+180*n) then

begin r:=sin(f)/cos(f); Edit1.Text:=floattostr(r); end else

ShowMessage('Невозможно определить');

end;

procedure TForm1.Button20Click(Sender: TObject);

var r:real; f:real; n:longint;

begin

a:=strtofloat(edit1.Text);

f:=a*3.14159265359/180 ;

if (f<>180*n) then

begin r:=cos(f)/sin(f); Edit1.Text:=floattostr(r); end else

ShowMessage('Невозможно определить');

end;

procedure TForm1.Button21Click(Sender: TObject);

Var i:integer; factorial:longint; n:byte;

begin

n:=strToInt (edit1.Text);

factorial:=1;

For i:=1 to n do

Factorial:=factorial*i;

edit1.Text:=floattostr(factorial);

end;

procedure TForm1.Button22Click(Sender: TObject);

var r:real;

begin

a:=strtofloat(edit1.Text);

r:=a*a;

edit1.Text:=floattostr(r);

end;

procedure TForm1.Button23Click(Sender: TObject);

begin

b:=3.14159265359;

edit1.Text:=floattostr(b);

end;

procedure TForm1.Button24Click(Sender: TObject);

var r:real;

begin

a:=strtofloat(edit1.Text);

r:=a*a*a;

edit1.Text:=floattostr(r);

end;

procedure TForm1.Button25Click(Sender: TObject);

begin

a:=strtofloat(edit1.Text);

edit1.Text:='';

oper:=5;

end;

procedure TForm1.Button26Click(Sender: TObject);

var r:real;

begin

a:=strtofloat(edit1.Text);

if a>=0 then begin

r:=sqrt(a);

edit1.Text:=floattostr(r);

end else begin

  ShowMessage('Корень из отрицательного числа извлечь нельзя');

   end;

end;

procedure TForm1.Button27Click(Sender: TObject);

var r:real;

begin

a:=strtofloat(edit1.Text);

if a>0 then begin

  r:=ln(a); edit1.Text:=floattostr(r)end else

 ShowMessage('ln при x<=0 неопределён');

end;

procedure TForm1.Button28Click(Sender: TObject);

var r:real;

begin

a:=strtofloat(edit1.Text);

if (a<>0) then begin

r:=1/a; Edit1.Text:=floattostr(r); end else

 ShowMessage('На 0 делить нельзя');

end;

end.


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

  1.  Фараонов В.В. Основы Турбо Паскаля. Изд-во. МВТУ.ФЕСТОДИДАКТИК, 1992, 304с.
  2.  Сергиевский М.В., Шалашов А.В. Турбо Паскаль 7,0. Язык среда программирования на языке Паскаль. Изд-во Москва. Машиностроение,1994, 254 с.
  3.  Емелина Е.И.. Основы программирования на языке Паскаль. Изд-во Москва, Финансы и статистика, 1997, 208с.
  4.  Немнюгин С.А. Турбо Паскаль., Изд-во СПб, 2001. (Учебник + практикум)
  5.  Васюкова Н.Д., Тюлева В.В. Практикум по основам программирования. Язык Паскаль., Изд-во Москва.


начало

dit1.Text:=a;

edit1.Text:=b;

Выбор функции

r:=a*b;

r:=a+b;

r:=a-b;

r:=a/b;

r:=exp(b*ln(a));

r:=edit1.Text;

конец


 

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

22623. Градуювання напівпровідникового датчика температури 81.5 KB
  При вимірюванні опору постійному струму натискати кнопку K можна тільки після підключення об'єкту вимірювання.Зняти залежність опору напівпровідникового датчика від температури та побудувати графік T = f R. Наприклад як фізичний принцип за яким можна побудувати термометр широко використовується залежність опору R від температури Т. Для реєстрації незначних змін опору супутніх незначним перепадам температур потрібна апаратура високої точності а це ускладнює але не виключає зовсім застосування металів як датчиків температури.
22624. Визначення моментів інерції твердого тіла 246.5 KB
  Визначення моментів інерції твердого тіла.Експериментальне визначення параметрів еліпсоїда інерції твердого тіла. 3 Запишемо це векторне рівняння у проекціях на вісі координат з початком у точці беручи до уваги що : 4 З метою спрощення зробимо наступні позначення у рівняннях 4: 5 Вирази позначені однаковими подвійними індексами відтворюють моменти інерції тіла відносно відповідних осей наприклад ОХ ОУ ОZ тобто ті моменти інерції...
22625. ГІРОСКОП 112.5 KB
  Вимірювання швидкості прецесії гіроскопа. Визначення моменту імпульсу та моменту інерції гіроскопа. Макетна установка для спостереження явища регулярної прецесії гіроскопа та виконання необхідних вимірювань. Головне припущення елементарної теорії гіроскопа полягає у тому що і при повільному русі осі обертання у будьякий момент часу момент імпульсу гіроскопа відносно його нерухомої точки вектор вважається направленим по осі гіроскопа у той же бік що й вектор кутової швидкості .
22626. Принципова схема лазера. Властивості лазерного випромінювання. Основні типи лазерів 47.5 KB
  Властивості лазерного випромінювання.Такий процес називається вимушеним індукованим випромінюванням. Для виходу випромінювання одне з дзеркал резонатора роблять напівпрозорим. Окрім підсилення хвилі активним середовищем є фактори що зменшують амплітуду хвилі фактори: коефіцієнт відбивання дзеркал r 1 виводимо частину випромінювання з системи дифракція розсіяння світла середовищем резонатора.
22627. Основні принципи голографії 47 KB
  Метод реєстрації фази хвилі та її відновлення називається голографією. Голограма система перепонок розташованих на шляху світлової хвилі що несе в собі зашифровану фазову та амплітудну інформацію про предмет. Інтенсивність на фотопластинці : де амплітуда опорної хвилі амплітуда відбитої від предмета хвилі. Відтворення за допомогою голограми хвилі яка була розсіяна предметом і несла з собою інформацію про нього ґрунтується на фотометричних властивостях фотографічних матеріалів.
22628. Явище Доплера в оптиці і в акустиці 50.5 KB
  Акустичні хвилі розповсюджуються в середовищі газі всередині якого можуть рухатись джерело і приймаючий пристрійтак що потрібно розглядати не тільки їх рух відносно одинодного а й по відношенню до середовища. Швидкість хвилі в середовищі С=const не залежить від руху джерела. Отже хвилі що вийшли за час τ=t2t1 дійдуть до пристрію протягом часу Θ=Θ2Θ1=τ1V с. Вона рівна: у випадку віддалення від джерела у випадку наближення до джерела Так як швидкість хвилі в середовищі визначається властивостями хвилі тобто не залежить від руху...
22629. Закони збереження та фундаментальні властивості простору і часу 62.5 KB
  Однорідний простір всі точки еквівалентні: L не змінюється при перенесені на нескінченно малий 1 довільне → Рівняння Лагранжа просумуємо по і тоді тобто оскільки закон збереження імпульсу є наслідком варіаційного принципу і однорідності простору. Однорідність часу = закон збереження енергії для ізольованих систем а також для незамкнених систем якщо зовнішні умови не змінюються з часом. Ізотропність простору еквівалентність всіх напрямків: L не зміниться якщо систему повернути на нескінченно малий кут навколо довільної...
22630. Рух тіл в інерціальних та неінерціальних системах відліку. Сили інерції. Коріолісове прискорення 75.5 KB
  Система відліку в якій прискорення матеріальної точки цілком обумовлено лише взаємодією її з іншими тілами а вільна матеріальна точка яка не підлягає дії ніяких інших тіл рухається відносно такої системи прямолінійно і рівномірно називається інерціальною системою відліку ІСВ. Твердження про те що такі системи відліку існують складає зміст 1ого закону Ньютона. Принцип відносності Галілея говорить про те що закони механіки не змінюють свого вигляду при переході від однієї системи відліку до іншої яка рухається рівномірно і прямолінійно....
22631. Закон руху матеріальних точок та твердого тіла 74 KB
  Запишемо другий закон Ньютона для матеріальної точки з даної системи: 1 де зовнішня сила що діє на іту м. Записавши 1 для кожної точки системи та просумувавши всі отриманні рівняння по і маємо: 2. Уведемо задає точкуцентр мас системи Центр мас рухається так ніби в ньому зосереджена вся маса системи. Повна кількість руху системи: = це математичне формулювання закону збереження імпульсу.