Арифметические операции
|
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. Подумайте, как можно её усовершенствовать.