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

   
На этом шаге мы рассмотрим правила использования оператора if.

   
Условный оператор if может быть записан в полной и неполной формах, которые имеют следующий вид.

   
Неполная форма:

    if <Выражение> then <Оператор>;

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

    if <Выражение> then  <Оператор1> else  <Оператор2>;

   
При выполнении условного оператора сначала вычисляется Выражение, результат которого может принимать только булевский тип, а затем,
в зависимости от значения результата (True, False), выполняется Оператор1, стоящий после ключевого слова then (если результат равен True), или
Оператор2, стоящий после ключевого слова else (если результат равен False).

   
В случае, когда оператор if записан в неполной форме, при значении результата False управление передается оператору, следующему непосредственно после оператора
if, а Оператор1, стоящий за ключевым словом then, пропускается.

   
Начинающим программистам следует обратить внимание на рассматриваемые ниже синтаксические особенности оператора if.

   
Напомним, что в Object Pascal операторы разделяются символом ; (точка с запятой). Это означает, что внутри любого структурного оператора символ ";" встречаться не должен,
иначе все, что стоит после него, будет считаться другим оператором.

   
Пример с ошибкой:

    if  А >В  then С : = А; <--- Ошибка!
    else С : = В;

   
В показанном выше примере точка с запятой, стоящая перед ключевым словом else заканчивает текст оператора if. А это приводит к синтаксической ошибке, поскольку оператора, начинающегося
с ключевого слова else в Object Pascal нет.

   
Чтобы не допускать таких ошибок целесообразно запомнить следующее правило:

    Перед ключевым словом else символ ";" никогда не ставится.

   
По синтаксису после ключевых слов then и else может стоять всего лишь один оператор.
Если же в какой-либо из ветвей альтернативы (then или else) или сразу в обоих требуется выполнить несколько операторов, то следует воспользоваться составным оператором:

    begin
       .   .   .   .
    end

который позволяет интерпретировать группу операторов как один оператор.

   
Заметим, что операторы, расположенные между ключевыми словами begin ... end, также как и везде, должны разделяться точкой с запятой.

   
Обобщенные формы простейшего случая оператора if приведены в таблице 1:

Таблица 1. Обобщенная форма оператора if

Количество операторов в ветви Обобщенная форма оператора if

then else
один один
  if <Выражение> then <Оператор1> else <Оператор2>;
несколько один
  if <Выражение> then 
  begin
    <Оператор1>;
    <Оператор2>;
       .   .   .   .  
    <ОператорN>;
  end 
  else <ОператорM>;
один несколько
  if <Выражение> then <Оператор> 
 else 
  begin 
    <Оператор1>;
    <Оператор2>;
       .   .   .   .  
    <ОператорN>;
  end;
несколько несколько
  if <Выражение> then 
  begin
    <Оператор1>;
    <Оператор2>;
       .   .   .   .  
    <ОператорN>;
  end 
  else
  begin 
    <ОператорN+1>;
    <ОператорN+2>;
       .   .   .   .  
    <ОператорN+M>;
  end;

   
Еще одна синтаксическая сложность корректного использования оператора if возникает при написании вложенных операторов if.
В случае, если вложенный оператор if располагается в пределах составного oпeратора, больших проблем не возникает, так как ключевые слова
begin и end точно ограничивают область каждой альтернативы.

   
Например:

  if <Выражение> then 
  begin
    <Оператор1>; 
    if <Выражение1> then <Оператор2> else <Оператор3>; 
    <Оператор4> 
  end 
  else 
  begin
    <Оператор5>; 
    if <Выражение2> then <Оператор6> 
  end;

   
Однако, если вложенный оператор if является единственным оператором в ветви альтернативы, то может возникнуть неоднозначность:
какому if соответствует ветвь else.

   
Например:

    if <Выражение> then
      if <Выражение1> then
      <Оператор>	
    else <Оператор1>;

   
В таких случаях следует помнить правило:

 Ключевое слово else связывается с ближайшим стоящим перед ним ключевым словом if, 
 которое еще не было связано с каким-либо ключевым словом else.

   
Если в предыдущем примере более четко обозначить структуру вложенности, записав else на одном уровне с then, которому оно соответствует, то получим такой фрагмент:

    if <Выражение> then
      if <Выражение1> then
        <Оператор>	
      else <Оператор1>;

   
На следующем шаге мы рассмотрим оператор case.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий