Управляющие конструкции языка

Условный и составной операторы

В системе программирования Delphi существует возможность составлять алгоритмы нелинейной структуры. Для этого предусмотрены специальные средства, так называемые "управляющие конструкции".

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

Управляющая конструкция для программной реализации таких алгоритмов называется условным оператором.

Условный оператор

Условный оператор реализует алгоритмическую конструкцию "развилка" (ветвление) и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоорого условия. Существует два варианта оператора.

Полная форма:

If <условие> then <оператор_1>

else <оператор_2>;

и краткая форма:

If <условие> then <оператор_1>;

В этих операторах:

<условие> — некоторое логическое выражение, истинность которого проверяется;

<оператор_1> — оператор, который выполняется, если логическое выражение <условие> истинно;

<оператор_2> — оператор, который выполняется, если логическое выражение <условие> ложно.

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

В качестве операторов после служебных слов then и else может применяться любой оператор языка, в том числе и условный оператор.

Ограничение

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

If a>0 then If a<2 then a:=2 else a:=3;

и было бы неясно, к какому из двух If относится единственное else. При использовании условного оператора после else никаких двусмысленностей не возникает.

Важное замечание

Так как условный оператор If является самостоятельным, единым оператором (предложением), ни перед then, ни перед else точку с запятой ставить нельзя.

Примеры использования условного оператора:

If x<0 then x:=-y;

 

If x<1.5 then x:=x+y

else z:=1.5;

Как вы уже заметили, после служебных слов then и else может находиться (выполняться) только один оператор. Но ветви условного оператора, состоящие из одного оператора встречаются довольно редко. Гораздо чаще каждая ветвь условного оператора состоит из нескольких операторов. На первый взгляд кажется, что составить условный оператор в этом случае не представляется возможным. Для реализации таких ситуаций применяют составной оператор.

Составной оператор

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

Пример составного оператора

Begin

   Label1.Caption:='Текущее сообщение';

   z:=1;

   d:=d+1;

End;

В данном примере три оператора, ограниченные операторными скобками, воспринимаются как один оператор.

Пример использования составного оператора в условном операторе

Label1.Caption:='Введите контрольное число.';

x:=StrToInt(Edit1.Text);

If x>=0 then

            Begin

            Label2.Caption:='Контрольное число положительно';

            z:=z+1;

            d:=d-1;

            x:=x+10;

            End

else

            Begin

            Label2.Caption:='Контрольное число отрицательно';

            z:=z-1;

            d:=d+1;

            x:=x-10;

            End;

Для наглядного описания операторов и управляющих конструкций языка часто применяют блок-схемы.

Блок-схема условного оператора

 

Пример программы

Программа для решения квадратного уравнения

Интерфейс:

 

Программный код:

procedure TForm1.Button1Click(Sender: TObject);

var a,b,c,d,x,x1,x2:real;

begin

a:=strtofloat(edit1.Text);

b:=strtofloat(edit2.Text);

c:=strtofloat(edit3.text);

If a=0 then

 begin

 label1.Caption:='a не может быть равно нуль, т.к. это квадратное уравнение';

 label2.Caption:=' ';

 end

else

 begin

 d:=sqr(b)-(4*a*c);

 if d<0 then

  begin

  label1.Caption:='Действительных корней нет';

  label2.Caption:=' ';

  end;

 if d=0 then

  begin

  x:=(-b)/(2*a);

   label1.Caption:='x='+floattostr(x);

  label2.Caption:=' ';

  end;

 if d>0 then

  begin

  x1:=(-b+sqrt(d))/(2*a);

  x2:=(-b-sqrt(d))/(2*a);

  label1.Caption:='x1='+floattostr(x1);

  label2.Caption:='x2='+floattostr(x2);

  end;

 end;

end;

 

Контрольные вопросы:

1.  Для чего предназначен условный оператор?

2.  Каковы две формы записи условного оператора?

3.  Может ли условный оператор содержать в себе другие условные операторы?

4.  Когда и как применяется составной оператор?

5.  Нарисуйте и объясните блок-схему выполнения условного оператора.

На главную.
Используются технологии uCoz