| СОДЕРЖАНИЕ |
| СТРУКТУРА |
| АЛГОРИТМ |
| ИСПОЛНИТЕЛЬ |
| ТЕКСТОВЫЙ РЕДАКТОР |
| ГРАФИЧЕСКИЙ РЕДАКТОР |
| МУЗЫКАЛЬНЫЙ РЕДАКТОР |
Исполнители в курсе раннего обучения информатикеПонятие исполнителя является одним из наиболее важных в информатике. Несмотря на то, что это понятие относят к первичным, оно имеет четкое определение, которое дети если и не заучивают наизусть, то, во всяком случае, осознанно им оперируют. Исполнителем называется человек, коллектив, животное или техническое устройство, которые понимают и умеют точно исполнять задаваемые им команды. Конечно, изучение темы начинается не с формулировки определения (появлению этого определения могут предшествовать несколько уроков в теме «Исполнители»): как всегда при знакомстве с новым материалом на уроке информатики, дети, инициируемые учителем, прежде всего, генерируют множество примеров, затем классифицируют и только после этого, суммируя отдельные наблюдения, приходят к общему определению. Характерное типовое начало темы «Исполнители» — игра в классе, которую учитель не только предлагает, но в первой ее реализации даже берется за исполнение «главной роли». Итак, учитель заявляет, что он готов исполнить любую из согласованного набора команд. Составление такого набора — важный элемент первого урока в теме: список должен быть не длинным и обозримым, команды — легко определяемыми и реализуемыми. Надо обратить внимание на наличие «обратных» команд: если, например, в системе имеется команда ПОДНИМИ РУКУ, то обязательно надо иметь и команду ОПУСТИ РУКУ. С учетом таких «строгих» ограничений, налагаемых на систему команд исполнителя (СКИ), этот набор формируется детьми с непосредственных подсказок учителя. Произнесенная детьми команда корректируется учителем, дети соглашаются с ним. После этого команду можно зафиксировать: учитель записывает ее на доске. Можно представить, например, такую СКИ: ПОДНИМИ РУКУ ОПУСТИ РУКУ ОТКРОЙ ГЛАЗА ЗАКРОЙ ГЛАЗА СКАЖИ «МЯУ» Начинается игра. Учитель встает у доски и выражает готовность исполнять команды. Он послушно поднимает руку по команде ПОДНИМИ РУКУ Если после этого такая команда повторно поступает из класса, то он поднимает вторую руку. Но если после этого такая команда будет дана в третий раз, то реакция учителя очевидна и понятна детям: он говорит «Не могу». Вероятное развитие событий: хотя на доске записана команда во втором лице единственного числа в повелительном наклонении, детям трудно, непривычно обращаться к учителю «на ты», а потому они могут сказать ЗАКРОЙТЕ ГЛАЗА В таком случае надо приостановить игру и объяснить детям, что такой команды нет в нашей системе команд (с этой целью можно записать «новую» команду рядом с имеющейся в списке, выделив ее, например, мелом другого цвета1). И, хотя учителю-человеку понятно, что хотели сказать дети, произнесшие эту «новую» команду, он как исполнитель имеет право ответить «Не понимаю» и объясняет, почему «не понимает»: команды ЗАКРОЙТЕ ГЛАЗА не существует в системе команд, понятной исполнителю. Эта игра в непонимание оправдана с методической точки зрения, дети легко принимают это правило игры. (Даже если дети аккуратно следуют правилам игры в исполнителя, ситуацию с «непонятной» командой учителю нетрудно спровоцировать.) Человек, в отличие от робота, достаточно часто выдает совершенно «немашинное» сообщение «Не хочу», которое, в принципе, невозможно в случае робота-механизма. Даже с дрессированной собачкой может произойти казус непослушания. В этой ситуации очень важно использовать понятие формального исполнителя (и даже, возможно, произнести этот термин в классе), которому не позволяется ни при каких обстоятельствах отклониться от заранее сформулированной (спроектированной, оговоренной) СКИ. Сейчас объект детской игры — формальный исполнитель. Первую игру (с учителем-исполнителем) не следует затягивать, даже если не исследованы все возможные ее сценарии: дети рвутся сами попробовать себя в роли исполнителей. Класс разыгрывает несколько подобных игр. Теперь роль учителя сводится, главным образом, к фиксированию на доске (или, лучше, на экране проектора) системы команд: каждому играющему класс составляет новую систему команд. Еще один вариант игры: СКИ остается той же, ученики выходят по очереди, учитель старается в темпе давать команды, чтобы исполнитель либо выполнял команду, либо отвечал: «Не могу» или «Не понимаю». Задача ученика-исполнителя — продержаться как можно дольше, не ошибиться. Выигрывает тот, кто не ошибается. Из такой игры школьники выносят представление о системе команд, их строго формальном задании и исполнении. Теперь они готовы приводить разнообразные примеры из повседневной жизни. Этот поток примеров тоже направляется учителем. Класс обсуждает примеры исполнителей-животных (собаки, умеющие выполнять некоторые команды, дрессированные медведи и дельфины), исполнителей-людей (водители, выполняющие правила уличного движения), исполнителей-коллективов (подразделение солдат, спортсмены на параде), исполнителей-учреждений (почтовое отделение, бухгалтерия). В каждом примере следует разобрать одну-две команды, из тех, что умеет выполнять обсуждаемый исполнитель. Когда есть возможность, надо привлечь внимание детей к роботам — техническим устройствам, которые могут управляться либо автоматически (в программном режиме), либо непосредственно (в командном режиме), либо (что еще более интересно для детей) — с помощью компьютера, к которому подключен робот-игрушка. Замечание «когда есть возможность» приведено здесь не случайно: к сожалению, сегодня наша промышленность не выпускает технические игрушки в таком количестве, чтобы удовлетворить потребности регулярного учебного процесса массовой школы. Да и цена их часто превосходит скромные возможности большинства школ. Именно поэтому поставочные пакеты распространяемых ныне программно-методических систем не содержат прямых рекомендаций по применению роботов на уроках. Между тем, в педагогическом плане использование учебных роботов может оказать определяющее значение в изучении курса информатики вообще и в формировании навыков управления исполнителями в частности. Дело в том, что непосредственное, осязательное восприятие технической игрушки, управляемой ребенком, обеспечивает последнему более конкретное и потому более стабильное формирование указанных навыков, чем умозрительные исполнители или даже исполнители, живущие на компьютерном экране. При всей дидактической важности аппаратно реализуемых исполнителей обращение детей к компьютеру всегда (в том числе, в теме «Исполнители») остается кульминацией каждой темы. Нет необходимости объяснять детям (сейчас) термин «непосредственное управление», однако учитель должен понимать его. Непосредственным управлением называется род деятельности, состоящий в выполнении группы последовательных действий, когда человек принимает решение о следующем действии на основании информации о предыдущем. Так, управляя Мудрым- Кротом, школьник сначала посмотрит, в какой позиции оказался Крот после последнего перемещения, а затем, в зависимости от этой последней позиции, дает Кроту следующую команду. Различие между автоматическим и непосредственным управлением состоит в том, что в первом случае исполнителю передается заранее записанная последовательность из нескольких команд, а во втором исполнитель получает команду за командой. Позднее, когда ученики будут изучать сложный исполнитель Кукарача, который введет их в мир программирования, им встретится и другой, более общий вид деятельности, при котором исполнитель получает от человека не одну команду, а сразу серию команд — программу действий. Такой способ управления называют программным. Он сложнее непосредственного управления, т. к. все команды написаны заранее: человек при этом не видит результат предшествующего действия, а планирует, или программирует его. Программа Машинист — это модель сортировочной горки на железнодорожной станции. На пути стоит локомотив, который из своего тупика может переместиться на одну из двух веток — нижнюю или верхнюю в зависимости от направления, задаваемого положением стрелки. На верхней стрелке расположен состав из нескольких вагонов. Задача состоит в том, чтобы переставить эти вагоны в другом порядке. По существу, речь идет не о единственной задаче, а о целом классе разных задач, решение которых может быть включено не в один, а в два или три насыщенных урока. Необходимо ввести важное соглашение, направленное на понимание роли исполнителя: в кабине локомотива сидит не человек (иначе мыслящий человек без нашей помощи сообразил бы, в какой последовательности надо брать вагоны и куда их везти), а робот, которому надо давать команды. Как отдавать команды? Бегать за локомотивом и кричать роботу, куда надо ехать? Естественнее (в условиях нашей задачи) представить, что робот выполняет команды, передаваемые по радио (или мобильному телефону). Как обычно, «предкомпьютерная» часть урока предполагает работу с дидактическим материалом. Для «бескомпьютерной» модели сортировочной горки можно использовать
Один дидактический материал не исключает другой. Несмотря на ограниченное количество задач в «трехвагонной» компьютерной модели, вполне уместны демонстрация одной задачи на магнитной доске, а другой — на «живых» вагонах. Впрочем, на «бескомпьютерных» моделях задачи вполне можно использовать и модификации условий, например не три вагона, а четыре. Готовя формальное введение общей схемы знакомства с исполнителями, следует и в обсуждении программы Машинист, и, еще раньше, в ее моделях и инсценировках обращать внимание на те элементы, которые составляют структуру схемы знакомства. Вопрос, который при таком обсуждении напрашивается сам собой: являются ли, например, солнышко или домик на экранной картинке элементами среды? Учитель убежденно отвечает детям: «Нет». Среда — это те элементы из окружения робота, которые необходимы и достаточны для выполнения команд из его СКИ. Поскольку именно с исполнителем Машинист впервые появляется понятие среды исполнителя, учитель называет объекты среды — типы и количество вагонов, расположение путей и стрелки (стрелок), ограничения на перемещения вагонов и т. д. В беседах о Машинисте, инсценировках и компьютерных лабораторных работах с этим исполнителем в обязанности учителя всегда входит фиксация СКИ и операторского протокола. В фиксируемых на доске записях команд из СКИ ошибки допускать нельзя ни в коем случае, а вот в записи операторского протокола в некоторый момент рекомендуется допустить ошибку (например, вместо правильной записи ВПЕРЕД сделать неправильную — ВПЕРЕТ). Это, конечно, провокация. На нее класс, уже встречавшийся с сообщениями «Не понимаю», должен отреагировать адекватно. Более трудоемко изучение ситуаций, где исполнитель должен выдавать сообщение «Не могу»: такие ситуации рассматриваются и анализируются отдельно для каждой команды из СКИ. Потребуется внимательное отношение к инсценировке «живые вагоны». Дети с удовольствием предлагают себя в качестве участников игры. При этом, вероятно, многим будет больше импонировать роль локомотива, чем исполнителя или автора алгоритма, по которому должен работать исполнитель. Между тем, и «локомотив», и «вагоны» — это всего лишь статисты, а действительно активными участниками являются именно автор и исполнитель. Алгоритм перестановки вагонов, решающий задачу, предстает в виде операторского протокола. Запись протокола дает возможность обсудить два важных понятия информатики. Первое из них — откатка — уже известно детям, например, по алгоритмическим этюдам. Повторение знакомого механизма в новой теме не только закрепляет понятие откатки, но и подчеркивает его фундаментальность и инвариантность. Вместе с откаткой обычно напоминают и обратную операцию — накатку. Второе понятие — структурирование записи алгоритма, позволяющее говорить об этапах проектирования алгоритма и, в частности, о технологии проектирования «сверху вниз». Внешне представление операторского протокола не ново: протоколы Монаха, Конюха, Переливашки, Угадайки имели такой же вид линейной последовательности команд. Но из-за заметно выросшей длины протокола (число команд в задачах Машиниста. превосходит три десятка) актуально обсуждение нового приема записи такого алгоритма:
Именно в таком способе построения алгоритма и просматривается пропедевтика технологии проектирования «сверху вниз». Разработчики учебного программного обеспечения определили важное место программных исполнителей в системе дидактических средств уже на хронологически первых этапах становления школьной информатики. Достаточно назвать широко известный исполнитель — Черепашку, введенную Сеймуром Пайпертом в качестве главного персонажа учебной высокоуровневой языковой системы программирования Лого, или группу исполнителей языка Робик, составивших наполнение другой учебной языковой системы, которая была создана в новосибирском Академгородке в коллективе, возглавлявшемся академиком А. П. Ершовым. Ориентация двух названных систем на младших школьников сама по себе могла бы уже служить основанием для появления новых программных объектов — программных исполнителей — в качестве базовых дидактических инструментов в школьной информатике: наглядность, конкретность, динамичность, простота управления оправдывали использование программных исполнителей в задачах информатического образования младших школьников. Вместе с тем, в период становления школьной информатики языковые системы программирования оставались единственным технологическим средством, используемым в приложениях, в том числе, и педагогических. Поэтому и учебные системы того времени, такие, как Лого С. Пайперта или Робик Г. А. Звенигородского, оставались в целом языковыми, использующими программные исполнители в качестве встроенных объектов, подчиненных базовой языковой системе. Высокие дидактические достоинства Лого неоднократно продемонстрированы в экспериментальных и систематических курсах программирования и информатики в разных странах. И все же современные условия общеобразовательной компьютеризованной школы заставляют искать новые подходы к построению начального курса информатики: за три десятилетия существования Лого заметно изменились взгляды на цели, методику и содержание обучения информатике; актуальный в свое время лозунг «Программирование — вторая грамотность!» постепенно уступил место требованиям информационной культуры, когда язык программирования перестает играть роль ведущего дидактического инструмента. Позиция такого инструмента сейчас уверенно и обоснованно занята системами программных исполнителей. Причины, побудившие искать замену языковым системам программирования и обосновавшие системы программных исполнителей в качестве программного обеспечения школьной информатики (и, в частности, курса раннего обучения информатике), были проанализированы в лекции 2. Приведенная там аргументация с уверенностью определяет современные учебные программные средства как системы программных исполнителей, ориентированные на разный возрастной контингент учащихся: программы пакета Малыш — для дошкольного воспитания (где преобладают формы игровой деятельности), исполнители Роботландии — для учащихся начальной школы, исполнитель Кенгуренок — для школьников центральных классов, Робот и Чертежник — исполнители для старшеклассников. Присутствие программных исполнителей на всех уровнях школьного информатического образования свидетельствует о том, что исполнители являются инвариантом дидактической спирали этого мировоззренческого курса (см. занятие 5). 1 Сейчас, когда подключенный к учительскому компьютеру проектор — не редкость в школьном кабинете информатики, все манипуляции с мелом можно (и нужно!) заменить слайдами специально к уроку созданной презентации. Ясно, однако, что к сущности обсуждаемого урока форма представления учебной информации прямого отношения не имеет.
Схема знакомства с исполнителемПодробное рассмотрение исполнителя Машинист в курсе раннего обучения информатике необходимо, чтобы подготовить базу для введения общего определения исполнителя и типовой схемы изучения программных исполнителей. Знакомя учащихся с этой схемой, учитель сначала обсуждает с детьми последовательно каждый ее этап, а в конце урока эти этапы вырисовываются в единую таблицу, которая становится элементом ряда последующих уроков:
— Какое сообщение выдаст Конюх в ответ на команду а1-b2? Конечно, ответ легко найти, попытавшись выполнить эту команду на компьютере. Возникает сообщение «Не понимаю» (хотя априорно часть школьников могла бы предположить сообщение «Не могу»: ведь выполняя такую команду, исполнитель должен нарушить принятые правила: конь не может ходить на соседнее поле по диагонали). Важен не столько правильный ответ, сколько его разумное объяснение: команды а1-b2 нет в СКИ Конюха. Интересен в этом отношении исполнитель Мудрый Крот, который не выдает ни одно из аварийных сообщений. Действительно, Крот запрограммирован так, что он может перемещаться лишь в свободном пространстве или вдоль стенок, но не может проходить сквозь стену. Поэтому, когда, например, справа от Крота — стена, то его «молчаливый» отказ двигаться вправо и следует воспринимать как сообщение «Не могу». Так же обстоит дело с сообщением «Не понимаю»: программа не реагирует на нажатия клавиш, отличающихся от управляющих стрелок. И хотя при нажатии, например, на клавишу BS нет ожидаемой реакции «Не понимаю», тем не менее, именно так следует воспринимать отказ исполнителя выполнить команду: исполнителю задана команда, не входящая в СКИ, т. е. непонятная ему, он молча демонстрирует это непонимание, не выполняя команду. Таким образом, даже в «экзотических» ситуациях, подобных Мудрому Кроту, схема знакомства с исполнителем сохраняет свою методическую универсальную значимость. Особенности Мудрого Крота (или какого-нибудь другого, наугад выбранного исполнителя), кажущиеся отклонениями от общей схемы знакомства, нельзя оставлять на уровне «экзотики». Далеко не у каждого исполнителя (особенно у исполнителей вне Роботландии) существуют аварийные сообщения «Не могу» и «Не понимаю» в буквально совпадающих «редакциях». Выражения «Не могу» и «Не понимаю» должны восприниматься как ярлыки, как названия двух определенных классов в классификации сообщений исполнителя. Важно не название класса, а существо ситуаций, отнесенных к этому классу. Таким образом, представление об исполнителе создается тогда, когда известно, как реагирует исполнитель, если он попадает в класс ситуаций, называемых «Не могу». В классе таких ситуаций Крот не двигается в ответ на нажатие управляющей стрелки. Его «непослушание» и есть реакция «Не могу». Значение среды в общей схеме знакомства очень важно. Однако во всех рассмотренных примерах — от инсценировок в классе до программных моделей учащиеся не ощущают непосредственно этой важной роли среды. Для того чтобы продемонстрировать среду исполнителя как определяющий компонент схемы общего знакомства с исполнителем, полезно показать школьникам две разные задачи (два разных исполнителя) с совпадающими системами команд. В качестве первой такой задачи можно использовать Машиниста, которому посвящено несколько уроков. После завершения этой серии уроков учитель вводит детей в иную операционную обстановку, иную среду, где все действия совершаются на рельсах, но в совершенно других условиях (не реализованных на компьютере). В качестве второй задачи (с системой команд, совпадающей со СКИ роботландского Машиниста) можно взять задачу, описанную в давней (1988 года) книге «Роботландия» (Переславль-Залесский, АН СССР, Институт программных систем). Фрагмент задачи приводится ниже. «... По пятницам у Пети Кука хорошее настроение: в этот день по расписанию — его любимая информатика. После привычного начала — проверки домашних заданий, обзора газетных новостей о применениях компьютеров — начинается основная часть урока. Сегодня речь пойдет о новых алгоритмических задачах и новом исполнителе. Учитель начинает с необычного вопроса: — Кто из вас помнит фильм про неуловимых мстителей? — Я! Я! Конечно, помним! — Во фильм! У него еще и продолжение есть! Учитель улыбается, но все же мягко прерывает этот поток восклицаний своим рассказом, пока «воспоминания» не достигли уровня воинственных звукоподражаний «Бах! Бабах! Бум! Тра-та-та-та!» — У юных бойцов было много героических дел. Так много, что они не вместились в знаменитый фильм «Неуловимые мстители». И даже в его продолжение. Сегодня я расскажу вам об одном незнакомом вам боевом эпизоде из их жизни. Класс затаил дыхание. Что же дальше? — Haш бронепоезд двигался к линии фронта. И его очень ждали на боевых позициях: и пушки, и снаряды, а, главное, свежее подкрепление — два взвода молодых бойцов — были так нужны красному полку, уставшему от долгих боев. Путь бронепоезда был нелегок. По окрестным лесам шныряли белогвардейские банды. Их можно было ждать на любом полустанке. Командир, пристально вглядывавшийся вперед, решительно махнул рукой машинисту: «Тормози!». Из-за поворота показалась четверка неуловимых. Еще с рассвета они отправились в разведку, и вот сейчас на своих горячих конях мчались навстречу бронепоезду. — Засада! — доложил запыхавшийся Цыган, осадив коня рядом с командиром. — Большой отряд беляков. С пушками. Даже с танком. Могут взорвать путь. Вперед нельзя! Командир срочно собрал штаб в тесной артиллерийской башне. Солнечный луч через амбразуру ложился на карту фронта. — Боевое задание нельзя не выполнить. Но силы не равны. Надо идти в обход. — В обход-то можно, — угрюмо сказал машинист бронепоезда. — Да ведь на этом одноколейном пути до ближайшей станции — 20 километров. Задним ходом до нее долго двигаться. — Зачем задним? — воскликнула Оксана. В боевой красно-армейской форме ее нельзя было отличить от мальчишки. — Ведь рядом, всего в полукилометре, есть тупик, где можно развернуться. Командир хорошо знал эти места. Он здесь вырос, пахал землю, здесь и воевал. Подумав, он скорее спокойно, нежели сурово, отказался от восторженной идеи Оксаны: - Нет! Не получится! Это совсем маленький тупичок. В него можно загнать только один вагон или только локомотив. А ведь у нас кроме паровоза еще три вагона.». Не прерывая рассказ, учитель рисует план тупика (рис. 10.1):
Рис. 10.1. Исходное состояние задачи о бронепоезде «Собравшиеся вокруг стола молчали, видимо, согласившись с мнением опытного командира. Вдруг Валерка, самый сообразительный из «неуловимых», вскочил со стула: — Еще как получится! Вот смотрите! И, схватив несколько спичечных коробков, которые должны были изображать вагоны, начал объяснять алгоритм разворота». В этом месте учитель возвращает класс из героической эпопеи гражданской войны к сиюминутным событиям: — Ваша задача, ребята, состоит в том, чтобы восстановить ход рассуждений Валерки. Вы должны описать одно за другим те действия, которые предстоит выполнить машинисту бронепоезда, чтобы развернуться в маленьком тупике одноколейного пути. Напоминаю условия задачи:
ВПЕРЕД НАЗАД ПРИЦЕПИ ОТЦЕПИ СТРЕЛКА Однако трактовка команд (ответ на вопрос «КАК ВЫПОЛНЯЮТСЯ» в схеме знакомства) совсем иная: — ВПЕРЕД: движение вперед
Рассмотрение этой задачи завершается выводом (уже звучавшим, но еще раз наглядно продемонстрированным): решение зависит от среды и, соответственно, от правил выполнения команд. Урок, включающий подробное обсуждение общей схемы знакомства, продолжает исполнитель Квадратик. Его простота может показаться удивительной: ведь к этому времени дети уже поработали с целой серией существенно более сложных программ. Однако простота Квадратика имеет свое методическое обоснование: учитель ничего не рассказывает о Квадратике (кроме имени). Задача учащихся состоит в том, что они должны самостоятельно научиться работать с этим исполнителем. Такая задача часто встречается в повседневной жизни, когда надо освоить бытовой прибор, техническая документация которого отсутствует. Учитель сразу же дает только что предъявленному новому дидактическому инструменту — плакату-слайду «Общая схема знакомства с исполнителем» — педагогическую нагрузку: по этому плакату школьники должны рассказать о Квадратике. Учитель следит за тем, чтобы дети точно следовали пунктам этой схемы.
КВАДРАТ (KB) ТРЕУГОЛЬНИК (ТР) ОКРУЖНОСТЬ (ОК) ЗАКРАСКА (ЗА) ОЧИСТКА (ОЧ) Команды этому исполнителю надо задавать, набирая их на клавиатуре заглавными русскими буквами (для упрощения в начальном состоянии программы установлен, по умолчанию, регистр заглавных русских букв). В связи с двойным способом задания команд Квадратика уместно отвлечься для обсуждения методического механизма постепенного сокращения синтаксических конструкций. Сущность этого метода состоит в том, что при первой встрече с тем или иным объектом, он (объект) по требованиям используемого языка записывается длинной синтаксической конструкцией. Конструкция эта, тем не менее, несет отчетливое семантическое наполнение. Работая с такой конструкцией, школьник легко усваивает изучаемое понятие, теряя, правда, темп за счет набора длинных слов на клавиатуре. С усвоением понятия можно использовать его сокращенные формы, которые, возможно, менее выразительны с точки зрения содержания понятия, но существенно ускоряют клавиатурные операции. Так, в Робике — одном из первых учебных языков программирования, ориентированных на младших школьников (Г. А. Звенигородский, «Первые шаги программирования», М.: Наука, 1986), команда присваивания сначала вводилась в своей полной форме: ЗНАЧЕНИЕ [ИМЕНИ] <имя-1> ПРИСВОИТЬ ИМЕНИ <имя-2> в которой раскрывалось содержание сложной, но фундаментальной команды присваивания; затем разрешалось опускать некоторые ключевые слова; получалась команда типа ЗНАЧЕНИЕ АЛЬФА ПРИСВОИТЬ ИМЕНИ БЕТА Потом оказывалось возможным не писать и слово ЗНАЧЕНИЕ: АЛЬФА ПРИСВОИТЬ БЕТА Наконец, вершиной фрагмента темы, посвященной присваиванию, становилось введение условного обозначения, которое заменяло собой ключевое слово ПРИСВОИТЬ: АЛЬФА -> БЕТА Школьники, прочувствовав в предшествовавших многочисленных трудоемких упражнениях смысл операции присваивания, встречали этот символ с пониманием и удовлетворением. Вернувшись теперь к исполнителю Квадратик, можно сказать: как ни трудно школьнику набирать длинные слова ТРЕУГОЛЬНИК и ОКРУЖНОСТЬ, следует настоять на том, чтобы в первом упражнении использовались полные варианты команд. С этой целью учитель (пока!) не говорит детям, что означают выделенные цветом первые две буквы в слове-команде. А вот при повторных упражнениях учащиеся узнают, что вместо длинной команды можно использовать ее двухбуквенную сокращенную форму и, как правило, принимают такую рекомендацию с удовольствием. Если следовать схеме знакомства с исполнителем, то неисследованными остались пункты «Как выполняются команды» и «В каких ситуациях возникает сообщение Не могу». Важно, чтобы эта часть работы была проведена детьми полностью самостоятельно.
Арифметические исполнителиАрифметические исполнители представляют собой методически эффективный раздел обширной темы «Исполнители» в курсе раннего обучения информатике. Арифметические операции выполняются командами, которые, с одной стороны, строго формализованы и не требуют дополнительных комментирующих обсуждений, а с другой стороны, хорошо знакомы учащимся начальной школы по урокам математики. Чтобы опереться на априорные знания младших школьников, в качестве множества значений операндов в арифметических операциях программных исполнителей используются только целые положительные числа. С этим ограничением связаны аварийные сообщения «Не могу» у тех исполнителей, которые допускают операции вычитания и деления (хотя, разумеется, ориентируя такого рода исполнителей на старших школьников, программисту, реализующему такой исполнитель, не составило бы труда предусмотреть отрицательные и дробные результаты арифметических операций). Простейшим из программных исполнителей, представляющим этот класс программ в Роботландии, можно назвать Автомат. Он использует всего только две арифметические операции, более того, два очень частных случая сложения и умножения: сложение (счетчика) только с единицей и умножение (счетчика) только на 2. Задачи этого исполнителя формулируются так: для любого заданного целого числа построить последовательность команд из СКИ Автомата, которая исходное нулевое состояние счетчика преобразует в заданное число. На таком множестве задач естественно выбрать задачу на оптимизацию: получить результат с помощью минимального количества команд. В последовательности команд только самая первая команда очевидна: она должны быть сложением, поскольку умножение не меняет нулевое состояние счетчика. Порядок следования остальных команд может быть, вообще говоря, любым. Однако получение заданного результата 13 путем тринадцати прибавлений единицы — это, несомненно, не лучшее решение. Желание поскорее добраться до результата подсказывает детям идею из последовательности умножений (удвоений). Но почти всегда (кроме случаев, когда заданое число представляет собою степень двойки) такой алгоритм не приводит к решению. Возникает задача об оптимальном чередовании команд, приводящих к заданному результату. Решая ее, учитель сначала записывает результат, например, 13 и спрашивает: «Какой из двух команд исполнителя Автомат можно получить это число?» Ответ: ПРИБАВИТЬ (поскольку в противном случае результат был бы четным). Следовательно, к началу зафиксированной команды в счетчике должно было находиться число 12. Записав это число рядом с командой 12 ПРИБАВИТЬ учитель задает тот же вопрос. Теперь ответ на него звучит иначе: « I 2 получается командой УМНОЖИТЬ, так как в противном случае число было бы нечетным». Этот ответ отмечается записью, располагаемой выше предыдущей: 6 УМНОЖИТЬ Проводя подобные рассуждения до тех пор, пока не будет достигнут нуль (исходное состояние счетчика), получают последовательность команд: 0 ПРИБАВИТЬ 1 УМНОЖИТЬ 2 ПРИБАВИТЬ 3 УМНОЖИТЬ 6 УМНОЖИТЬ 12 ПРИБАВИТЬ которая и является описанием искомого алгоритма. Легко видеть, что этот алгоритм, по построению, оптимальный и единственный. В таком построении (повторенном несколькими упражнениями в классе и домашними заданиями) важна технологическая деталь: команды алгоритма создаются и записываются «задом наперед», в порядке, обратном их предстоящему выполнению. Первая из сформированных команд будет выполняться последней и, наоборот, последняя из записанных команд выполняется первой. Сформулированный порядок формирования и выполнения алгоритма прямо повторяет правило стека — «последний пришедший обслуживается первым». Таким образом, хотя у исполнителя Автомат нет своего стека, тем не менее, школьник, работающий с Автоматом, формирует стек на листочке бумаги: записанная первой на листочек команда выполняется последней, а последняя записанная — первой. Такая «стековая структура» команд демонстрирует, что в стек могут укладываться не только данные, но и команды. Именно так, в стеке, хранят свои команды многие из современных вычислительных машин — от простейших калькуляторов до гигантских суперкомпьютеров. 0 ПРИБАВИТЬ 1 УМНОЖИТЬ 2 ПРИБАВИТЬ 3 УМНОЖИТЬ 6 УМНОЖИТЬ 12 ПРИБАВИТЬ Таким образом, исполнитель Автомат активно подготавливает школьника к понятию стека. Это, безусловно, задача пропедевтическая, поскольку при последующем изучении информатики школьники встретятся не раз и со стеком структур данных, и со стеком управляющих структур. На том уроке, где представляется Автомат, слово «стек» еще не произносится: хотя уже известны и Монах, и Машинист, и Автомат, все же стек как самостоятельный объект изучения появляется только у Плюсика. Исполнитель Плюсик — одна из замечательных точек курса раннего обучения информатике, в которой пересекаются информационная и компьютерная линии курса. В информационной линии Плюсик является активной иллюстрацией информационных процессов — хранения, передачи и обработки информации. В компьютерной линии исполнитель Плюсик представлен как модель процессора. В предшествующих разделах курса моделирующие качества программных исполнителей уже обсуждались (Переливашка, Машинист). Однако в школьном кабинете информатики учащемуся гораздо ближе компьютер, чем абстрактная Переливашка или динамичный, но весьма ограниченный в своих возможностях Машинист. Поэтому учителю так важно показать детям исполнитель Плюсик как модель компьютера: здесь они увидят и «процессор», обрабатывающий информацию, и запоминающее устройство, представленное стеком. Центральным понятием уроков, посвященных Плюсику, остается, конечно, стек. В исполнителе Машинист он существовал как некоторый вспомогательный объект. Сейчас на нем фокусируется внимание. Как всегда, организуя «предмашинную» часть урока, учитель показывает, как стековый механизм памяти реализуется в стопке книг, на детской пирамидке, в мензурке, наполненной покрашенными шариками для настольного тенниса. Во всех этих примерах-демонстрациях дети знакомятся с новыми понятиями — верхушка стека, глубина стека. В компьютере стек очень удобен тем, что адрес операнда всякой операции определяется однозначно — это верхушка стека. Чтобы выполнить, например, команду СЛОЖИ, надо сначала взять из верхушки стека один из операндов. Конечно, в операции сложения безразлично, какой из операндов второй, а который — первый. Но формальный исполнитель Плюсик даже в этом случае поступает по реализованному в нем алгоритму: в верхушке стека располагается «второй» операнд операции. Когда слагаемое из верхушки стека взято, то, тем самым, место в верхушке освобождается, и его сразу же занимает следующий элемент стека, который является первым слагаемым операции. Взятое из верхушки стека число попадает на один из двух входов устройства, непосредственно выполняющего операцию. Это и есть арифметическое устройство процессора. Затем из стека (вновь из верхушки) извлекается следующее число, которое в нашей операции является первым операндом. Это число попадает на другой вход арифметического устройства. Устройство выполняет сложение введенных таким образом чисел, а получившийся на выходе результат отправляется обратно в стек и занимает место опять в верхушке стека. В результате выполнения арифметической операции глубина стека уменьшается на единицу: вместо двух взятых чисел-операндов в верхушке стало одно число-результат. В начале работы исполнителя стек пуст. Чтобы его заполнить, нужна команда, имеющая формат ЗАПОМНИТЬ <число>. В результате ее выполнения число, задаваемое в команде, попадает в верхушку стека, а глубина стека увеличивается на единицу. Можно поэкспериментировать с этой командой, вводя в стек несколько чисел подряд. Цель эксперимента — определить, в какой ситуации команда ЗАПОМНИ порождает сообщение «Не могу». Далее, демонстрируется выполнение коммутативных операций сложения и умножения. Ставя вычислительные опыты с исполнителем Плюсик, дети могут поставить вопрос о сообщении «Не могу» для команд СЛОЖИ и УМНОЖЬ и, главное, самостоятельно ответить на них. Больше внимания требуют команды ВЫЧТИ и ДЕЛИ. В этих командах первый операнд — уменьшаемое и делимое — должен быть больше второго операнда — вычитаемого и делителя (коль скоро принято соглашение о множестве целых положительных чисел как области определения операндов Плюсика). Но поскольку Плюсик всегда направляет первый операнд на правый вход арифметического устройства, а второй — на левый, то порядок выполнения некоммутативных операций должен быть предусмотрен при заполнении стека. Следовательно, из двух операндов команды ВЫЧТИ первым в стек должно попасть большее — уменьшаемое, а вторым — меньшее вычитаемое, так как на левом входе арифметического устройства оказывается последнее попавшее в стек число. Упражнения с некоммутативными арифметическими операциями занимают столько времени на уроках Плюсика, сколько необходимо для усвоения этого непростого механизма, устанавливающего соответствие между последовательностью команд формирования стека и выполнением некоммутативных операций. Только после этого можно переходить к вычислению арифметических выражений, где участвуют три операнда. Если в число операций такого выражения входит, по крайней мере, одна некоммутативная операция, то порядок заполнения стека становится важным. В вычислении выражения 2 + 7 — 3 возможны два варианта. Первый из них — с возможно опускаемыми скобками: (2 + 7) - 3, второй — со скобками обязательными 2 + (7 - 3). В первом случае уменьшаемое — сумма, которая вычисляется в скобках, попадает в стек раньше, чем в верхушку стека попадает вычитаемое — 3, как этого требуют правила вычитания в стеке. ЗАПОМНИ 2 ЗАПОМНИ 7 СЛОЖИ ЗАПОМНИ 3 ВЫЧТИ Во втором случае в скобках вычисляется разность уже после того, как первый операнд суммы уже находится в стеке: ЗАПОМНИ 2 ЗАПОМНИ 3 ЗАПОМНИ 7 ВЫЧТИ СЛОЖИ Отсюда видно, что если есть разные варианты группирования операндов в скобки, то предпочтение следует отдавать тем из них, при которых в скобки попадают некоммутативные операции. Ясно, однако, что это возможно не всегда. Вот пример: 7 + 2 - 3. В нем (7 + 2) - 3 — это разрешимая задача для Плюсика, а при вычислении 7 + (2 - 3) Плюсик, работающий только с положительными числами, выдаст сообщение «Не могу». Таким образом, расстановка скобок — это сложный момент темы. Тем более, что в программе для Плюсика они формально отсутствуют, их всегда надо держать в воображении (или переносить это воображение на лист бумаги в виде дополнительных скобок). Например, для вычисления (15 - 3) : (1 + 2) надо отчетливо осознавать, что сначала в стек должны попасть числа, участвующие в вычислении делимого (левой скобки), затем следует выполнить операцию над этими числами, чтобы скобка сменилась одним числом, затем сверху в стек добавить числа, необходимые для вычисления делителя (правой скобки), только после этого вычислить делитель и выполнить последнюю команду ДЕЛИ: ЗАПОМНИ 15 ЗАПОМНИ 3 ВЫЧТИ ЗАПОМНИ 2 ЗАПОМНИ 1 СЛОЖИ ДЕЛИ На примере Плюсика полезно закрепить механизм постепенного сокращения синтаксических конструкций: на первом занятии с этим исполнителем команды предлагаются в развернутой форме, а далее используются их сокращенные формы С (СЛОЖИ), У (УМНОЖЬ) и т. д. В частности, операции со скобками целесообразно выполнять после того, как хорошо освоены сокращенные формы команд Плюсика. Для преобразования обычного арифметического выражения в программу для Плюсика можно просматривать выражение последовательно слева направо, записывая команды ЗАПОМНИ число. Если после очередной записи команды ЗАПОМНИ выяснится, что над последними двумя числами в стеке можно выполнить арифметическую операцию, записывается соответствующая команда. Если строго следовать этому алгоритму, ошибки не будет! Пример. Выражение: 28*(36-700/5)+15 (*) Составление программы для Плюсика: Просматриваем запись (*) слева направо и записываем команды запоминания: ЗАПОМНИ 28 (нельзя выполнить операцию) ЗАПОМНИ 36 (нельзя выполнить операцию) ЗАПОМНИ 700 нельзя выполнить операцию) ЗАПОМНИ 5 (можно выполнить деление) ДЕЛИ (700/5, можно выполнить вычитание) ВЫЧТИ 36-700/5, можно выполнить умножение) УМНОЖЬ (28*(36-700/5), нельзя выполнить операцию) ЗАПОМНИ 15 (можно выполнить сложение) СЛОЖИ (28*(36-700/5)+15) Возможности Плюсика полностью покрывают вычислительные потребности начальной школы. Поэтому в качестве завершения темы «Арифметические исполнители» можно порекомендовать проведение урока математики в школьном кабинете информатики. Последнее обстоятельство настолько важно, что при возможности следует (даже ценою разового перепланирования расписания кабинета информатики) пригласить детей в кабинет на урок, который в расписании назван «математика». Столь же важно, чтобы такой урок провел основной учитель класса, ведущий, в частности, математику, даже если курс раннего обучения информатике ведет в классе другой учитель (что должно быть, как об этом говорилось в предшествующих лекциях, скорее исключением, нежели правилом). На таком уроке сосредоточены вычислительные упражнения — задачи и примеры, решения которых записываются не в тетрадях, а на компьютерных экранах, в среде Плюсика. А сами задачи и примеры учитель не придумывает, а предлагает из школьного учебника (задачника) математики, с которым дети постоянно работают в школе. У такого урока, наряду с его учебными целями, большой важности воспитательная задача: здесь конструктивно и эффективно демонстрируются межпредметные связи информатики; дети воочию убеждаются, что компьютер — не только объект изучения на уроке информатики, но и дидактический инструмент других уроков. Позднее такие уроки можно сделать регулярными (компьютерные диктанты и грамматические упражнения на уроке русского языка, оформление дневника наблюдений на уроке естествознания и т. п.). Плюсик позволяет показать детям нетрадиционную запись арифметического выражения, называемую обратной польской записью. Эта запись оказывается очень удобным средством в компьютерных программах, переводящих обычные арифметические выражения на язык компьютеров, память которых организована в виде стека. Вот как может выглядеть обычная запись выражения: а + b * (с + d/e)/f Обратная польская запись того же выражения имеет вид: abcde/+*f/+ Сравните: Обычная запись выражения: 2 + 5 * (10 + 134/12)/7 Программа для Плюсика: ЗАПОМНИ 2 ЗАПОМНИ 5 ЗАПОМНИ 10 ЗАПОМНИ 134 ЗАПОМНИ 12 ДЕЛИ СЛОЖИ УМНОЖЬ ЗАПОМНИ 7 ДЕЛИ СЛОЖИ Конечно, при работе с Плюсиком не надо вводить термин «обратная польская запись», но нужно добиться, чтобы перевод выражения из обычной формы в обратную польскую (программу для Плюсика) не представлял для детей особого труда.
Арифметические игры и математические примененияРанее, в лекции 5, упоминалась важная роль игровой деятельности в обучении младших школьников и, в частности, место игры в курсе раннего обучения информатике. Поэтому для весьма трудоемкого и непростого формирования вычислительных навыков младших школьников полезно наполнить эту часть математического (или, точнее, информатико-математического) курса достаточным количеством компьютерных программ-игр, которые могли за числовым содержанием нести полезную учебную и пропедевтическую нагрузку. С этой целью часть программ раздела «Игры» в программно-методической системе Роботландия представлены играми с числами и арифметическими операциями. Такова игра Баше — классический алгоритмический этюд. Играя в эту игру, приходится вычислять (устно) разности между количествами объектов. Многочисленны в школьной математике задачи на взвешивания для определения фальшивых монет. Один вариант такой игры (только одна монета в множестве монет является фальшивой, и она легче остальных) включен в Роботландию в виде программы Пиастры. Цепочка простых арифметических операций и сравнений (выполняемых мысленно) составляет основу для принятия решений в этой игре. Насыщена сравнениями двузначных чисел игра Максит. Здесь при каждом ходе должны быть выполнены серии числовых сравнений с целью выбора оптимального решения. Часть вычислительной работы (отслеживание состояния счетчика) оставляет за собой компьютер, однако на долю пользователя-ученика выпадают хотя и не сложные, но многочисленные арифметические операции. Еще более широко представлены вычислительные игры в программно-методической системе Хиты Роботландии. И это не удивительно: ведь основная ориентация этой открытой системы — на предметные использования компьютеров в школе (Роботландия входит в эту систему в качестве одного из компонентов). Одна из страниц в мониторе Хитов называется Считалка. На странице Считалки расположен, в частности, и Плюсик. В пакете Считалка заслуживают внимания (с точки зрения обсуждаемой сегодня темы) две программы. У одной из них не претенциозное название — Устный счет (и она оправдывает свое название), но возможности этой программы широки: она представляет, по существу, пакет арифметических игр, выбор того или иного варианта игры делает пользователь-ученик (возможно, по указанию учителя). На экране — множество карточек, покрывающих прямоугольную область на экране. В ней п строк и п столбцов (п меняется, в зависимости от варианта задачи, от 4 до 10). Карточки пронумерованы числами от 1 до п х п. Несколько случайно выбранных компьютером номеров (при п = 4 — три номера, при п = 6 - 5 номеров, при п = 10 - 10 номеров) выделены яркой подсветкой. Возможное исходное состояние для таблицы при п = 4 показано на рисунке, который приведен на следующей странице:
Игрок делает ход, составляя выражение — сумму или разность (вид выражения зависит от условий задачи, выбираемых в начале работы программы) — из чисел, написанных на карточках. При этом, по крайней мере, один из трех элементов выражения должен быть «выделенным». Например, для приведенного рисунка с указанными выделениями в числе допустимых могут быть выражения: 2 + 3 = 5; 5 + 9 = 14; 2 + 12 = 14. В первой и второй суммах — по одному выделенному элементу, в третьем — все три элемента выделены. Если выражение составлено правильно, то карточки с числами, образующими это выражение, убираются с экрана, открывая спрятанную под ними картинку. Понятно, что с каждым «правильным» выражением количество выделенных чисел уменьшается. Однако по исчерпании всех выделенных чисел программа создает (снова случайно) очередную тройку выделенных чисел. Если выражение составлено неправильно (либо левая часть выражения не равна правой, либо оба операнда и результат являются не выделенными числами), компьютер сообщает «Не могу». Из-за ограничений на правильность выражений все карточки убрать с экрана не удается. Выигрывает тот, кому удалось убрать наибольшее количество карточек. Хотя один кон игры проводит один ученик, в такой игре можно устраивать разные коллективные соревнования и турниры — на наименьшее количество оставшихся карточек или на время. Вторая программа пакета Считалка интересна тем, что наглядно демонстрирует, как старые и давно забытые алгоритмы возрождаются вновь при новых дидактических инструментах. Речь идет о программе Умножайка, моделирующей умножение многозначных чисел по старинному методу, предложенному великим математиком древней Средней Азии — Аль-Хорезми. Для каждого произведения создается таблица с числом столбцов, равным числу разрядов первого множителя, и числом строк, совпадающим с числом разрядов второго множителя. Так, для произведения 327*3456 строят таблицу, которую заполняют по правилам знакомой младшим школьникам таблицы умножения:
Теперь начинаются подиагональные сложения клеток, начиная с правого нижнего угла. При этом под нижней клеткой диагонали (ниже таблицы) записывается младший разряд диагональной суммы, а старший разряд переносится на следующее суммирование:
Аль-Хорезми использовал этот метод в своей педагогической работе, обучая алгоритмам вычислений немногочисленных (по нынешним временам) студентов. Ян Амос Коменский, введя классно-урочную систему, поставил метод «на поток»: прежний метод (Аль-Хорезми) требовал для каждого вычисления отдельный лист бумаги; при стремительно растущем количестве учеников пришлось изобретать иные алгоритмы, экономящие бумажные ресурсы. Так вошел в школу тот привычный сейчас метод умножения многозначных чисел, где числа надо перемножать, формируя суммируемые строки и смещая одну строку относительно другой влево на один разряд. Персональный компьютер может вернуть прежнему методу его силу: ведь расходы на необходимую при промежуточных расчетах память незначительны при нынешних объемах запоминающих устройств. Значит, в школьных кабинетах информатики можно вычислять точно так же, как это делал десять веков назад великий Аль-Хорезми. А если учесть, что в программе реализованы несколько режимов работы (ручной, полуавтоматический и автоматический), то программа Умножайка становится не только практическим вычислителем, но и хорошим методическим инструментом. Рассказывая об алгоритме Аль-Хорезми, нельзя не вспомнить выдающегося советского ученого, математика, педагога, методиста, историка Наума Яковлевича Виленкина, которому и принадлежит идея возрождения метода Аль-Хорезми. Мы рекомендуем учителю математики, имеющему доступ в школьный кабинет информатики и возможность работать с исполнителем Умножайка, попробовать древнюю методику обучения умножению многозначных чисел в современных условиях.
|