Лекция №8. Выражения и стандартные функции языка ТР. Арифметические операции в ТР

Действия, которые должен выполнить компьютер, указываются в выражениях. Выражениезадает порядок выполнения действий над данными и состоит из операндов, круглых скобок и знаков операций.

Операнды – это константы, переменные и функции языка ТР.Операции –это действия, выполняемые над операндами.Круглые скобки используются для изменения последовательности выполнения операций в выражении. Унарныеоперации, такие как смена знака (-а), относятся к одному операнду, бинарные – связывают два (а+в).

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

Операция Действие Тип операндов Тип результата
+ Сложение Целый, действительный Целый, действительный
- Вычитание -"- -"-
* Умножение -"- -"-
/ Деление -"- -"-
Div Целочисленное деление Целый Целый
Mod Остаток от деления -"- -"-

Операции DIV и MOD

Целочисленное деление DIV отличается от обычной операции деления тем, что возвращает целую часть частного, а дробная часть отбрасывается, например: 13 div 3 = 4. Результат div всегда равен нулю, если делимое меньше делителя. Например:

11 div 5 = 2

17 div –5 = -3

Взятие остатка от деления mod вычисляет остаток, полученный при выполнении целочисленного деления. Например:

10 mod 5 = 0

11 mod 5 = 1

Результат выполнения выражения заносится в переменную с помощью оператора присваивания.

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

Стандартные функции в языке ТР

В арифметических выражениях часто используются следующие стандартные функции:

Стандартная функция Выполняемое действие Тип
аргумента результата
abs(x) |x| real real
integer integer
sqr(x) x2 real real
integer integer
sqrt(x) Лекция №8. Выражения и стандартные функции языка ТР. Арифметические операции в ТР - student2.ru real real
integer real
exp(x) ex real real
integer real
ln(x) ln(x) real real
integer real
pi число пи - real
sin(x) sin(x) real real
integer real
cos(x) cos(x) real real
integer real
arctan(x) arctg(x) real real
integer real

Есть еще несколько процедур и функций, которые также используются в программах:

  • random(диапазон) –возвращает случайное число х, лежащее между 0<=x< диапазон.Если диапазон не указан, то функция возвращает число х в диапазоне 0<=x<1.Передпервым обращением к этой функции надо инициировать генератор случайных чисел с помощью процедуры randomize. В противном случае всегда будут выдаваться одни и те же числа.
  • dec(x,n) –процедура, которая уменьшает значение целочисленной переменной на n.

Например: x:= 10; dec(x,2); - результат = 8. Если функцию применить без обязательного параметра n,то значение x уменьшится на 1.



  • inc(x,n) - процедура, которая увеличивает значение целочисленной переменной на n.

Например: x:= 10; inc(x,3); - результат = 13. Если функцию применить без обязательного параметра n,то значение x увеличится на 1.

  • frac(x) –функция, котораявычисляет дробную часть x.

Например: write(frac(0.25*11):4:2); - результат = 0.75;

  • int(x) –функция, котораявычисляет целую часть числа x.

Например: write(int (422.117):4:2); - результат = 422.00;

  • оdd(x) –функция определяющая четность или нечетность числа x.Результат возвращает true, если число нечетное и false – если число четное.

Условные операторы обеспечивают выполнение или невыполнение некоторого оператора в зависимости от справедливости проверяемого условия. Эти операторы прерывают естественную линейную последовательность алгоритма, после чего алгоритм может пойти по одной из двух или более возможных ветвей в соответствии с заданным условием. Такая алгоритмическая конструкция называется ветвлением.

Проверяемое условие обычно записывается в виде логического выражения, состоящего из одного или нескольких отношений.

Основные операции отношения

Операция Название Выражение Результат
= Равно A = B true, если А равно В
<> Не равно A <> B true, если А не равно В
> Больше A > B true, если А больше В
< Меньше A < B true, если А меньше В
>= Больше или равно A >= B true, если А больше или равно В
<= Меньше или равно A <= B true, если А меньше или равно В
in Принадлежность A in B true, если А находится в списке В

Операции отношениявыполняют сравнение двух операндов и определяют, истинно значение отношения или ложно. Результат проверки любого условия, каким бы сложным оно не было, всегда имеет тип – Boolean.

Следует знать:

­ В ТР нельзя записать двустороннее неравенство вида 1 < x < 2. Нужно использовать логическое выражение (x > 1) and (x < 2); and – логическое И (умножение).

­ Нельзя писать x=y=z. Нужно записывать так (x = y) and (x = z);

Логические выражения можно использовать в операторах присваивания и вывода. Например:

Const

a = 1; b = 2;

Var

fl: Boolean;

Begin

fl:= a > b;

writeln('a = ', a,'; b = ', b);

writeln('a > b – ', fl,'; a < b –', a < b);

End.

В ТР имеются две реализации ветвления. Это условный оператор IF и оператор выбора CASE.

Условный оператор IF

Условный оператор IF записывается двумя способами:

1-ый способ:

if <условие> then

Begin

<оператор1>;

<оператор2>;

. . .

End

Else

Begin

<оператор5>;

<оператор6>;

. . .

end;

2-ой способ:

if <условие> then

Begin

<оператор1>;

<оператор2>;

. . .

end;

Выполнение оператора начинается с вычисления условия и, если оно истинно, то выполняются операторы, стоящие после служебного слова then, а если ложно, то выполняются операторы, стоящие за служебным словомelse. Часть оператора, стоящая после служебного словаelse,может отсутствовать.

В этом случае выполнение передается операторам, стоящим после ';'.

Один оператор ifможет входить в другой оператор if. В этом случае говорят о вложенности операторов.

Графическое представление оператора IF представлено на следующих рисунках.

условие
оператор1
оператор2
условие
оператор

да
нет
нет

да

Вариант 1.

if <условие1> then

if <условие2> then

<оператор1>

Else

<оператор2>

Else

<оператор3>;

Вариант 2.

if <условие1> then

<оператор1>

Else

if <условие2> then

<оператор2>

Else

<оператор3>;

Вариант 3.

if <условие1> then

if <условие2> then

<оператор1>

Else

<оператор2>;

Следует знать, что:

­ при вложенности операторов каждое elseсоответствует тому then, которое непосредственно ему предшествует;

­ конструкций со степенью вложенности более 2 – 3 следует избегать из-за сложности их анализа;

­ в условных операторах часто используется составной оператор begin… end;

­ в условных операторах не ставится ';' после then и перед else.

Оператор безусловного перехода GOTO имеет общий вид:

GOTO <метка>;

где метка – любое целое число без знака в диапазоне от 0 до 9999 или буквенное выражение. Метка ставится перед оператором, которому передается управление и отделяется от него двоеточием. Метка должна быть описана в разделе LABEL.

Оператор выбора Case

При реализации алгоритма, имеющего более двух ветвей, иногда вместо нескольких вложенных друг в друга операторов IF удобно использовать оператор выбора CASE. Общий вид оператора:

CASE <выражение-селектор> OF

<список1 значений селектора> : begin

<инструкции 1;>

end;

<список2 значений селектора> : begin

<инструкции 2;>

end;

<списокN значений селектора> : begin

<инструкции N;>

End

ELSE

Begin

<инструкции;>

end;

END;

Ветвь ELSE может отсутствовать.

Выполнение оператора CASE начинается с вычисления выражения-селектора. Инструкциимежду beginи end выполняются в том случае, если значение выражения после слова CASE совпадает со значением селектора из соответствующего списка. Если это не так, то выполняются инструкции, идущие после ELSE. Если же ELSEотсутствует, то управление передается оператору, стоящему за оператором CASE.

Селектор может иметь только следующий тип данных: интервальный, перечисляемый, логический, символьный и целый типы.

Наши рекомендации