Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты мини.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
154 Кб
Скачать
☆
  1. Вложенные операторы ветвления и замыкание операторов ветвления.

I. Вложенные операторы ветвления.

Внутри ветвления могут находиться как линейные фрагменты алгоритма, так и другие ветвления. В языке Visual Basic.NET вложенные  операторы ветвления If имеют вид:

Вариант 1                                                                       Вариант 2

If  <условие 1>  Then

                   <Операторы 1>

Elself   <условие 2>  Then

                 <Операторы 2>

End If

if <условие 1> then

   <Операторы 1>

elseif <условие 2> then

   <Операторы 2>

. . .

elseif <условие n-1> then

   <Операторы n-1>

else

   <Операторы n>

endif

Оператор работает следующим образом:

  • если (If) выполняется  <условие 1>, то (Then) будет выполнена последовательность операторов  <Блок 1>,

  • иначе если (ElseIf) выполняется  <условие 2>, то  (Then) будет выполнен  <Блок 2> ,

          и т.д.,

  • иначе (Else) -  <Блок N>

 

Вложенные операторы ветвления

Интересная проблема возникает, если допускается вложение двухвариантных конст­рукций ветвления. Рассмотрим следующий фрагмент кода, напоминающего программу на языке Pascal:

ifsum= 0then

ifcount= 0thenresult:= 0

elseresult:= 1

Эту конструкцию можно интерпретировать двумя различными способами в зависи­мости от того, соответствует оператор else первому оператору then или второму. За­метим, что структурированное расположение текста указывает на то, что оператор else принадлежит первому оператору then. Однако такое расположение текста не влияет на семантику в большинстве современных языков и, следовательно, игнорируется их ком­пиляторами.

Разработчики языка ALGOL60 решили использовать синтаксис, а не правило, для то­ го чтобы связывать операторы else с операторами then. В частности, не допускалось вложение оператора if непосредственно в оператор then. Если возникала необходимость вложить операторifв оператор then, он должен был быть заключен в составной оператор. Например, если конструкция ветвления, приведенная выше, должна была связать оператор else со вторым оператором then, в языкеALGOL60 это следовало за­ писать следующим образом:

if sum = 0 then

begin

ifcount = 0then result := 0

else result:= 1

end

Если оператор else следовало связать с первым оператором then, то это можно было записать так:

if sum = 0 then

begin

if count = 0 then result := 0

end

elseresult:= 1

Специальные слова и замыкание оператора ветвления

Рассмотрим синтаксическую структуру оператора ifв языкеPascal. Операторthenначинается с зарезервированного слова then, а оператор else— с зарезервированного слова else. Если оператор then представляет собой отдельный оператор и присутству­ет оператор else, то зарезервированное слово else фактически отмечает конец опера­тора then, несмотря на то, что в этом нет никакой необходимости. Если оператор then является составным, он завершается зарезервированным словом end. Однако, если по­следний оператор в операторе if (либо then, либо else) не является составным, то не существует синтаксического способа для того, чтобы отметить конец всей конструкции ветвления. Использование ключевого слова для этой цели могло бы разрешить вопрос, связанный с семантикой вложенных операторов ветвления, и увеличить надежность кон­струкции.