- •2 Введение в язык Паскаль Лекция 2
- •2.1 Историческая справка
- •2.2 Алфавит языка Паскаль
- •2.3 Переменные
- •2.4 Основные понятия языка Паскаль
- •2.5 Правила записи текста программы
- •Разделители
- •Правила записи
- •2.6 Система типов языка
- •2.7 Основные вычислительные структуры в Паскале
- •2.8 Выражения
- •2.9 Оператор присваивания
- •2.10 Ввод-вывод
- •2.11 Последовательное выполнение и составной оператор
- •2.12 Условный оператор
- •2.13 Оператор цикла с предусловием
- •2.14 Оператор цикла с постусловием
- •2.15 Оператор цикла с параметром
- •2.16 Примеры бесконечных циклов
- •2.17 Пустой оператор
- •2.18 Ограниченные типы
- •2.19 Функции
- •2.20 Примеры программ для задач без массивов
- •2.21 Более подробно о символьном типе
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.