Урок №64. операторы условного ветвления if/else

Как решить

Для сложной задачи выражения if … else она в основном решается с помощью метода извлечения и метода перемещения при реконструкции кода. Поскольку эти методы описаны в книге «Рефакторинг кода», я не буду их здесь повторять.

подводить итоги

В этой статье представлены 10 методов (включая 12 расширений) для устранения и упрощения if … else. Есть также некоторые методы, такие как устранение if … else с помощью режима стратегии, режима состояния и т. Д., Которые также описаны в книге «Рефакторинг и режим».

Как указано в предисловии, if ..

else является важной частью кода, но чрезмерное и ненужное использование if … else отрицательно повлияет на читаемость и масштабируемость кода, а также повлияет на весь код

Программная система.

Способность «убить» if … else отражает всестороннюю способность программиста использовать рефакторинг программного обеспечения, шаблоны проектирования, объектно-ориентированный дизайн, шаблоны архитектуры, структуры данных и другие технологии, а также отражает внутренние навыки программиста. Чтобы использовать if … иначе, вы не можете обойтись без дизайна или чрезмерного дизайна. Всестороннее и разумное использование этих технологий требует от программистов постоянного изучения и обобщения своей работы.

Добро пожаловать на мою планету знаний для обсуждения архитектуры и обмена исходным кодом. Как присоединиться,Нажмите и удерживайте QR-код ниже:

Исходный код, который был обновлен в Knowledge Planet, выглядит следующим образом:

Недавно обновленная серия «Taro SpringBoot 2.X Introduction», Имеет более 20 статей, посвященныхMyBatis, Redis, MongoDB, ES, подбаза данных и подтаблица, разделение чтения и записи, SpringMVC, Webflux, разрешения, WebSocket, Dubbo, RabbitMQ, RocketMQ, Kafka, тестирование производительности и т. Д.

Обеспечьте почти 3 Вт строкКодПример SpringBoot и проект микросервиса электронной коммерции с более чем 4 Вт строками кода.

Как получить: нажмите «заглянуть», подпишитесь на официальный аккаунт и ответьте666Получите его, и один за другим будут предлагаться новые материалы.

Заявление If Else

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

Давайте возьмем приведенный выше пример с билетами в кино. Если пользователю не исполнилось 18 лет и мы ничего не делаем, это может запутать конечного пользователя.

Давайте реализуем логику, чтобы сообщить пользователю, что ему должно быть не менее 18 лет.

age = 20
if age >= 18
print "Билеты в кино стоят 10 баксов!"
else
print "Вам должно быть не менее 18 лет!"
end

Если мы запустим приведенный выше код, мы должны получить:

> ruby conditionals.rb
"Билеты в кино стоят 10 баксов!"

Затем давайте изменим возраст до 18 лет:

age = 17 
if age >= 18 
print "Билеты в кино стоят 10 баксов!" 
else 
print "Вам должно быть не менее 18 лет!" 
end

Как только мы запустим код, мы должны получить инструкцию:

> ruby conditionals.rb
"Вам должно быть не менее 18 лет!"

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

Данные операторы используются в 99% любого программного кода MQL4, они есть в любом языке программирования и нужны, чтобы сделать выбор «Что если«. В первый раз я познакомился с ними, когда начинал более плотно изучать Excel. В строке функция указывалось условие: если одно число в ячейке больше другого, тогда выполняется первое действие, если же нет, то второе. Вот простая формула Excel, которая сравнивает 2 ячейки, при соблюдении условия возвращает true (истина), либо false (ложь):

Visual Basic

=ЕСЛИ(A1>B1;»true»;»false»)

=ЕСЛИ(A1>B1;»true»;»false»)

По похожему принципу работа происходит и в языка программирования MQL4:

C++

  int A1 = 4, B1 = 1;
bool result = false;

if(A1 > B1) result = true;
else result = false;
Print(«result: «,result);

1
2
3
4
5

 int A1=4,B1=1;

bool result=false;

if(A1>B1)result=true;

else result=false;

Print(«result: «,result);

Мы объявили две переменные типа int, задав им необходимые значения. Третьей переменной типа bool мы объявляем result. Я уже говорил, что для всех переменных рекомендуется всегда задавать значения во время их объявления. Если вы еще не знаете, какой значение должно быть, просто ставьте ноль, для bool эквивалент нуля это false.

Далее пишется if, что значит Если, а в круглых скобках записывается условие A1 больше B1. Для условного оператора не нужно ставить знак (;), потому что его действие еще не завершено, поэтому после скобок ставится пробел и назначается переменная, которой нужно будет присвоить значение, и уже после ставится точка с запятой. В этом примере 4 больше 1, значит выражение истинно, результат будет равен true. В противном случае в работу вступает оператор else (Иначе) и результат будет равен false. Оператор else не может существовать отдельно, всегда вначале должно быть условие if.

If Elif Else

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

Shell

if ,
then
<команды>
elif ,
then
<разные команды>
else
<другие команды>
fi

1
2
3
4
5
6
7
8
9

if<некоторыйтест>,

then

<команды>

elif<some test>,

then

<разныекоманды>

else

<другиекоманды>

fi

Например, может случиться так, что если вам исполнилось 18 или более, вы можете пойти на вечеринку. Если вы не, но у вас есть письмо от ваших родителей, вы можете пойти, но должны вернуться до полуночи. В противном случае вы не можете пойти.

if_elif.sh

Shell

#!/bin/bash
# elif statements

if
then
echo You may go to the party.
elif
then
echo You may go to the party but be back before midnight.
else
echo You may not go to the party.
fi

1
2
3
4
5
6
7
8
9
10
11
12

#!/bin/bash
# elif statements
 

if$1-ge18

then

echoYou may go tothe party.

elif$2==’yes’

then

echoYou may go tothe party but be back before midnight.

else

echoYou may notgo tothe party.

fi

Вы можете иметь столько ветвей elif, сколько хотите. Заключительное дополнение также является необязательным.

Ловушки синтаксиса IF

Запомните несколько правил, касающихся применения команды :

  • Каждая команда должна иметь парную конструкцию . Все три разновидности данной команды обязательно должны явно закрываться ключевым словом .
  • Не забывайте разделять пробелами ключевые слова и . Если вместо ввести , компилятор выдаст малопонятное сообщение об ошибке:
       ORA-06550: line 14, column 4:
       PLS-00103: Encountered the symbol ";" when expecting one of the following:
  • Ключевое слово должно содержать только одну букву «». Если вместо ключевого слова указать , компилятор не воспримет последнее как часть команды . Он интерпретирует его как имя переменной или процедуры.
  • Точка с запятой ставится только после ключевых слов . После ключевых слов и точка с запятой не ставится. Они не являются отдельными исполняемыми командами и, в отличие от , не могут завершать команду PL/SQL. Если вы все же поставите точку с запятой после этих ключевых слов, компилятор выдаст сообщение об ошибке.

Условия всегда обрабатываются от первого к последнему. Если оба условия равны , то выполняются команды первого условия. В контексте текущего примера для оклада $20000 будет начислена премия $1500, хотя оклад $20 000 также удовлетворяет условию премии $1000 (проверка включает границы). Если какое-либо условие истинно, остальные условия вообще не проверяются.

Команда позволяет решить задачу начисления премии более элегантно, чем решение в этом разделе (см. раздел «Команды и выражения »).

И хотя в команде разрешены перекрывающиеся условия, лучше избегать их там, где это возможно. В моем примере исходная спецификация немного неоднозначна в отношении граничных значений (таких, как 20 000). Если предположить, что работникам с низшими окладами должны начисляться более высокие премии (что на мой взгляд вполне разумно), я бы избавился от а и воспользовался логикой «меньше/больше» (см. далее)

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

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

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

Инструкция if…else

За инструкцией в C# может идти инструкция , но это необязательно. Код внутри блока else будет выполняться, когда равно .

Синтаксис

if (условие){    // инструкции, которые выполняются, если условие истинно}else{    // инструкции, которые выполняются, если условие ложно}

Пример

 В этом примере инструкция будет выполняться, только если значение меньше 5. А вот инструкция , напротив, будет выполнять, если значение  больше или равно 5.

Пример 2. Используем if…else

Вывод:

12 больше или равно 5Эта строка выполняется всегда. 

Переменной мы присваиваем значение 12. Это значит, что выражение равно . Следовательно, код внутри блока else выполняется. Код после инструкции if…else всегда будет выполняться независимо от результата выражения.

Теперь изменим значение на значение меньше 5: например, 2. 

Вывод 2:

2 меньше 5Эта строка выполняется всегда.

Выражение вернет , следовательно, код внутри блока if выполнится.

Вложенная конструкция if…else

Инструкция if…else может существовать внутри другой инструкции if…else. Такие инструкции называются вложенными.

Синтаксис

if (логическое-выражение){    if (вложенное-выражение-1)    {        // инструкции    }    else    {    // инструкции    }}else{    if (вложенное-выражение-2)    {        // инструкции    }    else    {        // инструкции    }}

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

Пример 4. Используем вложенный if…else

Эта программа вычисляет наибольшее число среди 3 чисел, используя вложенный конструкцию if…else.

Вывод:

13 — наибольшее число

Использование оператора Case в bash

Вы также можете использовать операторы case в bash для замены нескольких операторов if, поскольку они иногда сбивают с толку и трудны для чтения. Общий синтаксис конструкции case следующий:

case "variable" in
	"pattern1" )
		Command … ;;
	"pattern2" )
		Command … ;;
	"pattern2" )
		Command … ;;
esac

Обращать внимание!

  • За шаблонами всегда следует пробел и ).
  • После команд всегда ставится двойная точка с запятой ;;. Пробел перед ним не обязателен.
  • Операторы case заканчиваются на esac(обратный регистр).

Операторы case особенно полезны при работе с сопоставлением с образцом или регулярными выражениями. Чтобы продемонстрировать это, взгляните на следующий сценарий bash char.sh :

#!/bin/bash

CHAR=$1

case $CHAR in
)
echo "Маленький Алфавит." ;;
)
echo "Большой Алфавит." ;;
)
echo "Число." ;;
*)
echo "Специальный символ."
esac

Сценарий принимает один символ в качестве аргумента и показывает, является ли этот символ маленьким/большим алфавитом, числом или специальным символом.

destroyer@andreyex:~$./char.sh a
Маленький Алфавит.
destroyer@andreyex:~$./char.sh Z
Большой Алфавит.
destroyer@andreyex:~$./char.sh 7
Число.
destroyer@andreyex:~$./char.sh $
Специальный символ.

Обратите внимание, что я использовал подстановочный знак звездочки (*) для определения случая по умолчанию, который является эквивалентом инструкции else в условии if

Основные положения

Базовый оператор if эффективно говорит, что если конкретный тест верен, тогда выполните заданный набор действий. Если это не так, не выполняйте эти действия. Если следующий формат:

Shell

if
then
<команды>
fi

1
2
3
4

if<некоторыйтест>

then

<команды>

fi

Все , что между then и fi (если в обратном направлении) будет выполняться только если тест (в квадратных скобках) истинно.

Давайте рассмотрим простой пример:

if_example.sh

Shell

#!/bin/bash
# Базовый оператор if

if
then
echo Hey that\’s a large number.
pwd
fi

date

1
2
3
4
5
6
7
8
9
10

#!/bin/bash
# Базовый оператор if
 

if$1-gt100

then

echoHey that\’salarge number.

pwd
fi
 
date

Давайте разберем это:

  • Строка 4 — Посмотрим, больше ли первый аргумент командной строки, чем 100
  • Строка 6 и 7 — будет запущена, только если тест в строке 4 вернется. У вас может быть так много команд здесь, как вам нравится.
  • Строка 6 — обратная косая черта (\) перед одиночной кавычкой (‘) необходима, поскольку одинарная кавычка имеет особое значение для bash, и мы не хотим этого специального значения. Обратная косая черта ускользает от специального значения, чтобы снова сделать обычную одиночную кавычку.
  • Строка 8 — fi сигнализирует конец оператора if. Все команды после этого будут выполняться как обычно.
  • Строка 10 — поскольку эта команда находится за пределами оператора if, она будет выполняться независимо от результата инструкции if.

Условное выражение (или «Тернарный оператор»)

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

  • Порядок аргументов отличается от многих других языков (таких как C, Ruby, Java и т. Д.), Что может привести к ошибкам, когда люди, незнакомые с «удивительным» поведением Python, используют его (они могут изменить порядок).
  • Некоторые считают его «громоздким», поскольку он идет вразрез с нормальным потоком мысли (сначала думая о состоянии, а затем о последствиях).

Результат этого выражения будет таким, как он читается на английском языке — если условное выражение имеет значение True, то оно будет вычисляться как выражение с левой стороны, в противном случае — с правой стороны.

Тенарные операции также могут быть вложенными, как здесь:

Они также обеспечивают способ включения условных в функции лямбды .

Оператор else

Оператор выполняется в том случае, если условие указанное в if ложно. В таком случае будет проигнорирован код в блоке , и программа сражу перейдет к выполнению кода в блоке .

Данный оператор нужно прописывать после закрывающей фигурной скобки блока кода или после единственной инструкции оператора if:

if (a < b) {
a = b;
} else {
b = a + 1;
}

// или так

if (c < b)
c = 7;
else
cout << «C >= b» << endl;

1
2
3
4
5
6
7
8
9
10
11
12

if(a<b){

a=b;

}else{

b=a+1;

}
 
// или так
 

if(c<b)

c=7;

else

cout<<«C >= b»<<endl;

Как видите, правила к коду внутри оператора else ровно такие же как и к коду внутри оператора if. Теперь давайте попробуем создать более сложную программу, которая будет использовать конструкцию ветвления.

Тернарный оператор (?:)

Условный оператор (?:) – это единственный тернарный (от лат. ternarius — «тройной») оператор с тремя операндами в JavaScript. Тернарный оператор возвращает свой второй или третий операнд в зависимости от значения логического выражения, заданного первым операндом.

Первый операнд используется в качестве условия, он вычисляется и преобразуется, при необходимо, в булево значение. Если условие верно , то вычисляется и возвращается значение1. Если условие неверно , то вычисляется и возвращается значение2:

Например:

Выполнить код »
Скрыть результаты

Читается этот код так: если а больше b, то c = a, иначе c = b.

Можно записать тоже самое через if/else:

Выполнить код »
Скрыть результаты

Вложенные инструкции if/else, так же можно заменить последовательностью из тернарных операторов:

Выполнить код »
Скрыть результаты

Условный оператор имеет ассоциативность справа налево, поэтому следующие две инструкции эквивалентны:

if/elseнепол­ным вычислением

Выполнить код »
Скрыть результаты

В предыдущем примере оператор снача­ла проверяет выполняется ли временное условие (чему равна переменная time). Если условие выполняется, то в переменную message будет записа­на соответствующая строка приветствия. В противном случае, в силу побочного эффекта, связанного с неполным вычислением, оператор выведет и т.д. Этот метод используется не очень часто, но если вам встретится нечто подобное, то вы теперь знаете, как работают подобные инструкции.

Булева алгебра

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

Такие условия называются сложными, а для их проверки применяется булева алгебра. В C++ для этого есть следующие операторы:

  • & & — логическое «И» или логическое умножение (конъюнкция). Оператор И возвращает истину, если верны оба утверждения.
  • || — логическое «ИЛИ» или логическое сложение (дизъюнкция). Оператор ИЛИ возвращает истину, если верно хотя бы одно утверждение.
  • ! — логическое отрицание. Возвращает истину, если утверждение ложно.

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

A B && (И) || (ИЛИ)
1 1
1 1
1 1 1 1

С оператором НЕ всё ещё проще:

A !A (НЕ A)
1
1

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

Также вы можете использовать скобки:

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

Иногда нам нужно определить переменную в зависимости от условия.

Например:

Так называемый «условный» оператор «вопросительный знак» позволяет нам сделать это более коротким и простым способом.

Оператор представлен знаком вопроса . Его также называют «тернарный», так как этот оператор, единственный в своём роде, имеет три аргумента.

Синтаксис:

Сначала вычисляется : если оно истинно, тогда возвращается , в противном случае – .

Например:

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

Этот пример будет делать то же самое, что и предыдущий:

Но скобки делают код более читабельным, поэтому мы рекомендуем их использовать.

В примере выше вы можете избежать использования оператора вопросительного знака , т.к. сравнение само по себе уже возвращает :

Case

Иногда мы можем захотеть использовать разные пути, основанные на переменной, соответствующей ряду шаблонов. Мы могли бы использовать ряд утверждений if и elif, но это скоро вырастет, чтобы быть недвусмысленно. К счастью, есть case, который может сделать многие вещи удобнее. Это немного сложно объяснить, поэтому вот несколько примеров, чтобы проиллюстрировать:

Shell

case <variable> in
<pattern 1>)
<commands>
;;
<pattern 2>)
<other commands>
;;
esac

1
2
3
4
5
6
7
8

case<variable>in

<pattern1>)

<commands>

;;

<pattern2>)

<other commands>

;;

esac

Вот пример:

case.sh

Shell

#!/bin/bash
# case example

case $1 in
start)
echo starting
;;
stop)
echo stoping
;;
restart)
echo restarting
;;
*)
echo don\’t know
;;
esac

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

#!/bin/bash
# case example
 

case$1in

start)

echostarting

;;

stop)

echostoping

;;

restart)

echorestarting

;;

*)

echodon\’tknow

;;

esac

Давайте разберем это:

Строка 4 — Эта строка начинает механизм case.

Строка 5 — Если $ 1 равно «start», выполните следующие действия. the) означает конец рисунка.

Строка 7 — Мы идентифицируем конец этого набора операторов с двойной точкой с запятой (;;). После этого следует рассмотреть следующий случай.

Строка 14 — Помните, что тест для каждого случая является шаблоном. * Представляет собой любое количество любых символов. Очень важно поймать все, если, если ни один из других случаев не соответствует. Это не обязательно, но часто используется.

Строка 17 — esac — это случай назад и указывает, что мы находимся в конце описания дела. Любые другие утверждения после этого будут выполняться в обычном режиме.

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

disk_useage.sh

Shell

#!/bin/bash
# Print a message about disk useage.

space_free=$( df -h | awk ‘{ print $5 }’ | sort -n | tail -n 1 | sed ‘s/%//’ )

case $space_free in
*)
echo Plenty of disk space available
;;
*)
echo There could be a problem in the near future
;;
8*)
echo Maybe we should look at clearing out old files
;;
9*)
echo We could have a serious problem on our hands soon
;;
*)
echo Something is not quite right here
;;
esac

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

#!/bin/bash
# Print a message about disk useage.
 

space_free=$(df-h|awk'{ print $5 }’|sort-n|tail-n1|sed’s/%//’)

case$space_freein

1-5*)

echoPlenty of disk space available

;;

6-7*)

echoThere could beaproblem inthe near future

;;

8*)

echoMaybe we should look atclearing out old files

;;

9*)

echoWe could haveaserious problem on our hands soon

;;

*)

echoSomething isnotquite right here

;;

esac

Часть 4. Сложение, вычитание, умножение, деление, модуль в Bash
Часть 6. Циклы for, while, until в Bash

How Do You Make Decisions in Ruby?

Like these:

  • “If the room is too cold turn on the heater”
  • “If we don’t have enough stock of this product then send an order to buy more”
  • “If this customer has been with us for more than 3 years then send him a thank you gift”

Things like that are what I mean by making decisions.

If something is true (the condition) then you can do something.

In Ruby, you do this using if statements:

stock = 10

if stock < 1
  puts "Sorry we are out of stock!"
end

Notice the syntax. It’s important to get it right.

The part is what we call a “condition”.

This is what needs to be true for the code inside the condition to work.

In plain English this is saying:

“If the value of is less than then print the ‘out of stock’ message, otherwise do nothing.”

резюме

В приведенном выше разделе представлены проблемы, вызванные слишком большим количеством if … else, и соответствующие решения. Помимо методов, описанных в этом разделе, существуют и другие методы. Например, в книге «Рефакторинг и шаблоны» представлены три метода: «Заменить условную логику на стратегию», «Заменить условные операторы изменения состояния на состояние» и «Заменить условные планировщики на команду». Идея «командного режима» примерно такая же, как и у «табличного» метода в этой статье. Два других метода подробно описаны в книге «Рефакторинг и шаблоны», поэтому я не буду их здесь повторять.

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

Правило приведения условия к true или false

Если выражение в условии оператора if не равно или , то JavaScript приведёт его к одному из этих значений. Данное действие он выполняет с помощью так называемого «правила лжи».

Смысл данного правила: любое выражение является true, кроме следующих значений:

  • (ложь);
  • или (пустая строка);
  • (специальный числовой тип данных «не число»);
  • (число «ноль»);
  • («пустое» значение);
  • («неопределённое» значение).

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

if (nameUser) {
  console.log('Привет, ' + name + '!');
} else {
  console.log('Привет, гость!');
}

Если переменная nameUser будет содержать пустую строку, то по правилу лжи, она будет приведена к значению . Следовательно, в консоль будет выведено сообщение «Привет, гость!».

А если, например, переменная nameUser будет содержать строку «Тимур», то выражение в условии будет приведено к значению . В результате, в консоли отобразится сообщение «Привет, Тимур!».

Оператор switch

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

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

switch (выражение) {
  case choice1:
    выполнить этот код
    break;

  case choice2:
    выполнить этот код, а не предыдущий
    break;

  // вариантов может быть любое количество

  default:
    а вообще-то, выполнить только этот код
}

Что мы имеем:

  1. Ключевое слово , за которым следует пара круглых скобок.
  2. В скобках приводится выражение или значение.
  3. Ключевое слово , за которым следует вариант выбора (именно он проверяется на соответствие выражению или значению) и двоеточие.
  4. Код, который будет выполняться, если вариант совпадает с выражением.
  5. Оператор , за которым следует точка с запятой. Если вариант совпал с выражением или значением, браузер закончит выполнять блок кода, дойдя до оператора , и перейдёт к выполнению кода, расположенного после оператора switch.
  6. Вариантов выбора (пункты 3–5) может быть любое количество.
  7. Ключевое слово используется точно также, как любой другой вариант выбора (пункты 3–5) за тем исключением, что после нет других вариантов выбора, поэтому инструкция не требуется, никакого кода дальше нет. Это вариант выбора по умолчанию, выбираемый, если ни один из других вариантов не совпал с выражением.

Примечание. Вариант выбора может быть пропущен, если выражение гарантированно совпадёт с одним из вариантов выбора. В противном случае вариант необходим.

Давайте рассмотрим реальный пример — перепишем наше приложение прогноза погоды с использованием оператора switch:

Note: вы можете найти этот пример на GitHub (также увидеть как он работает.)

Логические операции

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

  • и — &&
  • или — ||

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

and.sh

Shell

#!/bin/bash
# and example

if &&
then
echo This file is useful.
fi

1
2
3
4
5
6
7

#!/bin/bash
# and example
 

if-r$1&&-s$1

then

echoThisfileisuseful.

fi

Возможно, мы хотели бы выполнить что-то немного другое, если пользователь либо bob, либо andy.

or.sh

Shell

#!/bin/bash
# or example

if ||
then
ls -alh
else
ls
fi

1
2
3
4
5
6
7
8
9

#!/bin/bash
# or example
 

if$USER==’bob’||$USER==’andy’

then

ls-alh

else
ls
fi

Оператор if-else

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

Если условие истинно, то выполняется блок if. В противном случае выполняется блок else.

Синтаксис оператора if-else приведен ниже.

if condition:
 #block of statements 
else: 
 #another block of statements(else-block) 

Пример 1: Программа для проверки того, имеет ли человек право голосовать или нет.

age = int(input("Enter your age? "))
if age>=18:
    print("You are eligible to vote !!");
else:
    print("Sorry! you have to wait !!");

Выход:

Enter your age? 90
You are eligible to vote !!

Пример 2: Программа для проверки четности числа.

num = int(input("enter the number?"))
if num%2 == 0:
    print("Number is even...")
else:
    print("Number is odd...")

Выход:

enter the number?10
Number is even

Конструкция if

Конструкция if выполняет блок кода, если заданное условие — истинно, т. е. .

Синтаксис

if (условие){    // инструкции, которые выполняются, если логическое-выражение истинно.}

Условие может возвращать одно из двух значений: или .

  • Если = , инструкции внутри тела if (внутри ) выполнятся.
  • Если = , C# проигнорирует инструкции внутри тела if.

Пример

В данном примере инструкция выполнится только в том случае, если значение переменной  меньше 5.

Если забыли, что делает оператор +=, вернитесь к статье «Операторы». 

Пример 1. Используем if

Вывод:

2 меньше 5Эта строка выполняется всегда.

Переменной мы присваиваем значение 2. Это значит, что выражение равно . Следовательно, код внутри блока if выполняться будет. Код после оператора if всегда будет выполняться — независимо от результата выражения.

Теперь изменим значение на значение больше 5: например, 10. 

Вывод 2:

Эта строка выполняется всегда.

Выражение равно , следовательно, код внутри блока if выполняться не будет.

How to Use Multiple Conditions

If you’d like to write compound conditions, where you are checking if two things are true at the same time, then this section is for you.

You can do this by using the (AND) operator:

if name == "David" && country == "UK"
  # ...
end

This is saying:

“If the is equal to ‘David’ and is equal to ‘UK’ then do something.”

You can also use the (OR) operator:

if age == 10 || age == 20
end

This means:

“If the is or then do something.”

Notice how these two operators (, ) allow you to combine conditions, but they need to be proper conditions.

In other words, you CAN’T do this:

if age == 10 || 20
end

This is not valid.

You need a full condition on each side ().

Вывод

В статье мы рассмотрели самые простые варианты ветвления и только для одного языка, хотя алгоритм работает аналогично и в других — разница только в синтаксисе. Конечно, есть и другие операторы ветвления даже в самом C++ — тот же весьма мощный по своим возможностям оператор switch или «переключатель». Его работу можно увидеть в так называемых «радиокнопках» в интерфейсе многих программ. Его специфика: он удобен при обработке множества опций выбора, там можно выбрать только один вариант.

И да, это тоже можно реализовать с помощью , однако такой стиль программирования довольно громоздкий и не приветствуется. 

К слову, то же самое, что было в статье, но более подробно, есть в этом тематическом видео:

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: