Files
freeCodeCamp/guide/russian/c/math/index.md
Randell Dawson 0a1eeea424 fix(guide) Replace invalid prism code block names (#35961)
* fix: replace sh with shell

fix replace terminal with shell

fix replace node with js

fix replace output with shell

fix replace cs with csharp

fix replace c++ with cpp

fix replace c# with csharp

fix replace javasctipt with js

fix replace syntax  with js

fix replace unix with shell

fix replace linux with shell

fix replace java 8 with java

fix replace swift4 with swift

fix replace react.js with jsx

fix replace javascriot with js

fix replace javacsript with js

fix replace c++ -  with cpp

fix: corrected various typos

fix: replace Algorithm with nothing

fix: replace xaml with xml

fix: replace solidity with nothing

fix: replace c++ with cpp

fix: replace txt with shell

fix: replace code with json and css

fix: replace console with shell
2019-05-15 19:08:19 +02:00

173 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Basic Math
localeTitle: Базовая математика
---
# Математика в C
C предоставляет множество возможностей для математики. Сначала мы начнем с некоторых из наиболее распространенных.
## Основной материал
Эти следующие примеры не являются полным кодом, они просто примеры того, как выглядит часть кода. Помните, что в C нам нужно, чтобы все было объявлено до того, как мы его используем, `result` : `a` и `b` должны быть уже инициализированы и установлены в значение. Являются ли они `int` , `double` или что-то важное для предотвращения ошибок и потери информации - мы доберемся до этого позже.
#### Дополнение: `+`
Дополнение выполняется с помощью `+` , например:
```C
result = a + b;
```
В приведенном выше примере переменный `result` будет равен a + b.
#### Вычитание: `-`
Дополнение выполняется с помощью: `-` , так:
```C
result = a - b;
```
В приведенном выше примере переменный `result` будет равен a - b.
#### Умножение: `*`
Умножение выполняется с помощью `*` , например:
```C
result = a * b;
```
В приведенном выше примере переменный `result` будет равен умножению на b.
#### Отдел: `/`
Разделение выполняется с помощью `/` , например:
```C
result = a / b;
```
В приведенном выше примере переменный `result` будет равен делению на b. Тем не менее, это не всегда доля от более b. Когда дело касается целых чисел, все становится немного по-другому - об этом позже.
# Не совсем базовый материал
## Modulo: '%'
Хорошо, теперь все начинает немного странно.
Modulo позволяет вам найти остаток в разделе. Помните, что с целыми числами мы не можем иметь десятичное число. Отдел рассказывает о том, сколько раз один номер будет вписываться в другой, modulo - это поиск того, что осталось. Возьмите 27, разделенных на 4: 4, в 27 раз. 6 раз 4 равно 24, что означает, что осталось 3. В результате 27% 4 равно 3. 10, разделенное на 5, равно 2, 2 раза 5 равно 10, поэтому осталось 0. В результате 10% 5 равно 0.
Оператор modulo более важен, чем вы думаете, особенно в C, где соблюдается разница между числами с плавающей точкой и целыми числами. Это удобно. Вот пример:
```C
result = a % b;
```
В приведенном выше примере `result` будет равен модулю b.
## Целые числа и математика
Целые числа не могут иметь десятичные числа. В результате, когда вы выполняете деление с целыми числами, любое десятичное число будет усечено. Например, 17, деленный на 10, равен 1,7. Однако, если мы имеем дело только с целыми числами, этот результат будет равен 1, а не 1.7. 10 помещается в 17 1 раз, поэтому ответ 1.
При работе с числами с плавающей запятой это не проблема. Числа с плавающей запятой могут принимать десятичные разряды, поэтому нам не нужно беспокоиться о том, что вещи усекаются.
### Почему C это делает?
C, как обсуждалось ранее, является языком низкого уровня. Существуют большие различия между числами с плавающей запятой и целыми числами в аппаратных средствах компьютера, и они требуют, чтобы определенные типы данных имели определенные свойства (например, не принимать десятичные числа, например). C не делает никаких предположений относительно того, что вы хотите, и заставляет вас думать об этом самостоятельно.
### Почему бы нам просто не использовать числа с плавающей точкой все время?
Это также сводится к тому, что C является языком низкого уровня. C намного, намного быстрее и намного, намного легче, чем многие другие языки, и одна из причин, по которой это происходит, из-за того, что программист может принимать интеллектуальные решения о типах данных. Помните, что числа с плавающей запятой занимают гораздо больше памяти, чем целые. В результате важно использовать соответствующий тип данных и обрабатывать целые числа с конверсиями с плавающей запятой, когда это необходимо.
### Как нам обойти это?
Кастинг (описанный ниже) является одним из решений. Другой использует числа с плавающей запятой. Если один или оба числа, которыми управляют, являются числом с плавающей запятой, результатом будет число с плавающей запятой. Это становится более сложным, когда мы начинаем разбираться с порядком операций, но на данный момент помните, что это работает:
```C
double result = 23.0 / 2;
```
# Полный пример
```C
#include <stdio.h>
// This is a comment. It gets ignored by the compiler, so we can write notes after the double slashes.
int main(void) {
int a = 3;
int b = 5;
int result = 0;
// Doing things with variables:
result = a + b;
printf("a plus b = %i \n", result);
// You can also do the operation inside the printf.
// Here's an example of that with subtraction:
printf("a minus b = %i \n", ab);
// You don't need to do this with variables at all.
// Here's an example of that with multiplication:
printf("10 times 5 = %i \n", 10*5);
// Here's a look at division.
// Notice that the decimals are truncated because we're dealing with integers.
printf("12 divided by 5 = %i \n", 12/5);
// Now let's force floating point numbers by including a decimal.
// Notice that even though these are integers, the decimal forces them to be
// treated as floating point numbers, so they aren't truncated.
// Note that I'm printing a double with %d, not an int with %i.
printf("12.0 divided by 5 = %d \n", 12.0/5);
return 0;
}
```
Дайте этому пробегу посмотреть, что происходит, и обязательно играйте с операторами и ценностями, чтобы узнать, что и как все меняется.
# Математическая библиотека
C предоставляет математическую библиотеку ( `math.h` ), которая предоставляет множество полезных математических функций. Например, мощность числа может быть рассчитана как:
```c
#include<math.h>
int result = pow(2,3) // will result in 2*2*2 or 8
```
Некоторые другие ( `math.h` ) библиотечные функции, которые могут оказаться полезными:
`#include <math.h> double angle = cos(90.00); // Givs us 0.00 int result = sqrt(16); // Gives us 4 double result = log(10.00) // Gives us 2.30 (note this is ln(10), not log base 10)`
// C-код для иллюстрации // использование функции ceil.
# включают
# включают
int main () { float val1, val2, val3, val4;
val1 = 1,6; val2 = 1,2; val3 = -2,8; val4 = -2,3;
printf ("value1 =% .1lf \\ n", ceil (val1)); printf ("value2 =% .1lf \\ n", ceil (val2)); printf ("value3 =% .1lf \\ n", ceil (val3)); printf ("value4 =% .1lf \\ n", ceil (val4));
Возвращение (0); }
# Прежде чем продолжить ...
## Обзор
* Существует несколько основных операторов:
* `+` для добавления
* `-` для вычитания
* `*` для умножения
* `/` для деления
* `%` по модулю
* Кроме того, есть еще несколько операторов, но мы подробно рассмотрим их позже.
* Целочисленная математика - это вещь, о которой довольно сложно.
* C очень строг относительно типов данных
* Если задействованы только целые числа, возвращается целое число
* Если в операции задействован номер с плавающей запятой, эта часть операции становится плавающей точкой
* C предоставляет библиотеку `math.h` с несколькими функциями, такими как `pow` для вычисления мощности числа.