Арифметические операции

Lazarus IDE: Основы программирования в Windows Lazarus IDE: Основы программирования в Windows

Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее...

Мы уже более-менее разобрались с выражениями, операторами и операциями. Теперь будем изучать операции более конкретно. И начнём с самых простых и с самых распространённых. А это, в первую очередь, арифметические операции.

Понятно, что арифметические операции используются для соответствующих вычислений. Каждой арифметической операции соответствует свой оператор. Вычисления можно выполнять с целыми и вещественными числами. Однако есть нюансы, о которых мы будем говорить позже. А пока перечислим операторы, которые используются для выполнения арифметических операций.

Таблица 15.1. Бинарные арифметические операторы.

Оператор Операция Типы данных
+ Сложение Целые, вещественные
- Вычитание Целые, вещественные
* Умножение Целые, вещественные
/ Деление Вещественные
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.

ВАЖНО!
При бинарных операциях результат будет целого типа, если ОБА операнда являются выражениями целого типа. Если хотя бы один из операндов является выражением вещественного типа, то и результат будет иметь вещественный тип.

Это означает, что такой код:

Листинг 15.1. Ошибка при компиляции.

var x, y  : integer;
    z     : single;

begin
  x := 2;
  y := 10;
  z := 20;
  x := y + z;    //ОШИБКА!!!
end.

Вызовет ошибку во время компиляции.

Кроме бинарных, как вы помните из предыдущего урока, есть ещё и унарные операции.

Таблица 15.2. Унарные операторы.

Оператор Операция Типы данных
+ Тождество Целые, вещественные
- Отрицание Целые, вещественные

Используются эти знаки также, как и в математике. Например,

y := +y;
х := -y;

А теперь попробуем применить полученные знания на практике. Напишем программу - простой калькулятор, который будет принимать от пользователя два числа и выполнять над ними три операции: сложение, вычитание и умножение.

Листинг 15.2. Простой калькулятор.

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


Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика