Как работают условные операторы? В чем разница между различными их видами?
Условный оператор позволяет программе выбирать разные действия в зависимости от истинности условия. Условие обычно является логическим выражением.
Условный оператор позволяет программе выбирать разные действия в зависимости от истинности условия. Это основа ветвления в алгоритмах.
Условие обычно является логическим выражением. Оно принимает значение истина или ложь.
Простое условие
Простая форма выполняет действие только при истинном условии.
if (score >= 60) {
console.log("Экзамен сдан");
}if (score >= 60) {
console.log("Экзамен сдан");
}package main
import "fmt"
func main() {
if score >= 60 {
fmt.Println("Экзамен сдан")
}
}public class Example {
public static void main(String[] args) {
if (score >= 60) {
System.out.println("Экзамен сдан");
}
}
}if score >= 60:
print("Экзамен сдан")Если условие ложно, блок пропускается.
Полное ветвление
Полная форма содержит две ветви: что делать при истине и что делать при лжи.
if (score >= 60) {
console.log("Экзамен сдан");
} else {
console.log("Экзамен не сдан");
}if (score >= 60) {
console.log("Экзамен сдан");
} else {
console.log("Экзамен не сдан");
}package main
import "fmt"
func main() {
if score >= 60 {
fmt.Println("Экзамен сдан")
} else {
fmt.Println("Экзамен не сдан")
}
}public class Example {
public static void main(String[] args) {
if (score >= 60) {
System.out.println("Экзамен сдан");
} else {
System.out.println("Экзамен не сдан");
}
}
}if score >= 60:
print("Экзамен сдан")
else:
print("Экзамен не сдан")Такой вариант удобен, когда нужно выбрать одно из двух действий.
Множественное ветвление
Если вариантов больше двух, используют цепочку условий.
if (score >= 90) {
console.log("Отлично");
} else if (score >= 75) {
console.log("Хорошо");
} else if (score >= 60) {
console.log("Удовлетворительно");
} else {
console.log("Не сдано");
}if (score >= 90) {
console.log("Отлично");
} else if (score >= 75) {
console.log("Хорошо");
} else if (score >= 60) {
console.log("Удовлетворительно");
} else {
console.log("Не сдано");
}package main
import "fmt"
func main() {
if score >= 90 {
fmt.Println("Отлично")
} else if score >= 75 {
fmt.Println("Хорошо")
} else if score >= 60 {
fmt.Println("Удовлетворительно")
} else {
fmt.Println("Не сдано")
}
}public class Example {
public static void main(String[] args) {
if (score >= 90) {
System.out.println("Отлично");
} else if (score >= 75) {
System.out.println("Хорошо");
} else if (score >= 60) {
System.out.println("Удовлетворительно");
} else {
System.out.println("Не сдано");
}
}
}if score >= 90:
print("Отлично")
elif score >= 75:
print("Хорошо")
elif score >= 60:
print("Удовлетворительно")
else:
print("Не сдано")Условия проверяются сверху вниз. Выполняется первая подходящая ветвь.
Оператор выбора
Когда нужно сравнить одно выражение с несколькими конкретными значениями, удобен оператор выбора.
switch (command) {
case "start":
console.log("Запуск");
break;
case "stop":
console.log("Остановка");
break;
default:
console.log("Неизвестная команда");
}switch (command) {
case "start":
console.log("Запуск");
break;
case "stop":
console.log("Остановка");
break;
default:
console.log("Неизвестная команда");
}package main
import "fmt"
func main() {
switch (command) {
case "start":
fmt.Println("Запуск")
break
case "stop":
fmt.Println("Остановка")
break
default:
fmt.Println("Неизвестная команда")
}
}public class Example {
public static void main(String[] args) {
switch (command) {
case "start":
System.out.println("Запуск");
break;
case "stop":
System.out.println("Остановка");
break;
default:
System.out.println("Неизвестная команда");
}
}
}match command:
case "start":
print("Запуск")
case "stop":
print("Остановка")
case _:
print("Неизвестная команда")Он делает код яснее, если ветвление зависит от одного значения.
Тернарный оператор
Тернарный оператор используется для короткого выбора значения.
const status = score >= 60 ? "сдано" : "не сдано";const status = score >= 60 ? "сдано" : "не сдано";package main
func main() {
status := score >= 60 ? "сдано" : "не сдано"
}public class Example {
public static void main(String[] args) {
var status = score >= 60 ? "сдано" : "не сдано";
}
}status = "сдано" if score >= 60 else "не сдано"Его удобно применять в простых выражениях, но не стоит использовать для сложной логики.
Вложенные условия
Одно условие может находиться внутри другого.
if (isAuthorized) {
if (isAdmin) {
console.log("Панель администратора");
}
}if (isAuthorized) {
if (isAdmin) {
console.log("Панель администратора");
}
}package main
import "fmt"
func main() {
if isAuthorized {
if isAdmin {
fmt.Println("Панель администратора")
}
}
}public class Example {
public static void main(String[] args) {
if (isAuthorized) {
if (isAdmin) {
System.out.println("Панель администратора");
}
}
}
}if isAuthorized:
if isAdmin:
print("Панель администратора")Вложенность нужно контролировать: слишком глубокие условия ухудшают читаемость.
Разница между видами
- простое if проверяет одно условие и может ничего не выполнить;
- if else выбирает один из двух вариантов;
- else if задает несколько альтернатив;
- switch удобен для выбора по одному значению;
- тернарный оператор возвращает одно из двух значений;
- вложенные условия описывают зависимые проверки.
Вывод
условные операторы управляют ходом программы. Их выбор зависит от числа вариантов, сложности условий и того, нужно выполнить действие или получить значение.
Источники
- Семакин И.Г. Основы программирования и баз данных. Учебник. - М.: Академия, 2014. - 224 с.
- Симонова Е.В. Структуры данных в C#. Линейные и нелинейные динамические структуры. - Лань, 2018. - 152 с.
- Бертран Мейер. Почувствуй класс. Учимся программировать хорошо с объектами и контрактами. - М.: Национальный Открытый Университет "ИНТУИТ": БИНОМ. Лаборатория знаний, 2011. - 775 с.
- Мэтт Вайсфельд. Объектно-ориентированное мышление. - СПб.: Питер, 2014. - 304 с.
- Ривест Р., Штайн К., Лейзерсон Ч., Кормен Т. Алгоритмы: построение и анализ. - М.: Вильямс, 2007. - 1296 с.
- Стивенс Род. Алгоритмы. Теория и практическое применение. - М.: Эксмо, 2017. - 544 с.
- Рублев В.С. Основы теории алгоритмов. - 2-е издание, исправленное. - М.: Научный мир, 2008. - 128 с.
- Гольдберг Г.Л. Основы алгоритмизации и программирования. - М.: Академия, 2012. - 384 с.
- Лаврищева И.В. Технология программирования. - М.: Горячая линия - Телеком, 2011. - 400 с.
- Сергеев И.С., Сухоруков А.И., Шестаков А.А. Программирование: учебник для вузов. - М.: БИНОМ. Лаборатория знаний, 2013. - 512 с.