|
|||||||||||||||||||||||||
Методика преподавания основ алгоритмизации на базе системы “КуМир”. Лекция 2. Практическое знакомство с системой “КуМир”Исполнитель “Робот”. Понятие алгоритма. Управление “Роботом” с помощью пульта. Команды-вопросы. Протокол сеанса ручного управления “Роботом”. Автоматическое управление “Роботом” с помощью ЭВМ. Алгоритм — план будущей деятельности. Алгоритмический язык. В конце восьмидесятых годов в Политехническом музее в Москве проходили тематические встречи, организованные редакцией популярного тогда среди компьютерных специалистов журнала “Микропроцессорные средства и системы”. Один из таких вечеров был посвящен компьютерным играм и проводился под лозунгом “Учись работать играя”. В этом лозунге много верного. Часто компьютерные игры имеют удобный и привычный интерфейс, базирующийся на накопленных игроком вне компьютерной сферы знаниях и навыках. А значит, процесс обучения становится практически незаметным или даже ненужным: человек сразу приступает к решению поставленной перед ним задачи — начать играть в новую, неизвестную ему до этого момента игру и... постараться в этой игре преуспеть: выиграть конкретный раунд, подняться на возможно более высокий уровень, показать рекордный результат и т.д. Но желание преуспеть возникает не только в играх, и это можно использовать в обучении. Важнейшее условие здесь — возможность быстрого достижения первых успехов каждым учеником. Мы провозгласили самостоятельной целью развитие алгоритмического стиля мышления и сказали, что при достижении этой цели есть собственные сложности, которые учителю и ученикам придется преодолевать. Сложностей много, но на первых порах главная из них — техническая. Сколько времени и сил придется потратить ученику, чтобы освоить “правила игры”, начать “играть” (а в действительности начать “учиться работать”) и добиться первого успеха? Хотелось бы, чтобы требуемое время измерялось минутами, а усилия были близки к нулю, чтобы вхождение в новую игру (изучение информатики) делалось, как говорится, “играючи”! Именно поэтому на начальном этапе обучения задачи, которые решают ученики, и инструменты, которые при этом используются, нужно очистить от мешающих лишних технических деталей, от неизвестного (или известного, но “чужого”) английского алфавита и английских слов, от необходимости набирать длинные тексты (или от необходимости набирать тексты вообще), от необходимости тратить силы на понимание условий задачи, выраженных в математической форме.
Поэтому мы начинаем с Робота. Для понимания устройства Робота и правил управления им нужен всего лишь здравый смысл. Робот чрезвычайно прост, и изучать в нем практически нечего. Точно так же, как нечего изучать в большинстве игр, прежде чем начинаешь в них играть1. Чтобы рассказать, что такое Робот, хватит и трех минут. Фраза “Роботом можно управлять с помощью пульта” понятна и дошколятам. Ведь созданный нашим воображением Робот прост, и набор правил для игры с ним ребенок может осознать как набор условных, игровых понятий. С другой стороны, жизненный багаж малышей, как правило, уже содержит знания о том, что бывают радиоуправляемые игрушки, что они управляются дистанционно с помощью пульта, что при неудачном управлении игрушка может упереться в стену и т.д. Поэтому для них не будет удивительным, что введенный нами (взрослыми) воображаемый Робот управляется дистанционно и у него есть пульт управления. То, что пульт управления имеет много кнопок, также вряд ли удивит ребенка, так как он знает, что пульты “водятся” в доме повсюду и наличие на них различных непонятных кнопок совершенно не беспокоит ни детей, ни взрослых. Важно уметь пользоваться лишь некоторыми из них. Итак, для начального знакомства с Роботом вообще ничего знать не нужно. Даже не обязательно твердо помнить, где “право”, а где “лево”, так как на кнопках пульта Робота вместо слов “вправо-влево” выгравированы стрелки. Но задачи уже можно ставить и решать. Замечательно в этих задачах то, что если уж ученик задумался над задачей по управлению Роботом, то учитель может быть на 100% уверен, что все сложности ученика алгоритмические: “как же это сделать?”, а не “что же тут надо решать?”. Нет сложности не только в самом Роботе, но и в постановке задачи. Нарисуем на поле Робота прямоугольное препятствие размером 3 ? 4, поставим Робота под левым нижним углом препятствия, дадим школьнику пульт и попросим “поуправлять” Роботом так, чтобы он обошел вокруг препятствия и закрасил все клетки, прилегающие к препятствию. Эта постановка задачи проста и даже скучновата. Задача станет интереснее, если попросить школьников составить план решения аналогичной задачи обхода прямоугольного препятствия “неизвестных размеров”. Неизвестность размеров проявляется в том, что пульт школьнику дается, а поле Робота не показывается. Тут-то и возникает стимул для изучения остальных кнопок на пульте Робота — команд-вопросов. Опыт работы со школьниками показывает, что после демонстрации работы этих команд задача обхода прямоугольного препятствия “неизвестных размеров” также не вызывает особых трудностей у 5–6-классников. В этот момент и начинается самое интересное. На табло пульта высвечивается протокол диалога Человека и Робота при решении задачи Человеком, не видящим поля Робота, а получающим всю информацию об окружении Робота с помощью команд-вопросов, “задаваемых” с пульта. Возникает идея поручить проведение подобного диалога автоматическому устройству — ЭВМ. Для реализации этой идеи нужно придумать правила описания подобных диалогов — алгоритмический язык. И попытаться записать на этом языке алгоритм “автоматического” обхода препятствия. В этот момент и начнутся трудности. Они ожидаемы и объяснимы. Ведь школьник должен будет освоить правила новой сложной двухэтапной игры: сначала он должен составить план будущей деятельности и записать его по строгим правилам, и только после того как работа по составлению плана будет закончена, ЭВМ станет выполнять этот план, командуя Роботом. Только на втором этапе станет ясно, был ли план составлен правильно или нет. В новой “двухэтапной” игре есть две новые трудности. Техническая, которой можно и нужно избежать, и содержательная, избежать которой нельзя. Техническая трудность состоит в том, что алгоритм нужно описывать по строгим формальным правилам, и школьник может нарушить эти правила, записывая свои идеи по автоматическому управлению Роботом. На первых порах этой трудности можно избежать, предоставив школьнику программную систему, которая позволяет создавать только правильные алгоритмы. Содержательная трудность состоит в том, что правильно записанный алгоритм может делать не то, что требовалось в условии задачи. То есть возникает вопрос, смогут ли ученики составить требуемый алгоритм, смогут ли они преодолеть алгоритмическую сложность задачи, “выделенную в чистом виде” и представленную им как таковую. Данный курс и посвящен объяснению того, как педагог может помочь школьникам преодолеть эту содержательную трудность овладения алгоритмическим стилем мышления. Забежав вперед, заметим, что у учителя
в данном курсе будет три основных инструмента: 1)
школьный язык программирования (сокращенно —
язык “КуМир”),
“КуМир” — учебная система. Она сводит к минимуму “накладные расходы” на освоение, имеет развитую систему диагностики ошибок, средства, позволяющие ученику следить за выполнением программы, и т.п. Ученик, никогда ранее не программировавший, может начать писать и выполнять относительно сложные алгоритмы через 1–2 часа после первого знакомства с “КуМиром”. В то же время, система “КуМир” позволяет создавать достаточно большие и сложные программы (сотни строк). Работа в “КуМире” очищена от понятий
“компиляция” и “режим отладки”. Можно сказать,
что “КуМир” (на начальном уровне обучения)
очищен даже от понятия вывода информации, хотя
работа с файлами включена в него как отдельный
исполнитель. При создании Е-практикума — нулевой
версии системы “КуМир” — Простота начального освоения Робота создает у учеников, особенно у лидеров класса по данному предмету, справедливое на первый взгляд ощущение игрушечности происходящего. Поэтому важно с самого начала обнародовать ряд задач высокой алгоритмической сложности, над которыми лидеры класса могут трудиться часами и гордиться, когда решение будет получено. Еще одна проблема — монотонность, графическая похожесть обстановок, в которых действует Робот. Для того чтобы внести в методику работы с Роботом графическое (да и алгоритмическое) разнообразие, Робота в “КуМире” можно “высаживать” не только на плоские клетчатые “планеты”, но и на цилиндрические или даже тороидальные. Для дошкольников или младшеклассников игрушечность Робота совершенно необходима и полезна. Графически Робот должен быть привлекательным, симпатичным и смешным, таким, как Робот-фонарщик в игре Lightbot (см. лекцию 1), а вовсе не унылым ромбиком, как в учебнике 7–9 Кушниренко, Лебедева, Зайдельмана. Графическая аскетичность уместна в старших классах школы, дабы не отвлекать ученика от содержательной задачи забавным видом исполнителя.
Игрушечная простота, однако, не всегда присуща даже компьютерным играм. Так, книга правил игры “Star Wars RPG” — это 300-страничный том, правда, написанный в стиле “all you need to play”. В другой игре — “Dungeons & Dragons”, для полноценной игры потребуются минимум две такие книжки, не изучив которые нельзя даже думать о победе. Итак, вернемся к принципам преподавания, которые мы предлагаем. Г.В. Лебедев в своих лекциях в Архангельске сформулировал их так: “Наш курс и, соответственно, учебник построены на трех глобальных методических принципах: 1) все познается через работу (“черепаха” курса); 2) проблемный подход; 3) выделение алгоритмической сложности в “чистом виде”2. Если рассказанная выше задача обхода прямоугольного препятствия покажется слишком сложной, в качестве первой “проблемы”, которую можно поставить перед учениками, возьмите более простую задачу: используя пульт, переместить Робота по полю вниз, обойдя первое встретившееся прямоугольное препятствие. В наши дни большинство школьников (и даже дошколят) знакомы с радиоуправляемыми машинками и успешно управляются с ними дома или в парке аттракционов. Поэтому для современного ребенка даже 5–6 лет тут нет никакой серьезной задачи. Решения ребенок принимает по ходу управления, к тому же домашние машинки сложнее Робота. Робот по своей природе дискретен: выполнение двух команд влево, а затем двух команд вправо вернет Робота в ту клетку, где он был в начале. Такой стиль управления исполнителем с помощью пульта мы назовем “непосредственным управлением”: решение об управляющем воздействии принимается по ходу управления.
Если при командовании Роботом мы видим поле Робота и его перемещения, то команды обратной связи нам не нужны. Такой режим полезен в самом начале освоения Робота. Пусть теперь мы не видим поля Робота, как будто он находится на далекой планете, а нам по-прежнему нужно им управлять. На пульте есть специальные кнопки, нажав которые мы можем запросить информацию от Робота, в конструкцию которого включены различные датчики. Робот смотрит (или ощупывает), есть ли стена справа (мы нажали кнопку “стена” и “вправо” и получили на табло ответ “справа стена — нет”). Значит, справа стены нет. Теперь задача ученика — не видя ничего, кроме пульта управления, заставить Робота спуститься под препятствие (при этом расстояние от начального положения Робота до препятствия неизвестно). Это некоторое незначительное
усложнение: ученик должен представлять себе
обстановку Робота в уме и принимать решение,
базируясь на ответах Робота. Может, и не с первой
попытки, но практически все ученики такую задачу
решат. Надо осторожно шагать вниз до препятствия:
при каждом шаге проверять, свободно ли еще внизу.
Как только дойдем до препятствия, на очередной
вопрос “снизу свободно” Робот ответит “нет”. Как уже говорилось, записать или объяснить устно кому-нибудь придуманный алгоритм решения задачи труднее, чем выполнить работу самому. Эксперименты, проведенные в классах, показывают, что если школьника попросить записать последовательность нажатий на кнопки пульта Робота для решения задачи предыдущего абзаца (обхода препятствия неизвестных размеров, находящегося где-то ниже Робота), то значительная часть учеников, которая прекрасно представляет, на какие кнопки и как надо нажимать, чтобы заставить Робота обойти препятствие, не в состоянии четко записать эту последовательность действий. Проблема состоит в том, что если раньше ученик просто нажимал на кнопки (схема “непосредственного управления”), то теперь он пишет программу (алгоритм), которая далее будет выполняться без его участия — обычно с помощью ЭВМ, которая “нажимает на кнопки” и командует исполнителем. Итак, задача записи алгоритма для его последующего автоматического выполнения разделяется на два этапа: на первом этапе нужно не только записать алгоритм, но и выбрать способ записи, некоторый формальный язык, который понимает и человек, и ЭВМ (или любое другое устройство, которое предназначено для выполнения алгоритма, имеющее связь с исполнителем3). На втором этапе происходит отчуждение алгоритма от человека, и ЭВМ сама начинает командовать Роботом в соответствии с составленным алгоритмом. Почему же алгоритм трудно записать? Можно выделить три причины: · во-первых, алгоритм придется сразу продумать во всех деталях, ничего нельзя отложить на потом — ведь выполнять алгоритм будем уже не мы, а ЭВМ;· во-вторых, мы должны записать алгоритм без двусмысленностей, тут тоже нельзя отложить уточнение деталей “на потом”;· в-третьих, выполнять алгоритм будет ЭВМ — достаточно простое техническое устройство. ЭВМ может понимать только некий формальный язык и, как бы не было обидно, не может догадаться, что мы “имели в виду”, — все должно быть описано явно, точно, формально и на понятном для ЭВМ языке. Автор алгоритма в его исполнении не участвует и не может ничего исправить по ходу дела.Итак, алгоритм — это план будущей деятельности, записанный в заранее выбранной формальной системе обозначений (нотации). Для простоты будем считать, что составляет алгоритм человек, а выполняет — ЭВМ. И все-таки, как же миновать трехглавого дракона, который мешает нам научиться составлять алгоритмы для ЭВМ? Прежде всего сделаем шаг назад и заметим, что задача записи алгоритма существует и вполне реальна. Предположим, мы посылаем Робота на какую-нибудь далекую планету. Пусть мы — на Земле, а Робот — на клетчатом поле на космической станции на Нептуне. Тогда, если мы сами командуем Роботом с Земли, наша команда дойдет до Нептуна примерно за 4 часа, после чего еще столько же времени ответ будет идти назад. Скажем, мы “спросили” “справа стена?”, через 4 часа эта команда дойдет до Робота, Робот проверит, есть ли справа стена, и еще 4 часа ответ будет идти обратно на Землю. И только после этого мы сможем его проанализировать, принять решение, куда двигаться дальше, и послать соответствующую команду Роботу (которая еще 4 часа будет идти до Робота). Такое управление предполагает неторопливое исследование планеты с темпом выдачи команд — 3 команды в сутки. В большинстве случаев такой низкий темп недопустим. Более того, на Нептуне за 8 часов со стенками может что-нибудь случиться: одни стенки могут исчезнуть, а другие — возникнуть. Чтобы управлять Роботом с нормальной скоростью, можно вывести на орбиту вокруг Нептуна спутник и командовать Роботом со спутника. От спутника до Робота сигнал будет идти доли секунды — задержек не будет, и процесс ускорится. Поскольку, однако, мы не собираемся держать на борту спутника экипаж для управления Роботом, на спутнике придется установить ЭВМ. Тогда мы с Земли сможем послать на спутник программу — алгоритм управления Роботом. Эта программа будет идти до спутника те же 4 часа, но зато потом ЭВМ сможет командовать Роботом без нашего участия, выдавая команды и получая ответы за доли секунды. Для нас методически важно четкое разграничение того, что делает исполнитель, а что — ЭВМ, поэтому в приведенном примере не рассматривается возможность интеграции ЭВМ прямо с Роботом, так как это будет совсем другой исполнитель и для него нужно писать совсем другие алгоритмы. Но вернемся к задаче записи учеником первого в его жизни алгоритма. При этом приходится раздваивать внимание: во-первых, нужно использовать только допустимые правила записи, а во-вторых, нужно заботиться о том, чтобы алгоритм на втором этапе выполнялся правильно. Смягчить эти трудности может помочь пульт.
В информационном окне пульта прокручиваются выполняемые Роботом команды. Конечно, сейчас мы еще ничего не знаем о языке ЭВМ, однако мы достаточно знаем о командах Робота и можем предположить, что ЭВМ может их понять и управлять Роботом. Рассмотрим первый вариант, без обратной связи, когда ученик видит поле Робота и должен провести его ниже препятствия. Эта задача легко решалась при помощи пульта, и, главное, результат ее решения — требуемая последовательность команд — оказался запомненным в окне пульта. Давайте используем это при составлении программы для ЭВМ. Запустим систему “КуМир”. И просто перепишем все команды, которые мы нажимали на пульте Робота (они видны в окне на пульте), в окно системы “КуМир” между скобками “нач” и “кон”. Обратим внимание, что “КуМир” позитивно реагирует на наши записи, окрашивая в синий цвет введенные нами команды. На полях при этом нет никаких сообщений. Это означает, что команды Робота знакомы ЭВМ и допустимы в алгоритме. Чтобы проверить составленный алгоритм, нажмем кнопку выполнить, и — о ужас! — строка “влево” подсвечивается красным цветом и выполнение программы прерывается. Вероятно, мы что-то сделали неправильно. Действительно, человеку свойственно ошибаться, и при переписывании команд с экрана Робота мы пропустили строку “вниз”, и при выполнении программы Робот уперся в стену. Когда у школьника в руках был пульт Робота, то при получении команды, которую в данной обстановке нельзя исполнить (слева от Робота стена, а команда “влево”), на экране пульта сообщалось о возникновении исключительной ситуации — “отказ”. Робот не выполнил полученную команду, но, к нашему счастью, оказался вполне интеллектуальным и не сломался. Подчас многие современные электронные приборы поступают точно так же, при вставлении батареек в неправильной полярности (минус к плюсу) такой прибор не сгорает. О нашей ошибке мы можем судить только по тому, что прибор не включился. Робот же поведал нам о том, что команда не может быть выполнена. Вообще в “КуМире” программа останавливается в момент невозможности исполнения любой команды, сообщая о причине останова. В этот момент школьник может проанализировать причину неприятности, скорректировать программу и попробовать выполнить ее еще раз. Так поступим и мы. Добавим строку “вниз” перед последней строкой и еще раз сверим текст программы в “КуМире” и то, что было записано нами на экране пульта Робота при пошаговом исполнении (если мы предварительно запротоколировали работу, аккуратно переписав все нажимаемые на пульте команды при непосредственном управлении Роботом). Эта модифицированная программа будет работать правильно. При исполнении ее в пошаговом режиме мы увидим на экране, что Робот проделает те же шаги, что и при управлении с пульта. Полученная программа очень проста (относится к так называемым “линейным программам”), то есть не содержит никаких команд-вопросов, не запрашивает от Робота информацию и не “подлаживается” к обстановке, в которой находится Робот. Теперь мы готовы к дальнейшем свершениям и получению нового опыта в составлении линейных программ. Например, мы можем, используя команду “закрасить”, запрограммировать Робота нарисовать номер дома, в котором мы живем. Те, кому повезло, будут рисовать номер дома из одной цифры, а невезучим придется посвятить некоторое время рисованию двух или трех цифр. Очень важно, что на самом начальном этапе ученик добивается маленьких побед в программировании, а не тратит массу времени на изучение многостраничного введения в систему программирования. Для управления системой “КуМир” ему потребуется лишь пара клавиш — команда “выполнить непрерывно” и выполнить “шаг”. Нужно ли тратить драгоценное время школьника на тривиальные линейные программы? Ответ — безусловно, нужно, ибо при этом в “комфортных условиях” осваивается методика отладки: составляем программу, выполняем, обнаруживаем проблемы, корректируем программу — и так, пока не будет получен правильный результат. Заметим еще, что освоение методов отладки на линейных программах комфортно для учителя. Любой ученик, которому предоставлено достаточное время, справится с отладкой программы “закрашивания” на поле Робота двухзначного числа. В более сложных задачах число учеников, которым нужна помощь учителя, может выйти за разумные пределы.
Конечно, Робот более сложен, чем кажется с первого взгляда, у него больше команд, и с их помощью можно решать много интересных задач. Но изучение простейших алгоритмов удобно начинать именно с него, ведь при его простоте можно развивать умение записывать алгоритм в общем виде, предсказывать результат его работы, глядя на текст алгоритма, что является важной компонентой алгоритмической культуры. Упражнения 1. Нарисуйте обстановку Робота, разместите его где-нибудь на поле и составьте два алгоритма обхода Роботом препятствия слева и сверху при помощи непосредственного управления с пульта. 2. Измените обстановку и проведите Робота за препятствие с помощью пульта, когда поле Робота не видно. 3. Модифицируйте исполнителя Робот. Пусть стены могут быть разной высоты — низкие и высокие (например, высокие — границы поля). Добавьте команду “прыг”, по которой Робот запрыгивает на низкие препятствия или спрыгивает с них. Придумайте новую обстановку Робота с такими низкими препятствиями. Управляя Роботом с пульта, составьте алгоритм перемещения Робота с перепрыгиванием препятствия слева. 4. Добавьте Роботу команды “справа/слева/снизу/сверху низкое препятствие”. Проведите Робота за препятствие, когда поле Робота не видно. Придумайте более удачное название этих команд. 5. С какими трудностями вы столкнулись при выполнении задания п. 4 (опишите их, формализуйте для себя)? 6. Загрузите систему “КуМир” с сайта www.infomir.ru и проделайте упражнения 1–2 в системе “КуМир”. 7. Напишите программу в системе “КуМир” для п. 1. 1 Далее по тексту в выделенных прямоугольниках мы будем подробно (более-менее формально) описывать используемые исполнители и порядок работы с ними.2 Кушниренко А.Г., Лебедев Г.В. 12 лекций о том, для чего нужен школьный курс информатики и как его преподавать. // Методическое пособие. М.: Лаборатория базовых знаний, 2000.3 Для упрощения в дальнейшем мы не будем пускаться в длинные рассуждения о том, что такое универсальный выполнитель, и везде, не ограничивая общности, будем в качестве выполнителя использовать ЭВМ.
Ан. Ге. Кушниренко ;
| |||||||||||||||||||||||||