Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на билеты информатика.doc
Скачиваний:
83
Добавлен:
19.08.2019
Размер:
1.83 Mб
Скачать

2. Разработка алгоритма перемещений и действий для исполнителей типа "Робот" или "Черепашка".

Просмотрев упражнения к нескольким школьным учебникам, мы остановили свой выбор на задаче пост­роения изображения, которая может решаться для са­мых разнообразных исполнителей. Сразу подчеркнем, что, помимо приведенных ниже решений, содержащих 'процедуры и циклы, ученики могут реализовать и более простые линейные решения (просто написать длинный список необходимых команд, не обращая внимания на то, что они порой повторяются). По нашему мнению, это хорошо, ибо дает возможность слабым ученикам хоть как-то справиться с заданием; разумеется, оценка в пос­леднем случае должна быть ниже.

Условие задачи

Составить алгоритм, в результате выполнения которо­го на экране будет вычерчено следующее изображение:

H G

J I F E

K D

L C

A B

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

Примечание. Буквы нанесены на рисунок исключительно ради удобства обсуждения в тексте статьи; их рисование на дисплее в задачу не входит!

Решения для различных исполнителей

Конкретный вид решения, разумеется, сильно зави­сит от системы команд исполнителя. Тем не менее, для некоторых из них алгоритмы выглядят очень, похоже. Ниже показаны решения задачи для исполнителей "Че­репашка" (язык Лого) и "Кенгуренок". В обоих из них после некоторых подготовительных действий четыре раза выполняется процедура р1, которая рисует по три стороны фигуры (первый раз это АБ, ВС и СО, за­тем по той же программе изображаются стороны ОЕ, ЕР и РО и т.д.).

Программа для Logo Writer

Программа для исполнителя "Кенгуренок"

То таin :Х

прыжок

Ноmе

прыжок

С1еаn

прыжок

Right 90

прыжок

Repeat 4 [р1 :Х]

сделай р1

Епd

сделай р1

сделай р1

сделай р1

То р1 :Х

процедура р1

Forward. :Х

сделай 1ine

Left 90

поворот

Forward :Х

сделай 1ine

Right: 90

поворот

Forward:Х

поворот

Left 90

поворот

Еnd

сделай 1ine

поворот

коней процедуры

процедура 1ine

шаг

шаг

шаг

шаг

конец процедуры

Поскольку исполнитель "Кенгуренок" обладает мень­шими возможностями (например, поворачивается только налево и не умеет подсчитывать количество повторений), программа для него заметно длиннее.

А вот для исполнителя "Чертежник", описанного в учебнике А.Г. Кушниренко с соавторами, алгоритм будет несколько другим. Причина состоит в том, что в отличие от двух предыдущих исполнителей "Чертежник" не име­ет понятий "вперед" и "назад", а пользуется системой координат, связанной с листом бумаги. С другой сторо­ны, благодаря такому принципу работы он не нуждается в поворотах. Поэтому для "Чертежника" фигура разделя­ется не на четыре, а на две повторяющиеся части; их границей служит точка G на рисунке. Команды рисования обеих частей рисунка совпадают с точностью до зна­ка аргумента Х, именно поэтому повторный вызов вспо­могательного алгоритма р1 содержит знак "минус" пе­ред аргументом. Обратите также внимание на то, что алгоритмы рисования линий АВ—ВС и СО—ОЕ для дан­ного исполнителя одинаковы, что позволяет во вспомога­тельном алгоритме р1 использовать цикл повторения не­обходимых действий два раза (разумеется, если ученик вместо такого цикла дважды напишет повторяющуюся пару команд, это не будет ошибкой!).

Исполнитель "Чертежник"

алг плюс (арг веш X)

нач

поднять перо

сместиться на вектор(X, 0)

опустить перо

р1(Х)

р1(-X)

кон

алг р1 (арг веа X)

нач

нц 2 раза

сместиться на вектор(X, 0)

сместиться на вектор(0, X)

кц

сместиться на вектор(—X, 0)

сместиться на вектор(0, X)

кон

Наконец, рассмотрим еще одного исполнителя, кото­рый также описывается в этом же учебнике, — это "Робот". "Робот" не умеет рисовать, поэтому для него придется несколько переформулировать задачу. Двига­ясь вдоль стены, он должен будет обойти вокруг всей фигуры из начального положения, показанного на ри­сунке около буквы А.

Кстати говоря, данное небольшое изменение зада­чи приводит к существенному изменению ее реше­ния. Дело в том, что размеры стены, вдоль которой движется "Робот" (если хотите, для наглядности ее можно называть забором), теперь заданы, и ему не надо заботиться о длине пути — достаточно контро­лировать свое положение относительно стены. Именно поэтому в решении отсутствуют какие-либо геомет­рические параметры.

И еще об одной особенности решения для данного исполнителя. Из-за довольно "жесткой" системы команд — только на одну клетку строго в указанном направлении — решение получается очень громоздким. Может быть, стоит даже упростить задачу, убрав, на­пример, выступ стены РСН1. Нам удалось написать ал­горитм, используя 8 однотипных вспомогательных ал­горитмов, т.е. по два на каждое направление (напом­ню, что всего у фигуры 12 сторон). Три первых алго­ритма (для сторон АВ, ВС и СО) приведены в правой колонке, остальные легко могут быть восстановлены чи­тателями по аналогии.

Исполнитель "Робот"

алг обход

нач

право 1

верх 2

право 1

верх 1

лево 2

верх 1

лево 1

низ 2

лево1

низ1

право 2

низ1

кон

алг право1

нач

нц пока сверху стена

| вправо

кц кон

алг верх 2

нач

нц пока сверху свободно

1 вверх

кц кон

алг верх1.

нач

нц пока слева стена

| вверх

кц

кон

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