HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>На базовом уровне компьютеры оперируют только числами. Даже в прикладных программах на высокоуровневых языках внутри много чисел и операций над ними. К счастью, для старта достаточно знать обычную арифметику - с нее и начнем.</p>
1 <p>На базовом уровне компьютеры оперируют только числами. Даже в прикладных программах на высокоуровневых языках внутри много чисел и операций над ними. К счастью, для старта достаточно знать обычную арифметику - с нее и начнем.</p>
2 <p>Для сложения двух чисел в математике мы пишем, например, 3 + 4. В программировании - то же самое. Вот программа, складывающая два числа:</p>
2 <p>Для сложения двух чисел в математике мы пишем, например, 3 + 4. В программировании - то же самое. Вот программа, складывающая два числа:</p>
3 <p>Инструкция 3 + 4; заставит компьютер сложить числа и узнать результат. Если запустить эту программу, то ничего не произойдет. А если быть точными, то компьютер вычислит сумму, но на этом все. Результат сложения никак не используется, и такая программа не представляет никакого интереса. Нам нужно попросить компьютер сложить 3 + 4<strong>и</strong>дать команду сделать что-то с результатом. Например, вывести его на экран:</p>
3 <p>Инструкция 3 + 4; заставит компьютер сложить числа и узнать результат. Если запустить эту программу, то ничего не произойдет. А если быть точными, то компьютер вычислит сумму, но на этом все. Результат сложения никак не используется, и такая программа не представляет никакого интереса. Нам нужно попросить компьютер сложить 3 + 4<strong>и</strong>дать команду сделать что-то с результатом. Например, вывести его на экран:</p>
4 <p>Всегда отбивайте арифметические операторы пробелами от самих чисел (операндов) - это хороший стиль программирования. Поэтому в наших примерах console.log(3 + 4), а не console.log(3+4).</p>
4 <p>Всегда отбивайте арифметические операторы пробелами от самих чисел (операндов) - это хороший стиль программирования. Поэтому в наших примерах console.log(3 + 4), а не console.log(3+4).</p>
5 <p>Кроме сложения, доступны следующие операции:</p>
5 <p>Кроме сложения, доступны следующие операции:</p>
6 <ul><li>* - умножение</li>
6 <ul><li>* - умножение</li>
7 <li>/ - деление</li>
7 <li>/ - деление</li>
8 <li>- - вычитание</li>
8 <li>- - вычитание</li>
9 <li>% -<a>остаток от деления</a></li>
9 <li>% -<a>остаток от деления</a></li>
10 <li>** - возведение в степень</li>
10 <li>** - возведение в степень</li>
11 </ul><p>Теперь давайте выведем на экран результат деления, а потом результат возведения в степень:</p>
11 </ul><p>Теперь давайте выведем на экран результат деления, а потом результат возведения в степень:</p>
12 <p>Первая инструкция выведет на экран 4 (потому что 8 / 2 это 4), а вторая инструкция выведет на экран 9 (потому что 32 это 9).</p>
12 <p>Первая инструкция выведет на экран 4 (потому что 8 / 2 это 4), а вторая инструкция выведет на экран 9 (потому что 32 это 9).</p>
13 <h2>Операторы</h2>
13 <h2>Операторы</h2>
14 <p>Перед тем, как двигаться дальше, разберем базовую терминологию. Знак операции, такой как +, называют<strong>оператором</strong>. Операторы выполняют операции над определенными значениями, которые называются<strong>операндами</strong>. Сами операторы обычно представлены одним или несколькими символами. Реже словом. Подавляющее большинство операторов соответствуют математическим операциям.</p>
14 <p>Перед тем, как двигаться дальше, разберем базовую терминологию. Знак операции, такой как +, называют<strong>оператором</strong>. Операторы выполняют операции над определенными значениями, которые называются<strong>операндами</strong>. Сами операторы обычно представлены одним или несколькими символами. Реже словом. Подавляющее большинство операторов соответствуют математическим операциям.</p>
15 <p>В этом примере + - это<strong>оператор</strong>, а числа 8 и 2 - это<strong>операнды</strong>.</p>
15 <p>В этом примере + - это<strong>оператор</strong>, а числа 8 и 2 - это<strong>операнды</strong>.</p>
16 <p>В случае сложения у нас есть два операнда: один слева, другой справа от знака +. Операции, которые требуют наличия двух операндов, называются<strong>бинарными</strong>. Если пропустить хотя бы один операнд, например, 3 + ;, то программа завершится с синтаксической ошибкой.</p>
16 <p>В случае сложения у нас есть два операнда: один слева, другой справа от знака +. Операции, которые требуют наличия двух операндов, называются<strong>бинарными</strong>. Если пропустить хотя бы один операнд, например, 3 + ;, то программа завершится с синтаксической ошибкой.</p>
17 <p>Операции (не операторы) бывают не только бинарными, но и унарными (с одним операндом), и даже тернарными (с тремя операндами)! Причем операторы могут выглядеть одинаково, но обозначать разные операции.</p>
17 <p>Операции (не операторы) бывают не только бинарными, но и унарными (с одним операндом), и даже тернарными (с тремя операндами)! Причем операторы могут выглядеть одинаково, но обозначать разные операции.</p>
18 <p>Выше пример применения унарной операции к числу 3. Оператор минус перед тройкой говорит интерпретатору взять число 3 и найти противоположное, то есть -3.</p>
18 <p>Выше пример применения унарной операции к числу 3. Оператор минус перед тройкой говорит интерпретатору взять число 3 и найти противоположное, то есть -3.</p>
19 <p>Это немного может сбить с толку, потому что -3 - это одновременно и число само по себе, и оператор с операндом, но у языков программирования такая структура.</p>
19 <p>Это немного может сбить с толку, потому что -3 - это одновременно и число само по себе, и оператор с операндом, но у языков программирования такая структура.</p>
20 <h2>Коммутативная операция</h2>
20 <h2>Коммутативная операция</h2>
21 <p>Мы все помним со школы: "от перемены мест слагаемых сумма не меняется". Это один из базовых и интуитивно понятных законов арифметики, он называется<strong>коммутативным законом</strong>.</p>
21 <p>Мы все помним со школы: "от перемены мест слагаемых сумма не меняется". Это один из базовых и интуитивно понятных законов арифметики, он называется<strong>коммутативным законом</strong>.</p>
22 <p>Бинарная операция считается коммутативной, если поменяв местами операнды, вы получаете тот же самый результат. Очевидно, что сложение - коммутативная операция:<em>3 + 2 = 2 + 3</em>.</p>
22 <p>Бинарная операция считается коммутативной, если поменяв местами операнды, вы получаете тот же самый результат. Очевидно, что сложение - коммутативная операция:<em>3 + 2 = 2 + 3</em>.</p>
23 <p>А вот является ли коммутативной операция вычитания? Конечно, нет:<em>2 - 3 ≠ 3 - 2</em>. В программировании этот закон работает точно так же, как в арифметике.</p>
23 <p>А вот является ли коммутативной операция вычитания? Конечно, нет:<em>2 - 3 ≠ 3 - 2</em>. В программировании этот закон работает точно так же, как в арифметике.</p>
24 <p>Более того, большинство операций, с которыми мы будем сталкиваться в реальной жизни, не являются коммутативными. Отсюда вывод: всегда обращайте внимание на порядок того, с чем работаете.</p>
24 <p>Более того, большинство операций, с которыми мы будем сталкиваться в реальной жизни, не являются коммутативными. Отсюда вывод: всегда обращайте внимание на порядок того, с чем работаете.</p>
25 <h2>Композиция операций</h2>
25 <h2>Композиция операций</h2>
26 <p>А что, если понадобится вычислить такое выражение: 3 * 5 - 2? Именно так мы и запишем:</p>
26 <p>А что, если понадобится вычислить такое выражение: 3 * 5 - 2? Именно так мы и запишем:</p>
27 <p>Обратите внимание, что интерпретатор производит арифметические вычисления в правильном порядке: сначала деление и умножение, потом сложение и вычитание. Иногда этот порядок нужно изменить - об этом поговорим дальше. Или другой пример:</p>
27 <p>Обратите внимание, что интерпретатор производит арифметические вычисления в правильном порядке: сначала деление и умножение, потом сложение и вычитание. Иногда этот порядок нужно изменить - об этом поговорим дальше. Или другой пример:</p>
28 <p>Как видно, операции можно соединять друг с другом, получая возможность вычислять все более сложные составные выражения. Чтобы представить себе то, как происходят вычисления внутри интерпретатора, давайте разберем пример: 2 * 4 * 5 * 10.</p>
28 <p>Как видно, операции можно соединять друг с другом, получая возможность вычислять все более сложные составные выражения. Чтобы представить себе то, как происходят вычисления внутри интерпретатора, давайте разберем пример: 2 * 4 * 5 * 10.</p>
29 <ol><li>Сначала вычисляется 2 * 4 и получается выражение 8 * 5 * 10.</li>
29 <ol><li>Сначала вычисляется 2 * 4 и получается выражение 8 * 5 * 10.</li>
30 <li>Затем 8 * 5. В итоге имеем 40 * 10.</li>
30 <li>Затем 8 * 5. В итоге имеем 40 * 10.</li>
31 <li>В конце концов происходит последнее умножение, и получается результат 400.</li>
31 <li>В конце концов происходит последнее умножение, и получается результат 400.</li>
32 </ol><p>Таким образом, интерпретатор соединяет сложные составные выражения, последовательно выполняя заложенные в них арифметические действия, по умолчанию соблюдая правильный порядок: сначала умножение и деление, затем - сложение и вычитание.</p>
32 </ol><p>Таким образом, интерпретатор соединяет сложные составные выражения, последовательно выполняя заложенные в них арифметические действия, по умолчанию соблюдая правильный порядок: сначала умножение и деление, затем - сложение и вычитание.</p>
33 <h2>Приоритет операций</h2>
33 <h2>Приоритет операций</h2>
34 <p>Посмотрите внимательно на выражение 2 + 2 * 2 и посчитайте в уме ответ.</p>
34 <p>Посмотрите внимательно на выражение 2 + 2 * 2 и посчитайте в уме ответ.</p>
35 <p>Правильный ответ: 6. Если у вас получилось 8, то этот раздел для вас. В школьной математике мы изучали понятие "приоритет операции". Приоритет определяет то, в какой последовательности должны выполняться операции. Например, умножение и деление имеют больший приоритет, чем сложение и вычитание, а приоритет возведения в степень выше всех остальных арифметических операций: 2 ** 3 * 2 вычислится в 16.</p>
35 <p>Правильный ответ: 6. Если у вас получилось 8, то этот раздел для вас. В школьной математике мы изучали понятие "приоритет операции". Приоритет определяет то, в какой последовательности должны выполняться операции. Например, умножение и деление имеют больший приоритет, чем сложение и вычитание, а приоритет возведения в степень выше всех остальных арифметических операций: 2 ** 3 * 2 вычислится в 16.</p>
36 <p>Но нередко вычисления должны происходить в порядке, отличном от стандартного приоритета. В сложных ситуациях приоритет можно (и нужно) задавать круглыми скобками, точно так же, как в школе, например: (2 + 2) * 2.</p>
36 <p>Но нередко вычисления должны происходить в порядке, отличном от стандартного приоритета. В сложных ситуациях приоритет можно (и нужно) задавать круглыми скобками, точно так же, как в школе, например: (2 + 2) * 2.</p>
37 <p>Скобки можно ставить вокруг любой операции. Они могут вкладываться друг в друга сколько угодно раз. Вот пара примеров:</p>
37 <p>Скобки можно ставить вокруг любой операции. Они могут вкладываться друг в друга сколько угодно раз. Вот пара примеров:</p>
38 <p>Иногда выражение сложно воспринимать визуально. Тогда можно расставить скобки, не повлияв на приоритет. Например:</p>
38 <p>Иногда выражение сложно воспринимать визуально. Тогда можно расставить скобки, не повлияв на приоритет. Например:</p>
39 <p>Было:</p>
39 <p>Было:</p>
40 <p>Стало:</p>
40 <p>Стало:</p>
41 <p>Запомните: код пишется для людей, потому что код будут читать люди, а машины будут только исполнять его. Для машин код - или корректный, или не корректный, для них нет "более" понятного или "менее" понятного кода.</p>
41 <p>Запомните: код пишется для людей, потому что код будут читать люди, а машины будут только исполнять его. Для машин код - или корректный, или не корректный, для них нет "более" понятного или "менее" понятного кода.</p>