Арифметические операции
Lazarus IDE: Основы программирования в Windows
Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее... |
Мы уже более-менее разобрались с выражениями, операторами и операциями. Теперь будем изучать операции более конкретно. И начнём с самых простых и с самых распространённых. А это, в первую очередь, арифметические операции.
Понятно, что арифметические операции используются для соответствующих вычислений. Каждой арифметической операции соответствует свой оператор. Вычисления можно выполнять с целыми и вещественными числами. Однако есть нюансы, о которых мы будем говорить позже. А пока перечислим операторы, которые используются для выполнения арифметических операций.
Оператор | Операция | Типы данных |
+ | Сложение | Целые, вещественные |
- | Вычитание | Целые, вещественные |
* | Умножение | Целые, вещественные |
/ | Деление | Вещественные |
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. Подумайте, как можно её усовершенствовать.