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

Содержание:

  1. Строить простое ветвление

    • if, else if и else;
    • вложенные ветви;
    • условие как выражение типа bool;
    • выбор ровно одного пути в связанной цепочке;
    • различие независимых if и одной системы случаев.
  2. Вычислять значение по условию

    • условный оператор;
    • switch-выражение;
    • общий тип результатов ветвей;
    • отсутствие побочных действий в вычисляющем выражении;
    • различие инструкции управления и выражения, возвращающего значение.
  3. Использовать switch-инструкцию

    • секции case и default;
    • constant patterns;
    • объединение нескольких меток;
    • явное завершение секции;
    • применение к enum, целым, символам и строкам.
  4. Применять сопоставление с образцом

    • relational patterns <, <=, >, >=;
    • logical patterns and, or, not;
    • constant pattern null;
    • шаблон отбрасывания _;
    • условие when;
    • порядок образцов от узких к общим.
  5. Разделять числовую область на интервалы

    • открытые, закрытые и полуоткрытые границы;
    • точное включение граничного значения;
    • отсутствие щелей между соседними случаями;
    • отсутствие непреднамеренных пересечений;
    • отдельная обработка NaN, бесконечностей и недопустимых значений.
  6. Проверять полноту и взаимную исключительность

    • таблица решений;
    • истинностные таблицы составных условий;
    • законы де Моргана;
    • доказательство того, что каждый допустимый вход обработан;
    • поиск недостижимой ветви;
    • роль завершающей ветви else, _ или default.
  7. Учитывать короткое замыкание

    • защитная проверка до потенциально опасного выражения;
    • вычисление правой части только при необходимости;
    • различие && и &, || и | в логическом контексте;
    • порядок условий как часть безопасного поведения.
  8. Разбирать состояния перечисления полностью

    • именованные члены;
    • неименованное числовое значение;
    • значение по умолчанию;
    • явная ветвь для неизвестного состояния;
    • невозможность считать список имён исчерпывающим для всех значений типа.