Результат: ученик разбивает область входов на полную систему взаимно исключительных случаев, выбирает подходящую форму ветвления и доказывает принадлежность каждой границы и достижимость каждой ветви.
Содержание:
-
Строить простое ветвление
if,else ifиelse;- вложенные ветви;
- условие как выражение типа
bool; - выбор ровно одного пути в связанной цепочке;
- различие независимых
ifи одной системы случаев.
-
Вычислять значение по условию
- условный оператор;
switch-выражение;- общий тип результатов ветвей;
- отсутствие побочных действий в вычисляющем выражении;
- различие инструкции управления и выражения, возвращающего значение.
-
Использовать
switch-инструкцию- секции
caseиdefault; - constant patterns;
- объединение нескольких меток;
- явное завершение секции;
- применение к
enum, целым, символам и строкам.
- секции
-
Применять сопоставление с образцом
- relational patterns
<,<=,>,>=; - logical patterns
and,or,not; - constant pattern
null; - шаблон отбрасывания
_; - условие
when; - порядок образцов от узких к общим.
- relational patterns
-
Разделять числовую область на интервалы
- открытые, закрытые и полуоткрытые границы;
- точное включение граничного значения;
- отсутствие щелей между соседними случаями;
- отсутствие непреднамеренных пересечений;
- отдельная обработка
NaN, бесконечностей и недопустимых значений.
-
Проверять полноту и взаимную исключительность
- таблица решений;
- истинностные таблицы составных условий;
- законы де Моргана;
- доказательство того, что каждый допустимый вход обработан;
- поиск недостижимой ветви;
- роль завершающей ветви
else,_илиdefault.
-
Учитывать короткое замыкание
- защитная проверка до потенциально опасного выражения;
- вычисление правой части только при необходимости;
- различие
&&и&,||и|в логическом контексте; - порядок условий как часть безопасного поведения.
-
Разбирать состояния перечисления полностью
- именованные члены;
- неименованное числовое значение;
- значение по умолчанию;
- явная ветвь для неизвестного состояния;
- невозможность считать список имён исчерпывающим для всех значений типа.

