ИНФОРМАТИКА · 7 КЛАСС
Алгоритмы и Робот · Интерактивный конспект

§ 12. Алгоритмическая конструкция ветвление

Построим полную и сокращённую формы if, увидим выбор единственной ветви и научимся проверять алгоритм на двух исходах условия.

Попробовать на модели ↓
Разбираемся в теме

Основные пункты параграфа

1

Выбор действий по условию

Ветвление принимает решение в конкретный момент выполнения.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Проверка и действие

Учебная модель команд PascalABC.NET. Выполняйте программу по шагам; следите за клеткой, датчиками и закраской.

Алгоритм ветвится, когда дальнейшие действия зависят от ответа «да» или «нет». Например: если идёт дождь, взять зонт, иначе взять кепку. В одном выполнении полного ветвления исполняется только одна из двух ветвей. Затем обе ветви сходятся к следующей общей команде.

Ветвление само не повторяет проверку. Если нужно проверять обстановку после каждого шага, его включают в цикл или применяют while. На блок-схеме условие обычно помещают в ромб, выходы подписывают «Да» и «Нет».

Главная мысль: If выбирает одну ветвь по значению условия.
2

Полная форма if … then … else

Команды двух ветвей должны быть разделены правильно.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Две ветви

Учебная модель команд PascalABC.NET. Выполняйте программу по шагам; следите за клеткой, датчиками и закраской.

if FreeFromUp then
begin
  Up;
  Right;
  Down;
end
else
begin
  Down;
  Right;
  Up;
end;
Paint;

Здесь выбирается обход сверху или снизу, а Paint после конструкции выполняется в обоих случаях. Алгоритм применим только к обстановке, где выбранный обход действительно свободен. Одна проверка FreeFromUp не гарантирует проходимость всех следующих переходов на произвольном поле.

Главная мысль: При true выполняется часть then, при false — часть else.
3

Сокращённая форма

Если особое действие нужно только при одном исходе, else можно не писать.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Одна ветвь

Учебная модель команд PascalABC.NET. Выполняйте программу по шагам; следите за клеткой, датчиками и закраской.

if FreeFromLeft then
begin
  Left;
  Paint;
end;
// Следующая общая команда идёт здесь

Если слева свободно, Робот перейдёт влево и закрасит новую клетку. Если стена, обе команды будут пропущены. Begin … end важны: без них к then относится лишь одна следующая команда, а Paint мог бы выполниться независимо от условия.

Главная мысль: При ложном условии сокращённая форма пропускает ветвь и продолжает программу.
4

Проверка обеих ветвей

Одного успешного запуска недостаточно для проверки выбора.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Проверьте обе ситуации

Учебная модель команд PascalABC.NET. Выполняйте программу по шагам; следите за клеткой, датчиками и закраской.

Для проверки if FreeFromLeft then … подготовьте две обстановки: слева проход и слева стена. Предскажите положение и закраску для каждой. Если используются вложенные if, проверяйте каждый реально возможный путь решения.

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

Главная мысль: Тесты должны включать true и false, а также допустимость команд выбранного пути.
Интерактивная практика

Исследуйте и примените

Проверьте модель на нескольких наборах данных, затем выполните самостоятельное задание.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Лаборатория: примените и проверьте

Учебная модель команд PascalABC.NET. Выполняйте программу по шагам; следите за клеткой, датчиками и закраской.

Соберём главное

Шесть выводов

01

If выбирает одну ветвь по значению условия.

02

При true выполняется часть then, при false — часть else.

03

При ложном условии сокращённая форма пропускает ветвь и продолжает программу.

04

Тесты должны включать true и false, а также допустимость команд выбранного пути.

05

Оператор if проверяет условие один раз; многократное выполнение организуется циклом.

06

Перед else не ставят точку с запятой, завершающую весь if; несколько команд одной ветви объединяют в begin … end.

Самопроверка

Тест: 10 вопросов

Один верный ответ. За ответ — 0,5 балла. Откройте и проверьте себя.

1. Что определяет выбор ветви if?

2. Сколько ветвей полного if выполняется за один выбор?

3. Когда выполняется else?

4. Что происходит при false в if без else?

5. Ставится ли точка с запятой непосредственно перед else?

6. Как включить Left и Paint в одну ветвь?

7. If FreeFromRight then Right; делает…

8. Что нужно проверить у программы с if?

9. Paint после полного if выполнится…

10. Гарантирует ли FreeFromUp безопасность всех дальнейших команд обхода?

ВыводыТестВ началоВсе параграфы
↑

Загрузка прогресса…