11.02.2021
Новые видео и статья Как найти элемент в документе HTML.
02.02.2021
Новый выпуск журнала Автоматизация и Программирование.
25.01.2021
Новая задача Найти количество нулей в двоичном числе.
10.01.2021
Новый выпуск журнала Автоматизация и Программирование.
08.12.2020
Новые видео и статья Таблицы в HTML.
Арифметические операции
![]() |
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее... |
Мы уже более-менее разобрались с выражениями, операторами и операциями. Теперь будем изучать операции более конкретно. И начнём с самых простых и с самых распространённых. А это, в первую очередь, арифметические операции.
Понятно, что арифметические операции используются для соответствующих вычислений. Каждой арифметической операции соответствует свой оператор. Вычисления можно выполнять с целыми и вещественными числами. Однако есть нюансы, о которых мы будем говорить позже. А пока перечислим операторы, которые используются для выполнения арифметических операций.
Оператор | Операция | Типы данных |
+ | Сложение | Целые, вещественные |
- | Вычитание | Целые, вещественные |
* | Умножение | Целые, вещественные |
/ | Деление | Вещественные |
div | Целое деление | Целые |
mod | Остаток | Целые |
Как вы догадались, операторы div и mod нельзя использовать с вещественными числами. А оператор / нельзя использовать с целыми числами. Впрочем, это относится только к языку Паскаль. В других языках, например в С++, таких ограничений нет. С одной стороны это хорошо, но с другой - может привести к труднонаходимым ошибкам.
Арифметические операторы используются в программах примерно так:
var x, y : integer; begin x := 2; y := 10; x := x * y; //x = 20 x := x + y; //x = 30 end.
Операторы +, -, * и / вам знакомы из математики. Поэтому рассказывать о них особо нечего. А вот операторы div и mod некоторым могут показаться непонятными. Поэтому остановимся на них более подробно.
Оператор div выполняет целочисленное деление. Его можно использовать только с целыми типами данных. Как он работает?
Например,
13 div 2
будет равно 6. Хотя на самом деле 13 / 2 = 6,5. Однако, если вы используете целые типы данных, то число 6,5 вы не сможете получить в результате. Вам придётся либо записывать результат в переменную вещественного типа, либо использовать оператор div и смириться с погрешностью.
Оператор mod определяет остаток от целого деления. Например,
13 mod 2
будет равно 1, так как ближайшее целое число, которое можно разделить на 2 - это 12. А 13 - 12 = 1.
ВАЖНО!
При бинарных операциях результат будет целого типа, если ОБА операнда
являются выражениями целого типа. Если хотя бы один из операндов является выражением вещественного типа, то и результат будет иметь вещественный тип.
Это означает, что такой код:
var x, y : integer; z : single; begin x := 2; y := 10; z := 20; x := y + z; //ОШИБКА!!! end.
Вызовет ошибку во время компиляции.
Кроме бинарных, как вы помните из предыдущего урока, есть ещё и унарные операции.
Оператор | Операция | Типы данных |
+ | Тождество | Целые, вещественные |
- | Отрицание | Целые, вещественные |
Используются эти знаки также, как и в математике. Например,
y := +y;
х := -y;
А теперь попробуем применить полученные знания на практике. Напишем программу - простой калькулятор, который будет принимать от пользователя два числа и выполнять над ними три операции: сложение, вычитание и умножение.
program ariphm; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; var x, y : integer; begin Write('x = '); ReadLn(x); Write('y = '); ReadLn(y); WriteLn('x + y = ', x + y); WriteLn('x - y = ', x - y); WriteLn('x * y = ', x * y); ReadLn; end.
Почему код листинга 15.1 приведёт к ошибке во время компиляции? Исправьте код таким образом, чтобы программа откомпилировалась без ошибок. Повторите программу из листинга 15.2. Подумайте, как можно её усовершенствовать.