В PascalABC.NET составной оператор также называется
Например:
s := 0;
p := 1;
for var i:=1 to 10 do
begin
p := p * i;
s := s + p
end
Перед end также может ставиться ;. В этом случае считается, что последним оператором перед end является пустой оператор, не выполняющий никаких действий.
Помимо операторов, в блоке могут быть внутриблочные описания переменных:
begin
var a,b: integer;
var r: real;
readln(a,b);
x := a/b;
writeln(x);
Пустой оператор
Пустой оператор не включает никаких символов, не выполняет никаких действий и используется в двух случаях:
1. Для использования символа ; после последнего оператора в блоке:
begin
a := 1;
b := a;
end
Поскольку в языке Паскаль символ ; разделяет операторы, то в приведенном выше коде считается, что после последней ; находится пустой оператор. Таким образом, ; перед end в блоке можно либо ставить, либо нет. 1. Для пометки места, следующего за последним оператором в блоке::
label a;
begin
goto a;
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
Например:
if athen
min := a
else min := b;
Оператор описания переменной
В PascalABC.NET можно описывать переменные внутри составного оператора begin-end в специальном операторе описания переменной. Такие описания называются внутриблочными.
Внутриблочное описание имеет одну из форм:
список имен: тип;
или
имя: тип := выражение;
или
имя: тип = выражение; // Для совместимости с Delphi
или
имя := выражение;
Имена в списке перечисляются через запятую. Например:
begin
var a1,a2,a3: integer;
var n: real := 5;
var s := ' ';
...
В последнем случае тип переменной автовыводится по типу выражения в правой части. Автовыведение типа активно используется при инициализации переменной вызовом конструктора или функции. возвращающей объект:
begin
var l := new List
var a := Seq(1,3,5); // тип a выводится по типу возвращаемого значения Seq: array of integer
Автовыведение типа при описании невозможно при инициализации переменной лямбда-выражением:
// var f := x -> x*x; // так нельзя!
var f : Func
Внутриблочные описания используются чтобы не захламлять раздел описаний описанием вспомогательных переменных. Кроме этого, внутриблочные описания позволяют вводить переменные именно в тот момент когда они впервые потребовались. Оба этих фактора существенно повышают читаемость программы.
Оператор выбора
case переключатель of
список выбора 1: оператор1;
...
список выбора N: операторN;
else оператор0
end;
Переключатель представляет собой выражение порядкового типа или строкового типа, а списки выбора содержат константы совместимого по присваиванию типа. Как и в операторе if, ветка else может отсутствовать.