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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

Определение[править | править код]

Понятие составного оператора появилось в языке программирования Алгол. Введённые в этом языке структурные операторы (ветвление, цикл) были организованы таким образом, что в них могла использоваться только одна команда языка. Чтобы не ограничивать программиста, в язык было введено понятие составного оператора: любой набор операторов, размещённый между ключевыми словами begin и end, с точки зрения транслятора становился одной командой (оператором) и мог использоваться в любом месте программы, где следует использовать один оператор.

Примеры использования[править | править код]

Понятие составного оператора было унаследовано языком Паскаль и множеством других языков программирования, основанных на Алголе. В Паскале условный оператор if, циклы while и for требуют в качестве ветвей и тела один оператор, поэтому при необходимости разместить в ветвях условного оператора или теле цикла несколько команд используются составные операторы:

if условие then 
  begin  { начало составного оператора }
    ... { несколько операторов }
  end { конец составного оператора }
else
  begin  { начало составного оператора }
    ... { несколько операторов }
  end; { конец составного оператора }

while условие do 
  begin  { начало составного оператора }
    ... { несколько операторов }
  end; { конец составного оператора }

for переменная := значение1 to значение2 do
  begin  { начало составного оператора }
    ... { несколько операторов }
  end; { конец составного оператора }

В языке Си составной оператор ограничивается фигурными скобками, что сокращает текст программы, но принципиально не отличается от Паскаля и Алгола:

if (условие) 
  {  // начало составного оператора 
    ... // несколько операторов 
  } // конец составного оператора 
else
  {  // начало составного оператора 
    ... // несколько операторов 
  } // конец составного оператора 

while (условие) 
  {  // начало составного оператора 
    ... // несколько операторов 
  } // конец составного оператора 

do
  {  // начало составного оператора 
    ... // несколько операторов 
  } // конец составного оператора 
while (условие);

for (инициализация; условие; оператор)
  {  // начало составного оператора 
    ... // несколько операторов 
  } // конец составного оператора

Отказ от составных операторов[править | править код]

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