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

§ 13. Использование основных алгоритмических конструкций для исполнителя Робот

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

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

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

1

Три конструкции в одной программе

Программа может быть сложной, но её части имеют понятные роли.

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

Цикл и выбор вместе

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

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

Следование

Right; Paint; — сначала шаг, затем закраска.

Цикл

While FreeFromRight do Right; — движение до стены.

Ветвление

If CellIsFree then Paint; — закрашивание по условию.

Главная мысль: Следование задаёт порядок, цикл — повторение, ветвление — выбор.
2

Ветвление внутри цикла

Условие выбора вычисляется заново при каждой итерации.

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

Стена сверху — условие закраски

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

while FreeFromRight do
begin
  if WallFromUp then
    Paint;
  Right;
end;
if WallFromUp then
  Paint;

Робот идёт вправо и закрашивает только клетки, над которыми есть стена. Right выполняется на каждой итерации, а Paint — только при истинном WallFromUp. Последняя клетка проверяется отдельно, потому что на ней цикл движения заканчивается.

Главная мысль: Цикл обходит объекты, а if решает, что делать с текущим объектом.
3

Вложенные циклы и блоки

Внутренний цикл полностью завершается на каждой итерации внешнего.

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

Вложенные циклы

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

Если внешний цикл выполняется 3 раза, а внутренний каждый раз 4 раза, внутреннее тело выполнится 12 раз. Для Робота этого подсчёта недостаточно: нужно ещё проверить перемещения, возврат к началу ряда и границы поля. Неправильный переход может вызвать ошибку раньше завершения циклов.

for var row := 1 to 3 do
begin
  for var col := 1 to 4 do
    Paint;
  // Paint не перемещает Робота
end;
Главная мысль: При фиксированных независимых границах число выполнений внутреннего тела равно произведению чисел итераций.
4

Составляем и проверяем сложный обход

Известная стратегия должна соответствовать конкретным стенам и размерам.

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

Обход змейкой

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

Для обхода нескольких рядов можно использовать «змейку»: пройти ряд вправо, спуститься на один ряд, пройти влево. Внешний цикл повторяет обработку рядов, внутренний while идёт до боковой стены. Спуск после последнего ряда запрещён, поэтому его выполняют только при свободном переходе вниз.

  1. Разметить блоки

    Определить, что входит в цикл и в каждую ветвь.

  2. Проследить один ряд

    Проверить первую и последнюю клетки, конец прохода.

  3. Проверить переход

    Убедиться, что спуск разрешён и следующий ряд начинается в правильной точке.

  4. Проверить весь результат

    Сопоставить закраску и конечную клетку с условием задачи.

Главная мысль: Проверяйте программу по блокам и на нескольких допустимых обстановках.
Интерактивная практика

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

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

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

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

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

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

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

01

Следование задаёт порядок, цикл — повторение, ветвление — выбор.

02

Цикл обходит объекты, а if решает, что делать с текущим объектом.

03

При фиксированных независимых границах число выполнений внутреннего тела равно произведению чисел итераций.

04

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

05

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

06

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

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

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

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

1. Какая конструкция отвечает за выбор?

2. Что делает цикл в программе обработки ряда?

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

4. Внешний цикл 3 раза, внутренний каждый раз 4. Сколько выполнений внутреннего тела?

5. Если внутреннее тело содержит только Paint, Робот…

6. Для чего нужны отступы?

7. Зачем отдельно обрабатывать конечную клетку прохода?

8. Когда безопасен спуск в следующий ряд?

9. Подходит ли обход без внутренних стен для любого лабиринта?

10. Что должно быть известно о завершившемся блоке?

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

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