§4. Задачи с использованием вспомогательных алгоритмов
Пусть требуется написать алгоритм, который проводит Робота из клетки А в клетку Б и закрашивает клетки, отмеченные точками (рис 50)
(рис
50)
На рисунке показан один из возможных путей Робота при решении этой задачи. Видно, что Робот должен закрасить три прямоугольных "блока" размером 3x5 клеток, а между закрашиваниями блоков два раза обойти стену. Запишем эту мысль в виде основного алгоритма:
Алг из А в Б с закрашиванием
●дано | Робот в точке А
●надо | Робот в точке Б, нужные клетки закрашены
нач
● закрашивание блока
● обход стены
● закрашивание блока
●обход стены
●закрашивание блока
кон
Теперь составим вспомогательные алгоритмы, используемые в основном алгоритме "из А в Б с закрашиванием" :
алг закрашивание блока
●дано |Робот в левом верхнем углу блока 3X5 клеток
●надо |блок закрашен, Робот в его правом нижнем углу
нач
●закрасить; вправо; закрасить; вправо; закрасить; вниз
●закрасить; влево; закрасить; влево; закрасить; вниз
●закрасить; вправо; закрасить; вправо; закрасить; вниз
●закрасить; влево; закрасить; влево; закрасить; вниз
● закрасить; вправо; закрасить; вправо; закрасить; вниз
кон
алг обход стены
●дано | Робот в правом нижнем углу блока
●надо |Робот в левом верхнем углу следующего блока
нач
●вправо; вверх; вверх; вверх; вверх; вверх; вверх
●вправо; вправо; вниз; вниз
кон
Задание для самостоятельного разбора:
алг из А в Б
●дано | Робот в клетке А
●надо | Робот в клетке Б (рис 51)
нач
●участок; участок; участок; участок; участок
кон
алг участок
●дано | Робот в начале участка
●надо | Робот в конце участка
нач
●вверх; вверх; вправо; вниз; вниз; вправо
кон
(рис
51)
Задание 1
Даны алгоритмы:
использовать Робот
алг фигура
нач
●фрагмент; фрагмент; фрагмент; фрагмент; фрагмент
кон
использовать Робот
алг фрагмент
нач
●закрасить; вправо; закрасить; вправо; закрасить; вправо
●закрасить; вниз; закрасить; вниз; закрасить; вниз
●закрасить; влево; закрасить; влево; закрасить; влево
●закрасить; вверх; закрасить; вверх; закрасить
●вправо; вправо; вправо; вниз; вниз
кон
Нарисуйте результат выполнения алгоритма "фигура" (закрашенные клетки, начальное и конечное положения Робота).
Задание 2.
Измените вспомогательный алгоритм "фрагмент" (Задание 1) так, чтобы при выполнении алгоритма Робот переместился из А в Б и закрасил клетки, отмеченные точками (рис 52, рис 53, рис 54).
(рис
52)
(рис
53)
(рис
54)
Задание 3.
Составьте алгоритм, который закрашивает в шахматном порядке квадрат 10 X 10. начиная с левого верхнего угла.
Задание 4
Воспользовавшись вспомогательными алгоритмами "вверх до стены", "вниз до стены", "вправо до стены", "влево до стены", составьте алгоритмы со следующими заголовками:
а) алг переход в противоположный угол
дано | Робот стоит в каком-то углу прямоугольника,
| огороженного стенами. Других стен нет
надо | Робот в противоположном углу
б) алг к противоположной стене
дано | Робот стоит у стены (но не в углу) внутри
| прямоугольника,
| обнесенного со всех сторон стенами;
| внутри прямоугольника других стен нет
надо | Робот перешел к противоположной стене
Задание 5
алг закрасить тупики
дано | робот в точке А
надо | закрашены все клетки, отмеченные точками,
| робот в точке Б (рис 55)
нач
кон
алг глазик
нач
кон
(рис
55)
Задание 6
Робот находится в верхнем левом углу поля. Закрасить поле таким образом, как показано на (рисунке 56). Робот в правом нижнем углу.
алг Главный
дано | робот в точке А
надо | робот в точке Б
нач
кон
(рис
56)
Задание 7
Робот находится в верхнем левом углу поля. Закрасить поля, отмеченные знаком *. (рис 57)
алг Главный
дано | робот в точке А
надо | Закрасить поля, отмеченные знаком *. Робот в точке Б
нач
кон
(рис
57)
