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

§ 11. Использование условий

Научимся читать условия Робота и управлять повторением с помощью while. Проверим случаи нулевого числа итераций, остановки у стены и зацикливания.

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

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

1

Условие — проверяемое высказывание

Проверка сообщает о состоянии, а не изменяет его.

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

Датчики Робота

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

Команда Right двигает Робота, а условие FreeFromRight только отвечает, свободен ли переход справа. Значение условия может измениться после движения. Поэтому одно и то же условие проверяют снова в новом положении.

УсловиеКогда истинно
WallFromLeft / WallFromRightСоответственно слева / справа стена
WallFromUp / WallFromDownСоответственно сверху / снизу стена
FreeFromLeft / FreeFromRightСлева / справа нет стены
FreeFromUp / FreeFromDownСверху / снизу нет стены
CellIsPaintedТекущая клетка закрашена
CellIsFreeТекущая клетка не закрашена
Главная мысль: Условие имеет значение true или false в текущей обстановке.
2

Цикл с предусловием while

Проверка выполняется до каждой попытки исполнить тело.

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

Проверка перед повторением

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

while FreeFromRight do
  Right;

Робот проверяет переход справа. Если он свободен, делает один шаг, затем снова проверяет условие. Когда справа окажется стена, тело больше не выполняется. Число повторений определяется обстановкой, а не записанным заранее числом.

  1. Проверить

    Вычислить условие в текущем положении.

  2. Да

    Выполнить тело и вернуться к проверке.

  3. Нет

    Перейти к команде после цикла.

Главная мысль: Пока условие истинно, тело повторяется; при ложном условии цикл заканчивается.
3

Закраска пути до стены

Порядок действий определяет, попадут ли в рисунок крайние клетки.

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

До стены и последняя клетка

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

При каждой итерации закрашивается клетка, из которой Робот уходит. В последней клетке условие FreeFromRight уже ложно, поэтому Paint внутри тела не выполняется. Отдельная команда Paint после цикла завершает задачу и работает даже в ряду из одной клетки.

while FreeFromRight do
begin
  Paint;
  Right;
end;
Paint;
Главная мысль: В while FreeFromRight do begin Paint; Right; end последнюю клетку нужно закрасить после цикла.
4

Как цикл заканчивается

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

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

Почему цикл не заканчивается?

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

В программе while FreeFromRight do Paint; Робот остаётся на месте. Если справа свободно, закрашивание не изменит это условие, и цикл будет повторяться бесконечно. Ошибка здесь не в синтаксисе, а в алгоритме: тело не приближает к остановке.

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

Главная мысль: Если условие остаётся истинным и тело не меняет нужное состояние, возможно зацикливание.
Интерактивная практика

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

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

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

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

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

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

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

01

Условие имеет значение true или false в текущей обстановке.

02

Пока условие истинно, тело повторяется; при ложном условии цикл заканчивается.

03

В while FreeFromRight do begin Paint; Right; end последнюю клетку нужно закрасить после цикла.

04

Если условие остаётся истинным и тело не меняет нужное состояние, возможно зацикливание.

05

While проверяет условие до тела, поэтому может не выполнить ни одного повторения.

06

CellIsFree проверяет отсутствие закраски текущей клетки, а FreeFromRight — свободный проход справа; это разные свойства.

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

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

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

1. Что делает проверка FreeFromRight?

2. Когда CellIsFree истинно?

3. Когда проверяется условие while?

4. Если условие while сразу ложно, тело выполнится…

5. Что остановит while FreeFromRight do Right;?

6. В цикле Paint; Right; какая крайняя клетка остаётся без закраски?

7. Как исправить незакрашенную последнюю клетку?

8. Почему while FreeFromRight do Paint; может зациклиться?

9. Что удобнее при неизвестной длине прохода?

10. При трёх выполнениях тела while сколько проверок условия до нормального выхода?

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

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