Операторы +=, -=, *=, /= могут также использоваться со свойствами классов соответствующих типов в левой части.
Составной оператор (блок)
Составной оператор предназначен для объединения нескольких операторов в один. Он имеет вид:
begin
операторы
end
В PascalABC.NETсоставной оператор также называется блоком . (традиционно в Паскале блоком называется раздел описаний, после которого идет составной оператор; в PascalABC.NETпринято другое решение, поскольку можно описывать переменные непосредственно внутри составного оператора).Операторы отделяются один от другого символом ";". Ключевые слова beginи end, окаймляющие операторы, называются операторными скобками .
Например:
s := 0;
p := 1;
forvar i:=1 to10 do
begin
p := p * i;
s := s + p
end
Перед endтакже может ставиться ;. В этом случае считается, что последним оператором перед endявляется пустой оператор, не выполняющий никаких действий.
Помимо операторов, в блоке могут быть внутриблочные описания переменных:
begin
vara,b: integer;
varr: real;
readln(a,b);
x := a/b;
writeln(x);
Пустой оператор не включает никаких символов, не выполняет никаких действий и используется в двух случаях:
1. Для использования символа ; после последнего оператора в блоке:
begin
a := 1;
b := a;
end
Поскольку в языке Паскаль символ ; разделяет операторы, то в приведенном выше коде считается, что после последней ; находится пустой оператор. Таким образом, ; перед end в блоке можно либо ставить, либо нет. 1. Для пометки места, следующего за последним оператором в блоке::
labela;
begin
gotoa;
x := 1;
a:
end
Условный оператор имеет полную и краткую формы.
Полная форма условного оператора выглядит следующим образом:
ifусловие thenоператор1
elseоператор2
В качестве условия указывается некоторое логическое выражение. Если условие оказывается истинным, то выполняется оператор1, в противном случае выполняется оператор2. Краткая форма условного оператора имеет вид:
ifусловие thenоператор
Если условие оказывается истинным, то выполняется оператор, в противном случае происходит переход к следующему оператору программы.
В случае конструкции вида
ifусловие1 then
ifусловие2 thenоператор1
elseоператор2
elseвсегда относится к ближайшему предыдущему оператору if, для которого ветка elseеще не указана. Если в предыдущем примере требуется, чтобы elseотносилась к первому оператору if, то необходимо использовать составной оператор:
ifусловие1 then
begin
ifусловие2 thenоператор1
end
elseоператор2
Например:
ifathen
min := a
elsemin := b;
Оператор описания переменной
В PascalABC.NETможно описывать переменные внутри составного оператора begin-end в специальном операторе описания переменной. Такие описания называются внутриблочными.
Внутриблочное описание имеет одну из форм:
список имен: тип;
или
имя: тип := выражение;
или
имя: тип = выражение; // Для совместимости с Delphi
или
имя := выражение;
Имена в списке перечисляются через запятую. Например:
begin
vara1,a2,a3: integer;
varn: real := 5;
vars := ' ';
...
В последнем случае тип переменной автовыводится по типу выражения в правой части. Автовыведение типа активно используется при инициализации переменной вызовом конструктора или функции. возвращающей объект:
begin
varl := new List;
var a := Seq(1,3,5); // тип a выводится по типу возвращаемого значения Seq: array of integer
Автовыведение типа при описании невозможно при инициализации переменной лямбда-выражением:
// varf := x -> x*x; // так нельзя!
var f : Func := x -> x*x;
Внутриблочные описания используются чтобы не захламлять раздел описаний описанием вспомогательных переменных. Кроме этого, внутриблочные описания позволяют вводить переменные именно в тот момент когда они впервые потребовались. Оба этих фактора существенно повышают читаемость программы.
Читать дальше