АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ И ОПЕРАЦИИ
ВЫРАЖЕНИЯ, ОПЕРАЦИИ, ОПЕРАНДЫ
Конструкция языка, задающая порядок выполнения действий над элементами данных, называется выражением. Выражение в программировании служит для определения действий, которые в математике обычно описываются формулами. Выражение состоит из операндов – величин и выражений, над которыми производится операция (константы и переменные всех типов, обращения к функциям); круглых скобок и знаков операций. Операции определяют действия, которые надо выполнить над операндами. В простейшем случае выражение может состоять из одной переменной или константы. Круглые скобки ставятся так же, как и в обычных арифметических выражениях для управления порядком выполнения операций.
Операции в языке Pascal делятся на арифметические, отношения, логические (булевские), операцию @, строковые и другие. Выражения соответственно называются арифметическими, отношения, логическими, строковыми и т.д. в зависимости от того, какого типа операнды и операции в них используются. Тип значения, вычисляемого с помощью выражения, определяется типом его операндов и знаками выполняемых над ними операций. Операции могут быть унарными и бинарными. Унарной называется операция, относящаяся к одному операнду, и всегда записывается перед ним. Бинарной называется операция, выражающая отношение между двумя операндами, и записывается между ними.
Арифметическим выражением называется комбинация, состоящая из арифметических констант и переменных, стандартных функций и использующая только знаки арифметических операций и круглые скобки. Порядок вычисления выражения определяется скобками и старшинством операций. Результатом вычисления арифметического выражения является целое или действительное (вещественное) значение. Рассмотрим арифметические операции, которые можно производить над числовыми данными.
Операция | Обозначение | Тип операндов | Тип результата |
Умножение | A*B | real; integer | real; integer |
Деление | A/B | real; integer | real; integer |
Целая часть от деления | A divB | integer | integer |
Остаток от деления | A modB | integer | integer |
Сложение | A+B | real; integer | real; integer |
Вычитание | A-B | real; integer | real; integer |
Операция сложения (+), вычитания (-), умножения (*) и деления (/) выполняются так же, как и в обычных арифметических выражениях.
Целочисленное деление (div) отличается от обычной операции деления тем, что вычисляет целую часть частного, дробная часть отбрасывается. Перед выполнением операции оба операнда округляются до целых значений. Результат целочисленного деления всегда равен нулю, если делимое меньше делителя.
Например: Выражение Результат
11 div 5 2
10 div 3 3
2 div3 0
Остаток от деления (mod) вычисляет остаток, полученный при выполнении целочисленного деления.
Например: Выражение Результат
10mod5 0
11 mod5 1
10mod 3 1
14 mod 5 4
При вычислении арифметических выражений действуют обычные правила старшинства операций: в первую очередь выполняются умножение и деление, а потом - сложение и вычитание. Операции div и modимеют тот же приоритет, что и операции умножения и деления. Из двух операций одинакового старшинства первой выполняется та, знак которой встречается раньше. Круглые скобки изменяют естественный порядок вычислений. Выражение, заключенное в круглые скобки, перед выполнением вычисляется как отдельный операнд. Все данные, входящие в арифметическое выражение, должны быть одного типа. Однако допускается использование в одной операции данных целого и действительного типа, результат которой при этом будет действительного типа.
Необходимо отметить, что в Pascal нет операции возведения в степень. Возведение в целую степень рекомендуется производить путем многократного умножения, а в вещественную - логарифмированием. Для возведения переменной х в некоторую степень а, т.е. нахождение , используется равенство
, запись на Pascal - exp(a*ln(x)).
При составлении арифметических выражений следует придерживаться следующих правил:
1. Записывать все составные части выражения в одну строку. Например:
Запись на Pascal: (a1*x1+b2*x2+5*a3*x3)/(25*d-14*g)
2. Использовать скобки только одного вида - круглые.
3. Нельзя записывать подряд два знака арифметических операций.
3*a*b/-z -неверная запись
3*a*b/(-z) - верная запись
4. Вычисления выполняются слева на право в соответствии с приоритетом
операций: вычисление функций - умножение, деление, div, mod - сложение и
вычитание.
Если аргумент функции представляет собой выражение, то сначала определяется значение этого выражения.
Например:
Запись на Pascal:
0.3*(((sin(x)*sin(x)-sqr(cos(x)))/sin((x+y)/2)-exp(abs(cos(x)+sin(x))))*ln(x)-sqrt(x-1))
ЗАДАНИЕ: какие результаты выполнения выражений неправильны?
1). 24/12=2 5). 2 div 3=1
2). 11 div 5=1 6). 6*5=30
3). 10 div 3=3 7). 11 mod 5=1
4). 15+21 div 2=25 8). 14 mod (5+3)=2