Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л2.doc
Скачиваний:
13
Добавлен:
11.04.2015
Размер:
233.47 Кб
Скачать

2.8 Выражения

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

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

Операнды представляют собой «элементарные» значения; ими могут быть переменные, константы, вызовы функций.

Примеры выражений:

a+b+c*2

a/b/c

7-a*(sin(x)+2)

a=b

(2>3)=(7<>10)

pred('x')<x

(not(2>3))or(1=1)

true<=false

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

Поэтому выражения должны быть синтаксически правильными.

Примеры неправильных выражений:

2**3

e==3

(2+1))

true+false

not (a) - недопустимо, если a не булевского типа.

Синтаксис выражений предусматривает определенное старшинство операций (приоритеты); приоритеты задают очередность выполнения операций, указанных в выражении. Круглые скобки предназначены для указания порядка (очередности) вычислений, если необходимо изменить тот порядок действий, который определен приоритетами операций.

Перечень операций в порядке убывания приоритета:

4) not

3) *, /, div, mod, and

2) +, -, or

1) =, <>, <,>, <=, >=

Выражение ничего не говорит, что делать с полученным результатом (значением).

2.9 Оператор присваивания

В результате выполнения оператора присваивания переменная получает значение выражения.

<оператор присваивания> ::= <переменная>:=<выражение>

Выражение в правой части должно иметь тот же тип, что и переменная.

Арифметический оператор присваивания

Тип выражения - integer или real. Разрешается вещественной переменной присваивать целое значение.

Пример:

const

pi=3.14159;

var

x,a,b,c,r:real;

i:integer;

begin

.........

x:=0;

i:=i+1; {пример использования предыдущего значения переменной}

c:=sqrt(a*a+b*b);

x:=2*pi*r;

{следующие присваивания - неправильны}

3:=i+2;

x=2*pi*r;

i:=5/4;

x:=a*-b/2; {два знака операции не допускаются подряд}

.........

end.

Логический оператор присваивания

В левой части оператора присваивания присутствует переменная типа boolean.

Примеры:

var

d,b,c:boolean;

x,y:real;

k:integer;

begin

.......

d:=x<2*y;

d:=true;

d:=odd(k);

d:=not not b;

d:=not(not(b));

c:=d and (x<>y) and b;

c:=(b or d) and not b;

c:=(d or b) < not c;

{неправильно =>} c:=d or x>y;

{ правильно c:=d or (x>y);}

.............

end.

Литерный оператор присваивания

В левой части оператора присваивания присутствует переменная типа char. Справа может быть только константа, переменная или функция.

Примеры:

var

sym,alpha,beta:char;

begin

......

sym:='+';

alpha:=sym;

beta:=succ(sym);

alpha:=chr(40);

......

end.