freeCodeCamp/guide/russian/c/math/index.md

172 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
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` ), которая предоставляет множество полезных математических функций. Например, мощность числа может быть рассчитана как:
```#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` для вычисления мощности числа.