![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Решения для различных исполнителей
Конкретный вид решения, разумеется, сильно зависит от системы команд исполнителя. Тем не менее, для некоторых из них алгоритмы выглядят очень, похоже. Ниже показаны решения задачи для исполнителей " Черепашка" (язык Лого) и " Кенгуренок". В обоих из них после некоторых подготовительных действий четыре раза выполняется процедура р1, которая рисует по три стороны фигуры (первый раз это АБ, ВС и СО, затем по той же программе изображаются стороны ОЕ, ЕР и РО и т.д.).
Поскольку исполнитель " Кенгуренок" обладает меньшими возможностями (например, поворачивается только налево и не умеет подсчитывать количество повторений), программа для него заметно длиннее. А вот для исполнителя " Чертежник", описанного в учебнике А.Г. Кушниренко с соавторами, алгоритм будет несколько другим. Причина состоит в том, что в отличие от двух предыдущих исполнителей " Чертежник" не имеет понятий " вперед" и " назад", а пользуется системой координат, связанной с листом бумаги. С другой стороны, благодаря такому принципу работы он не нуждается в поворотах. Поэтому для " Чертежника" фигура разделяется не на четыре, а на две повторяющиеся части; их границей служит точка 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. Нач нц пока слева стена | вверх кц кон Так выглядят решения предложенной задачи для четырех различных исполнителей. Разумеется, учитель может использовать и любого другого исполнителя.
|