🧑🏫03. Условные операторы
Темы:
Условные операторы в программировании — это способы задать программе разные действия в зависимости от условий. Они помогают "проверить" ситуации и сделать правильный выбор, как, например, на развилке дорог: если нам нужно налево, мы идем налево, а если направо — идем направо.
Зачем нужны условные операторы?
Представь, что ты выбираешь, какую обувь надеть. Если на улице дождь, ты выбираешь резиновые сапоги, а если солнечно — кроссовки. Условные операторы помогают программе делать такие же выборы: выполнять одну задачу, если что-то правда, и другую — если нет.
Основные условные операторы в Dart:
if / else
Тернарный оператор
switch / case
1. if
/ else
if
/ else
if
и else
позволяют программе проверять, истинно ли условие, и выполнять определенные действия в зависимости от этого.
Аналогия
Представь, что ты решаешь, что надеть:
Если на улице тепло, ты надеваешь футболку.
Если холодно, надеваешь свитер.
Пример 1 использования if
/ else
в коде
if
/ else
в кодеint temperature = 15;
void checkTemperature() {
if (temperature > 20) {
print("Надень футболку");
} else {
print("Надень свитер");
}
}
Здесь if
проверяет, больше ли температура 20 градусов. Если да, то выводится сообщение “Надень футболку”, если нет — “Надень свитер”.
Пример 2: if / else
в Flutter
if / else
в FlutterВ этом примере мы проверяем, является ли число четным или нечетным, используя if / else
. На экране отображается результат.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: IfElseExample(),
);
}
}
class IfElseExample extends StatefulWidget {
@override
_IfElseExampleState createState() => _IfElseExampleState();
}
class _IfElseExampleState extends State<IfElseExample> {
int number = 4;
String checkEvenOdd(int num) {
if (num % 2 == 0) {
return "Четное число";
} else {
return "Нечетное число";
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('If/Else Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Число: $number'),
SizedBox(height: 20),
Text(checkEvenOdd(number), style: TextStyle(fontSize: 24)),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
setState(() {
number++;
});
},
child: Text('Увеличить число'),
),
],
),
),
);
}
}
Объяснение:
Функция
checkEvenOdd(int num)
проверяет, является ли число четным или нечетным.На экране отображается текущее число и его статус (четное или нечетное).
Кнопка "Увеличить число" увеличивает
number
, и экран обновляется.
2. Тернарный оператор
Тернарный оператор — это сокращенная версия if
/ else
. Он использует ?
и :
для проверки условия и выполнения действий.
Аналогия
Представь, что ты выбираешь десерт:
Если есть пирог, ты его берешь.
Если пирога нет, ты берешь мороженое.
Пример 1 использования тернарного оператора в коде
bool hasCake = true;
String dessert = hasCake ? "Пирог" : "Мороженое";
print("Выбранный десерт: $dessert");
Здесь hasCake
— это условие. Если оно истинно, выбирается "Пирог"
, иначе — "Мороженое"
.
Пример 2: Тернарный оператор в Flutter
Этот пример проверяет, является ли пользователь совершеннолетним, используя тернарный оператор, и отображает сообщение на экране.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: TernaryOperatorExample(),
);
}
}
class TernaryOperatorExample extends StatefulWidget {
@override
_TernaryOperatorExampleState createState() => _TernaryOperatorExampleState();
}
class _TernaryOperatorExampleState extends State<TernaryOperatorExample> {
int age = 16;
String checkAge(int age) => age >= 18 ? "Совершеннолетний" : "Несовершеннолетний";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Ternary Operator Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Возраст: $age'),
SizedBox(height: 20),
Text(checkAge(age), style: TextStyle(fontSize: 24)),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
setState(() {
age++;
});
},
child: Text('Увеличить возраст'),
),
],
),
),
);
}
}
Объяснение:
Функция
checkAge(int age)
использует тернарный оператор, чтобы вернуть "Совершеннолетний" или "Несовершеннолетний".На экране отображается возраст и его статус.
Кнопка увеличивает возраст, обновляя экран.
3. switch
/ case
switch
/ case
switch
/ case
используется, когда нужно проверить одно и то же значение на несколько возможных вариантов. Он помогает упростить код, если if
/ else
начинает разрастаться.
Аналогия
Представь, что у тебя есть расписание на неделю, и в зависимости от дня недели ты выполняешь разные задачи:
В понедельник — тренировка.
Во вторник — занятия.
В среду — встречи.
Пример использования switch
/ case
в коде
switch
/ case
в кодеString day = "Понедельник";
void checkSchedule() {
switch (day) {
case "Понедельник":
print("Сегодня тренировка");
break;
case "Вторник":
print("Сегодня занятия");
break;
case "Среда":
print("Сегодня встречи");
break;
default:
print("Свободный день");
}
}
Здесь switch
проверяет значение переменной day
и выводит сообщение в зависимости от дня.
Пример 2: switch / case
в Flutter
switch / case
в FlutterЭтот пример показывает дни недели в зависимости от выбранного дня, используя switch / case
.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SwitchCaseExample(),
);
}
}
class SwitchCaseExample extends StatefulWidget {
@override
_SwitchCaseExampleState createState() => _SwitchCaseExampleState();
}
class _SwitchCaseExampleState extends State<SwitchCaseExample> {
int dayNumber = 1;
String getDayOfWeek(int day) {
switch (day) {
case 1:
return "Понедельник";
case 2:
return "Вторник";
case 3:
return "Среда";
case 4:
return "Четверг";
case 5:
return "Пятница";
case 6:
return "Суббота";
case 7:
return "Воскресенье";
default:
return "Неизвестный день";
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Switch Case Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Номер дня: $dayNumber'),
SizedBox(height: 20),
Text(getDayOfWeek(dayNumber), style: TextStyle(fontSize: 24)),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
setState(() {
dayNumber = dayNumber < 7 ? dayNumber + 1 : 1;
});
},
child: Text('Следующий день'),
),
],
),
),
);
}
}
Объяснение:
Функция
getDayOfWeek(int day)
используетswitch / case
, чтобы возвращать день недели в зависимости от значенияdayNumber
.На экране отображается номер дня и соответствующее название дня недели.
Кнопка "Следующий день" увеличивает номер дня, обновляя экран.
Основные моменты:
if / else: проверка условий с двумя вариантами (или больше с
else if
).Тернарный оператор: короткий способ проверки, подходит для простых условий.
switch / case: удобен для множественного выбора, особенно если одно значение может иметь несколько вариантов.
Last updated