Согласие на обработку персональных данных.



04.09.2017
Новая задача Программа вычисления суммы.

03.09.2017
Новое видео Стековый калькулятор и обратная польская запись.

26.08.2017
Новая статья Версии Делфи.

23.08.2017
Новая статья Для кого пишется программа.

13.08.2017
Новая статья Стандарт C++: общие сведения.

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

Основы программирования Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

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

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

Таблица 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

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