В PascalABC.NET составной оператор также называется блоком. (традиционно в Паскале блоком называется раздел описаний, после которого идет составной оператор; в PascalABC.NET принято другое решение, поскольку можно описывать переменные непосредственно внутри составного оператора).Операторы отделяются один от другого символом ";". Ключевые слова begin и end, окаймляющие операторы, называются операторными скобками.

Например:

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);

<p>Пустой оператор</p>

Пустой оператор не включает никаких символов, не выполняет никаких действий и используется в двух случаях:

1. Для использования символа ; после последнего оператора в блоке:

begin

a := 1;

b := a;

end

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

label a;

begin

goto a;

x := 1;

a:

end

<p>Условный оператор</p>

Условный оператор имеет полную и краткую формы.

Полная форма условного оператора выглядит следующим образом:

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;

<p>Оператор описания переменной</p>

В 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 := x -> x*x;

Внутриблочные описания используются чтобы не захламлять раздел описаний описанием вспомогательных переменных. Кроме этого, внутриблочные описания позволяют вводить переменные именно в тот момент когда они впервые потребовались. Оба этих фактора существенно повышают читаемость программы.

<p>Оператор выбора</p>

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

case переключатель of

список выбора 1: оператор1;

...

список выбора N: операторN;

else оператор0

end;

Переключатель представляет собой выражение порядкового типа или строкового типа, а списки выбора содержат константы совместимого по присваиванию типа. Как и в операторе if, ветка else может отсутствовать.

Перейти на страницу:

Похожие книги