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

Материал из ТХАБ.РФ
Перейти к: навигация, поиск

Как изменить последовательность выполнения операторов в зависимости от истинности каких-либо условий?

В самом простом случае мы можем воспользоваться блочным условным оператором Если.

Изменение последовательности выполнения операторов

***

В языке программирования Перфолента.Net условные операторы используются для изменения логики работы программы путем изменения порядка выполнения операторов.

Условный оператор Если используется чаще всего:

Если Условие Тогда
   //блок операторов программы, которые выполнятся только если выполнится условие.
КонецЕсли    

Умнику на заметку: Ключевое слово Тогда не является обязательным и может быть пропущено.

Условием в операторе Если может быть любое выражение, результат которого можно привести к типу Булево, например, выражение (Было Или Будет) в следующих строках программы:

Было = Истина
Будет = Ложь
Если Было Или Будет
   ВыполнитьВажнуюПроцедуру()
КонецЕсли    

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

Если УсловноеВыражение
   //блок операторов программы
   //которые выполнятся
   //когда условное выражение имеет значение Истина
Иначе
   //блок операторов программы
   //которые выполнятся
   //когда условное выражение имеет значение Ложь
КонецЕсли    

А что делать, если условий много, но принять во внимание мы можем только одно из них, а именно то, которое первое по списку имеет значение Истина? Тогда используем более сложную форму оператора, в которой может быть несколько секций ИначеЕсли:

Если Условие1
   Стр = "Истинно условие 1"
ИначеЕсли  Условие2
   Стр = "Истинно условие 2"
ИначеЕсли  Условие3
   Стр = "Истинно условие 3"
ИначеЕсли  Условие4
   Стр = "Истинно условие 4"
Иначе
   Стр = "Все условия ложны"
КонецЕсли
ВыводСтроки Стр

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

Хорошо, но что делать, если один и тот же блок операторов должен выполняться тогда, когда истинно одно из нескольких условий?

В этом случае мы можем объединить все условия в одно выражение с помощью оператора Или:

Если Условие1
 или Условие2
 или Условие3
 или Условие4 Тогда
   Стр = "Истинно одно из условий"
Иначе
   Стр = "Все условия ложны"
КонецЕсли

Точно так же поступим, если один и тот же блок операторов должен выполняться тогда, когда истинны все из нескольких условий?

Только в этом случае мы объединим условия в одно выражение с помощью оператора И:

Если Условие1
      и Условие2
      и Условие3
      и Условие4 Тогда
   Стр = "Истинны все условия"
Иначе
   Стр = "Все условия ложны"
КонецЕсли

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

Если ГлавноеУсловноеВыражение
       Если ВнутреннееУсловноеВыражение
           //блок операторов программы
       Иначе
               Если Условие1
                или Условие2
                        //блок операторов программы
               Иначе
                       //блок операторов программы
               КонецЕсли
       КонецЕсли    
Иначе
       //блок операторов программы
       Если ПромежуточноеУсловие Тогда
               //блок операторов программы
       КонецЕсли    
       //блок операторов программы

КонецЕсли

Иногда, кое-кому, хочется записать условный оператор в одну строку. Есть такие программисты, которые любят писать много текста в одну строку.

В этом случае необходимо не забывать об использовании разделителя точка с запятой (;) между операторами в блоках кода расположенных в секциях оператора Если:

Пример:

   А=4; Б=2; С=Истина;
   Если А>Б Тогда Б=7; С=Ложь Иначе Б=5 КонецЕсли
   ВыводСтроки ""+Б+" "+С

Итог:

Если вам необходимо изменить последовательность выполнения операторов программы в зависимости от выполнения каких-либо условий – используйте блочный условный оператор Если.


'Показать Содержание Описание языка Перфолента.NET'

Ссылки