Константы и переменные разных типов используются в выражениях. Выражение задает порядок выполнения действий над элементами данных и состоит из операндов (констант, переменных, обращений к функциям), круглых скобок и знаков операций. Операции определяют действия, которые надо выполнить над операндами. Пример. В выражении (X + Y – 567) X, Y, 567 – операнды, "+", "–" – знаки операций. В простейшем случае выражение может состоять из одной переменной или константы. Круглые скобки ставятся так же, как и в обычных арифметических выражениях. Операции в языке ТР подразделяются на арифметические, отношения, логические (булевские), операцию @, строковые и др. Выражения соответственно называются арифметическими, отношения, булевскими, строковыми и т.д. в зависимости от того, какого типа операнды и операции в них используются. Операции могут быть унарными и бинарными. В первом случае операция относится к одному операнду и всегда записывается перед ним, во втором операция выражает отношение между двумя операндами и записывается между ними. Пример. – А унарная операция А + В бинарная операция. Арифметическое выражение. Результатом арифметического выражения является целое или действительное значение. Наиболее простые формы арифметического выражения: целая или действительная константа; целая или действительная переменная; элемент массива целого или действительного типа; функция, принимающая целое или действительное значение. Значение переменной или элемента массива должно быть определено до их появления в арифметическом выражении. Другие арифметические выражения составляются из указанных простых форм путем применения круглых скобок и арифметических операций. Арифметические операции выполняют арифметические действия в выражениях над значениями операндов целочисленных и вещественных типов.
арифметические выражения и операции операция действие типы операндов тип результата бинарные + сложение целый, вещественный целый, вещественный – вычитание целый, вещественный целый, вещественный * умножение целый, вещественный целый, вещественный / деление целый, вещественный вещественный div целоч. деление целый целый mod остаток целый целый and арифметич. И целый целый shl сдвиг влево целый целый shr сдвиг вправо целый целый or арифмет. ИЛИ целый целый xor исключ. ИЛИ целый целый унарные + сохранение знака – изменение знака not побитная инверсия
Операции сложения, вычитания, умножения и деления выполняются также как и в обычных арифметических выражениях. Целочисленное деление (div) отличается от обычной операции деления тем, что возвращает целую часть от частного, дробная часть отбрасывается. Результат целочисленного деления всегда равен нулю, если делитель меньше делителя. Пример. выражение результат 11 div 5 2 15 div 8 1 2 div 3 0
Деление по модулю (mod) (взятие остатка от целочисленного деления) возвращает остаток, полученный при выполнении целочисленного деления. Пример. Выражение результат 11 mod 5 1 15 mod 6 3 14 mod 5 4
Арифметическое И (and) производит логическое умножение операндов в соответствии со следующей таблицей истинности: 1 and 1 = 1 1 and 0 = 0 0 and 1 = 0 0 and 0 = 0 Операнды записываются в десятичной форме, но во время выполнения переводятся в двоичную форму. Результат возвращается в десятичной форме. Пример. А=12 , В=22. Найти А and В. А и В занимают в памяти 2 байта и в двоичной системе имеют вид: 0000000000001100 и 0000000000010110 В результате выполнения операции 00000000000001100 and 0000000000010110 в соответствии с таблицей истинности получим результат 0000000000000100, или 4 в десятичной форме. Поэтому 12 and 22 = 4.
Сдвиг влево (K shl N) возвращает в качестве результата значение, полученное путем сдвига на N позиций влево представленного в двоичной форме числа К. Пример. А=2 , В=7. Найти А shl В. А занимает в памяти 2 байта и в двоичной системе имеет вид: 00000000000000010. Сдвигаем каждый бит на 7 позиций влево, получаем 0000000100000000, или 256 в десятичной форме. Поэтому 2 shl 7 = 256.
Сдвиг вправо (shr) выполняется аналогично, но с той лишь разницей, что сдвиг производится вправо.
Логическое сложение (or) выполняет сложение операндов в двоичной форме в соответствии с таблицей истинности: 1 or 1 = 1 1 or 0 = 1 0 or 1 = 1 0 or 0 = 0 Результат выдается в десятичной форме.
Пример. А=12 , В=22. Найти А or В. А и В занимают в памяти 2 байта и в двоичной системе имеют вид: 0000000000001100 и 0000000000010110 В результате выполнения операции 00000000000001100 or 0000000000010110 в соответствии с таблицей истинности получим результат 0000000000011110, или 30 в десятичной форме. Поэтому 12 or 22 = 30.
Исключающее или (xor) производит сложение операндов в соответствии с таблицей истинности: 1 xor 1 = 0 1 xor 0 = 1 0 xor 1 = 1 0 xor 0 = 0 Результат выдается в десятичной форме. Пример. А=12 , В=22. Найти А xor В. А и В занимают в памяти 2 байта и в двоичной системе имеют вид: 00000000000001100 и 0000000000010110 В результате выполнения операции 00000000000001100 xor 00000000000010110 в соответствии с таблицей истинности получим результат 00000000000010110, или 26 в десятичной форме. Поэтому 12 xor 22 = 26.
Унарная операция сохранения знака (+) оставляет текущий знак числа без изменения. Пример. Выражение результат +(–14587) –14587 +(654) 654
Унарная операция изменения знака (–) возвращает значение операнда с противоположным знаком.
Пример. Выражение результат –(–14587) 14587 –(+654) –654
Применение операции not к данным целочисленных типов вызывает побитную инверсию двоичного кода, соответствующего данному числу. Пример. Выражение результат not 0 –1 not 78 –79
Математические стандартные функции функция название Тип аргумента Тип результата Abs (x) вычисление абсолютной величины аргумента х целый или вещественный совпадает с типом аргумента Frac (x) вычисление дробной части аргумента х вещественный вещественный Int (x) вычисление целой части аргумента х целый или вещественный вещественный Round (x) ближайшее целое аргумента х целый или вещественный целый Trunc (x) отбрасывает дробную часть аргумента х целый или вещественный целый Sqr (x) вычисление квадрата аргумента х целый или вещественный совпадает с типом аргумента Sqrt (x) вычисление квадратного корня из аргумента х целый или вещественный вещественный Exp (x) вычисление экспоненты х - ех целый или вещественный вещественный Ln (x) вычисление натурального логарифма аргумента х целый или вещественный вещественный ArcTan (x) вычисление угла, тангенс которого равен х. Значение параметра представлено в радианах в диапазоне [–π/2; π/2] целый или вещественный вещественный Cos (x) вычисление косинуса х. Значение параметра представлено в радианах целый или вещественный вещественный Sin (x) вычисление синуса х. Значение параметра представлено в радианах целый или вещественный вещественный Pi возвращает значение числа π вещественный
выражения и операции отношения Выражение отношения определяет истинность или ложность результата. Операции отношения выполняют сравнение двух операндов и определяют, истинно или ложно значение выражения. В языке ТР операции отношения более важны при написании программ, чем в других языках, т.к. они интенсивно используются для управления циклами и в условных операторах. Сравниваемые величины могут принадлежать к любому скалярному или перечисляемому типу данных. Результат всегда имеет булевский тип и принимает одно из двух значений: True(истина) или False(ложь).
таблица операций отношения Операция название выражение результат = равно А=В True, если А равно В < > не равно А<>B True, если А не равно В > больше А>B True, если А больше В < меньше А<B True, если А меньше В >= больше или равно А>=B True, если А больше или равно В <= меньше или равно А<=B True, если А меньше или равно В in принадлежность A in M True, если А находится в списке М
логические выражения и операции Результатом выполнения логического (булевского) выражения является логическое значение True или False. Операндами служат данные только булевского типа. Простейшие виды логических выражений: логическая константа; логическая переменная; элемент массива логического типа; логическая функция; выражение отношения. Другие логические выражения строятся из перечисленных путем применения логических операций и круглых скобок. таблица логических операций операция действие выражение А В результат not логическое отрицание not A True False False True
Процедуры Dec (X {,n}) – уменьшает значение целочисленной переменной Х на n. При отсутствии необязательного параметра n значение Х уменьшается на 1. Пример. Х:=10; Dec (X, 2); результат: 8. Х:=10; Dec (X); результат: 9.
Inc (X {,n}) – увеличивает значение целочисленной переменной Х на n. При отсутствии необязательного параметра n значение Х увеличивается на 1. Пример. Х:=10; Inc (X, 2); результат: 12. Х:=10; Inc (X); результат: 11. Функции Pred (S) – возвращает элемент, предшествующий S в списке значений типа. Тип результата совпадает с типом параметра. Если предыдущего элемента не существует, то возникает программное прерывание. Пример. Write (Pred (90)); результат: 89; Write (Pred (false)); результат: True; Write (Pred (true)); результат: программное прерывание; Write (Pred ('b')); результат: 'a';
Succ (S) – возвращает элемент, следующий за S в списке значений типа. Тип результата совпадает с типом параметра. Если следующего элемента не существует, то возникает программное прерывание. Пример. Write (Succ (90)); результат: 91; Write (Succ (false)); результат: программное прерывание; Write (Succ (true)); результат: True; Write (Succ ('b')); результат: 'c';
Odd (I) – возвращает значение булевского типа, равное True, если параметр I – нечетное число, и False, если параметр I –четное число. Пример. Write (Odd (90)); результат: false; Write (Odd (91)); результат: true. Функции преобразования типов Эти функции используются для преобразования значений одного скалярного типа в значения другого скалярного типа. Chr (I) – возвращает символ по коду ASCII, равному I. Результат имеет символьный тип. Если значение параметра больше, чем 255, возникает программное прерывание.
Ord (S) – возвращает порядковый номер значения S в множестве, определенном типом этого параметра. Результат имеет целочисленный тип. Если параметр имеет целочисленный тип, то это значение выдается как результат функции. Пример. Write (Ord (1485)); результат: 1485; Write (Ord ('A')); результат: 65 Var Color : (red, green, grey); Write (Ord (green)); результат: 1, т.к. нумерация начинается с нуля.
Round (X) – возвращает значение Х, округленное до ближайшего целого числа. Результат имеет целочисленный тип. Пример. Write (Round (14.85)); результат: 15; Write (Round (14.35)); результат: 14.
Trunc (X) – отбрасывает дробную часть аргумента Х. Результат имеет целочисленный тип. Пример. Write (Trunc (14.85)); результат: 14; Write (Trunc (14.99)); результат: 14.