Образовательный портал Павла Добряка

6.4. Исполнитель Робот в лабиринте

Задача 6.4.1. Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости:

вверх

вниз

влево

вправо

 

При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно (по отношению к наблюдателю): вверх ↑, вниз ↓, влево ←, вправо →.

 

Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ (также по отношению к наблюдателю):

сверху
 свободно

снизу
 свободно

слева
 свободно

справа
 свободно

 

Цикл

ПОКА < условие >

последовательность команд

КОНЕЦ ПОКА

выполняется, пока условие истинно.

 

В конструкции

ЕСЛИ < условие >

ТО команда1

ИНАЧЕ команда2

КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

 Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится и программа прервётся.

Сколько клеток лабиринта соответствуют такому требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?

1

 

 

 

 

 

 

2

 

 

 

 

 

 

3

 

 

 

 

 

 

4

 

 

 

 

 

 

5

 

 

 

 

 

 

6

 

 

 

 

 

 

 

A

B

C

D

E

F

 

НАЧАЛО

ПОКА<справа свободно ИЛИ снизу свободно >

ПОКА < снизу свободно >

вниз

КОНЕЦ ПОКА

ПОКА < справа свободно >

вправо

КОНЕЦ ПОКА

КОНЕЦ ПОКА

КОНЕЦ

После решения этой задачи у вас может появиться иллюзия, что вы всё поняли. Иногда это бывает не так. Ученики путают циклы и условия. Поэтому решим еще три задачи на этот же самый лабиринт, заменив некоторые операторы цикла «пока» на операторы условия «если»:


Задача 6.4.2. Пояснение и лабиринт такие же, как и в предыдущей задаче:

1

 

 

 

 

 

 

2

 

 

 

 

 

 

3

 

 

 

 

 

 

4

 

 

 

 

 

 

5

 

 

 

 

 

 

6

 

 

 

 

 

 

 

A

B

C

D

E

F

 

Алгоритм:

НАЧАЛО

ПОКА<справа свободно ИЛИ снизу свободно >

ПОКА < снизу свободно >

вниз

КОНЕЦ ПОКА

ЕСЛИ < справа свободно >

вправо

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Изменим теперь первый внутренний цикл, заменив ПОКА  на ЕСЛИ:


Задача 6.4.3. Пояснение и лабиринт такие же, как и в задаче 6.4.1:

1

 

 

 

 

 

 

2

 

 

 

 

 

 

3

 

 

 

 

 

 

4

 

 

 

 

 

 

5

 

 

 

 

 

 

6

 

 

 

 

 

 

 

A

B

C

D

E

F

 

Алгоритм:

НАЧАЛО

ПОКА<справа свободно ИЛИ снизу свободно >

ЕСЛИ < снизу свободно >

вниз

КОНЕЦ ЕСЛИ

ПОКА < справа свободно >

вправо

КОНЕЦ ПОКА

КОНЕЦ ПОКА

КОНЕЦ

Заменим все внутренние циклы ПОКА на ЕСЛИ:


Задача 6.4.4. Пояснение и лабиринт такие же, как и в задаче 6.4.1:

1

 

 

 

 

 

 

2

 

 

 

 

 

 

3

 

 

 

 

 

 

4

 

 

 

 

 

 

5

 

 

 

 

 

 

6

 

 

 

 

 

 

 

A

B

C

D

E

F

Алгоритм:

НАЧАЛО

ПОКА<справа свободно ИЛИ снизу свободно >

ЕСЛИ < снизу свободно >

вниз

КОНЕЦ ЕСЛИ

ЕСЛИ < справа свободно >

вправо

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

 

Задача 6.4.5. Пояснение такое же, как и в задаче 6.4.1.

 

Схема лабиринта:

1

 

 

 

 

 

 

2

 

 

 

 

 

 

3

 

 

 

 

 

 

4

 

 

 

 

 

 

5

 

 

 

 

 

 

6

 

 

 

 

 

 

 

А

B

C

D

E

F


Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет (не врежется в стену) и остановится в закрашенной клетке (клетка F6)?

 

НАЧАЛО

     ПОКА <снизу свободно ИЛИ справа свободно>

          ПОКА <снизу свободно>

               вниз

          КОНЕЦ ПОКА

          вправо

     КОНЕЦ ПОКА

КОНЕЦ

Еще одна задача связана с хождением робота по кругу:


Задача 6.4.6. Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости:

 

1

 

 

 

 

 

 

2

 

 

 

 

 

 

3

 

 

 

 

 

 

4

 

 

 

 

 

 

5

 

 

 

 

 

 

6

 

 

 

 

 

 

 

A

B

C

D

E

F

 

вверх

вниз

влево

вправо

При выполнении этих команд РОБОТ перемещается на одну клетку соответственно: вверх, вниз, влево, вправо.

Четыре команды проверяют истинность условия отсутствия стены у той клетки, где находится РОБОТ:

сверху
 свободно

снизу
 свободно

слева
 свободно

справа
 свободно

Цикл

ПОКА < условие> команда

выполняется, пока условие истинно, иначе происходит переход на следующую строку.

Сколько клеток лабиринта соответствуют требованию, что, выполнив предложенную программу, РОБОТ остановится в той же клетке, с которой он начал движение?

НАЧАЛО

ПОКА < снизу свободно > вниз

ПОКА < слева свободно > влево 

ПОКА < сверху свободно > вверх

ПОКА < справа свободно > вправо 

КОНЕЦ