Имя материала: Методика преподавания информатики

Автор: М.П.ЛАПЧИК

11.3. методика обучения алгоритмизации на учебных исполнителях, работающих «в обстановке»

 

Изучаемые вопросы:

ª Основные требования к учебным исполнителям алгоритмов.

ª Описание архитектуры учебного исполнителя.

ª Типовые учебные задачи.

ª Способы описания алгоритмов.

Обучение методам построения алгоритмов — один из наиболее отработанных разделов школьной информатики. Традиционно применяемым дидактическим средством в этом разделе являются учебные исполнители алгоритмов. Некоторые из таких исполнителей перечислены выше; известны и другие, например, КУКАРАЧА из Роботландии, МУРАВЕЙ Г. Н. Гутмана, КЕНГУРЕНОК, реализованный фирмой КУДИЦ. Вообще говоря, подходит любой исполнитель, который удовлетворяет следующим условиям:

• это должен быть исполнитель, работающий «в обстановке»;

• этот исполнитель должен имитировать процесс управления некоторым реальным объектом (черепахой, роботом и др.);

• в системе команд исполнителя должны быть все структурные команды управления (ветвления, циклы);

• исполнитель позволяет использовать вспомогательные алгоритмы (процедуры).

Последние два пункта означают, что на данном исполнителе можно обучать структурной методике алгоритмизации. Всякое педагогическое средство должно соответствовать поставленной учебной цели. Главной целью раздела алгоритмизации является овладение учащимися структурной методикой построения алгоритмов.

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

Рассмотрим в качестве примера описание архитектуры широко известного исполнителя КЕНГУРЕНОК (аналогом является исполнитель Чертежник к учебнику [12]). Авторы программы КЕНГУРЕНОК назвали своего героя Ру (Roo) — по имени персонажа мультфильма. Мы также будем пользоваться этим именем.

Архитектура учебного исполнителя. Среда исполнителя. На экране присутствуют три основных элемента среды учебного исполнителя: строка меню, поле программы и поле рисунка, на котором находится Кенгуренок. На поле рисунка неявно (т.е. ее не видно) нанесена прямоугольная сетка. Длину стороны одной квадратной ячейки этой сетки назовем шагом. Размер всего поля — 15 шагов по горизонтали и 19 шагов по вертикали.

Режимы работы. Режим работы — это определенное состояние учебного исполнителя, в котором могут выполняться определенные действия. Необходимо в наглядной форме представить ученикам все возможные режимы работ используемого исполнителя. Для исполнителя «Кенгуренок» вся система режимов работы отражена в схеме на рис. 11.2.

 

 

Рис. 11.2. Система режимов работы исполнителя «Кенгуренок»

Кенгуренок может работать в режиме прямого управления: «команда — исполнение» (в схеме это названо ручным управлением), и в режиме программного управления: «программирование — автоматическое исполнение программы». Программный режим устанавливается тогда, когда текстовый курсор находится на поле программы. Если его вывести за границу поля программы, то установится режим прямого управления.

Реализация этих двух режимов очень полезна с методической точки зрения, в контексте темы управления. Работа Кенгуренка в режиме прямого управления имитирует ситуацию «ручного» управления объектом со стороны человека. Человек отдает только простые команды (шаг, поворот, прыжок), а управляющие решения принимает сам, анализируя обстановку на поле исполнителя.

Режим программного управления следует трактовать как имитацию ситуации, когда объектом управляет компьютер. Роль человека — составление алгоритма, ввод программы и инициализация ее исполнения компьютером.

В свою очередь, в режиме программного управления имеются следующие режимы (подрежимы) работы:

— установка исходного состояния: стирается рисунок с поля Кенгуренка, устанавливается исходное положение и направление Кенгуренка (этот режим работает и при «ручном» управлении);

— программирование: набор программы на программном поле;

— исполнение: работа Ру по заданной программе.

И, наконец, исполнение может проходить в трех режимах:

— в автоматическом режиме (на экране сразу появляется результат выполнения программы);

— в автоматическом пошаговом режиме (Кенгуренок демонстрирует выполнение каждой команды);

— в отладочном режиме (исполнение каждой команды запускается отдельно и подробно комментируется мультипликационными средствами).

Режим работы с файлами. В этом режиме можно сохранить программу в файле, прочитать программу из файла в поле программы, сохранить рисунок в файле, распечатать на принтере рисунок и программу.

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

Система команд исполнителя (СКИ). Команды делятся на команды установки (изменения) режимов и команды управления Кенгуренком (команды программы). Все команды могут быть выбраны из меню. Меню команд первого типа имеет желтый цвет; меню команд второго типа — белый цвет. Будем называть их кратко: «желтое меню» и «белое меню». Переход от одного меню к другому производится нажатием клавиши [Tab].

Каждую команду можно вызвать нажатием определенной функциональной клавиши. «Желтое меню» является многоуровневым. Команды первого уровня «желтого меню» и соответствующие им функциональные клавиши, следующие:

[F1] — ПУСК — запуск на исполнение готовой программы в пошаговом автоматическом режиме;

[F2] — ОТЛАДКА — выполнение программы в отладочном режиме с остановкой после каждой команды;

[F3] — УСТАНОВКА — очистка поля и установка положения Ру с помощью клавиш перемещения курсора;

[F4] — РАЗНОЕ — содержит подменю с дополнительными командами работы с файлами;

[F5] — РЕЗУЛЬТАТ — мгновенное получение результата работы программы (автоматический режим исполнения).

В свою очередь команда РАЗНОЕ имеет два уровня подменю, состоящих из команд файлового типа. Это дерево меню изображено на рис. 11.3.

В режим справки можно попасть, нажав одновременно клавиши [QTRL]+[H].

 

    Рис. 11.3. Система файловых команд исполнителя «Кенгуренок»

 

Систему команд управления Кенгуренком следует сообщать ученикам не всю сразу, а постепенно, по мере их необходимости для решения задач.

В режиме ручного управления (курсор за программным полем) используются всего три простые команды «белого меню»:

1) шаг — перемещение Ру на один шаг вперед с рисованием линии;

2) поворот — поворот Ру на 90° против часовой стрелки;

3) прыжок — перемещение Ру на один шаг вперед без рисования линии.

При переходе в режим программирования «белое меню» меняется. К нему, кроме перечисленных, добавляются следующие команды:

4) пока <условие> повторять <тело цикла> конец цикла — цикл с предусловием;

5) если <условие> то <серия 1> иначе <серия 2> конец ветвления — полное ветвление;

6) если <условие> то <серия > конец ветвления — неполное ветвление

7) сделай <имя процедуры> — обращение к процедуре.

Данными при работе с этим исполнителем является обстановка на поле Кенгуренка. Она определяется имеющимся рисунком и состоянием самого Кенгуренка: его позицией на поле и направлением (куда смотрит). Обычно исходной обстановкой является отсутствие рисунка (чистое поле) и определенное состояние Ру. Такая обстановка устанавливается в режиме УСТАНОВКА. Результатом работы является рисунок.

Приведенное выше описание можно назвать описанием архитектуры исполнителя КЕНГУРЕНОК. По такой же схеме рекомендуется описывать архитектуру любого другого алгоритмического исполнителя.

Обучение алгоритмизации. Первыми заданиями по управлению Кенгуренком должны быть задачи на работу в режиме прямого управления с целью получить определенный рисунок. Этими рисунками могут быть фигуры, узоры, буквы, построенные из вертикальных и горизонтальных отрезков. Следует обратить внимание учеников на необходимость первоначальной установки Ру на поле.

Продемонстрируйте ученикам реакцию Ру в случае, если его пытаются переместить за границу поля. С Кенгуренком происходит «авария». Следовательно, выход за край поля допускать нельзя.

Наибольший интерес представляет работа в программном режиме. Для перехода в этот режим достаточно переместить курсор в поле программы. После этого сразу увеличится «белое меню».

Обучение программированию для исполнителя нужно строить на последовательности решаемых задач. Очередность задач должна определяться следующими принципами:

— от простого к сложному: постепенное усложнение задач;

— новизна: каждая задача вносит какой-то новый элемент знаний (новая команда, новый прием программирования);

— наследование: следующая задача требует использования знаний, полученных при решении предыдущих задач.

В учебнике [6] рассматривается последовательность задач, которая позволяет ученикам осваивать приемы алгоритмизации в таком порядке:

— составление линейных алгоритмов;

— описание и использование вспомогательных алгоритмов;

— составление циклических алгоритмов;

— использование ветвлений в алгоритмах;

— использование метода последовательной детализации при составлении сложных алгоритмов.

Алгоритмы решения задач, которые рассматриваются ниже, приведены в [6]. Здесь же будут обсуждаться только дидактические и методические проблемы, связанные с решением каждой задачи.

 

Задача 1: составить алгоритм рисования буквы «Т» в центре поля рисунка. Длина горизонтального и вертикального отрезков — 4 шага. Кенгуренок находится в крайней левой точке горизонтального отрезка и смотрит на восток (направо).

При разборе этой задачи необходимо обратить внимание учеников на два обстоятельства. Первое: управление Кенгуренком для достижения поставленной цели будет происходить без обратной связи. Считаем, что рисование производится вдали от края и выход на границу поля произойти не может. В этом случае алгоритм управления будет иметь линейную структуру.

Второе: алгоритм зависит не только от сформулированной цели (искомого результата), но и от исходного состояния исполнителя. Если бы исходное состояние было другим (например, Ру находится в нижней точке вертикального отрезка и направлен на север), то был бы другим и алгоритм, несмотря на то, что в результате получается один и тот же рисунок. Для алгоритмов работы «в обстановке» начальное состояние исполнителя является исходным данным задачи. Состояние Кенгуренка определяется местом его расположения на поле и ориентацией. Результатом же выполнения алгоритма становится не только рисунок (главная цель), но и конечное состояние исполнителя.

 

Задача 2 естественным образом выводит на идею вспомогательного алгоритма. Задание следующее: составить алгоритм рисования числа «1919». Учитель может поступить следующим образом: предложить ученикам написать алгоритм прежними средствами, т. е. используя только три основные команды: шаг, поворот, прыжок. Такое задание, очевидно, не вызовет энтузиазма учеников, поскольку принцип им уже понятен, а писать длинный линейный алгоритм довольно скучно. В этой ситуации вполне возможно самостоятельное «открытие» учениками идеи вспомогательного алгоритма. Обратив внимание на то, что в рисунке дважды присутствуют цифры «1» и «9», ученики могут прийти к идее отдельного описания алгоритмов рисования этих цифр, а затем использования их для получения четырехзначного числа «1919». После обсуждения этой идеи учитель вводит понятие вспомогательного алгоритма и объясняет, как производится его описание и использование. На языке Кенгуренка вспомогательный алгоритм называется процедурой.

Умение использовать вспомогательные алгоритмы необходимо вырабатывать у учеников как можно раньше, уже на примерах линейных алгоритмов. Важнейший прием алгоритмизации и программирования — декомпозиция задачи, т.е. выделение в исходной задаче некоторых более простых подзадач. Алгоритмы решения таких подзадач называются вспомогательными алгоритмами, а реализующие их программы — подпрограммами (процедурами). Таким образом, решение исходной задачи разбивается на несколько алгоритмов: основной алгоритм и вспомогательные алгоритмы. Как правило, в основном алгоритме происходит многократное обращение к вспомогательному алгоритму.

Существуют две методики программирования с использованием подпрограмм: метод последовательной детализации, или «сверху вниз», и сборочный метод, или «снизу вверх». При построении сложных алгоритмов наиболее эффективным является метод последовательной детализации. В этом случае программирование начинается с составления основного алгоритма. В нем записываются обращения к вспомогательным алгоритмам, которые пока еще не составлены. Но уже на этом этапе необходимо решить вопрос о спецификациях подпрограмм, т.е. об их входах и выходах. Для графического исполнителя спецификации заключаются в ответах на вопросы: какой рисунок создает подпрограмма, каким должно быть исходное состояние исполнителя, каким будет конечное состояние исполнителя.

 

Задача 3: составить алгоритм рисования горизонтальной линии, проведенной от края до края поля. Эта задача вносит в данную тему следующие новые элементы: управление с обратной связью; структурная команда цикла. Обратная связь между объектом управления (Кенгуренком) и управляющей системой заключается в том, что перед выполнением каждого шага проверяется условие «впереди не край?». Если оно истинно, т.е. ответ положительный, то делается шаг, в противном случае выполнение цикла прекращается.

Механизм обратной связи наглядно иллюстрируется в отладочном режиме исполнения программы. В этом режиме анимационными средствами на экране изображается мальчик Кристоффер, который отдает команды управления Кенгуренку. В начале каждого цикла Кристоффер спрашивает Ру: «Впереди не край?» и получает в ответ: «Да» или «Нет». Дальнейшие действия зависят от ответа.

Команда цикла является структурной командой в отличие от простых команд «шаг», «поворот», «прыжок». Структурная команда включает в себя несколько действий: проверка условия, выполнение тела цикла, которое, в свою очередь, может состоять из нескольких команд.

В теории алгоритмов существует два типа циклов: цикл с предусловием и цикл с постусловием. Цикл с предусловием (другое его название — «цикл-пока») является основным видом циклической структуры и достаточен для построения любого циклического алгоритма. В языке исполнителя Кенгуренок имеется только команда «цикл-пока».

 

Задача 4: построить прямоугольную рамку по краю поля. Решение этой задачи требует объединения умений, полученных учениками при решении предыдущих задач. Циклическая программа рисования линии оформляется в виде процедуры ЛИНИЯ. А в основной программе происходит четырехкратное обращение к этой процедуре.

 

Задача 5: расчертить экран горизонтальными линиями. Эта задача является прямым продолжением предыдущей задачи. Усложнение заключается в том, что используются две процедуры: ЛИНИЯ и ВОЗВРАТ. Кроме того, основной алгоритм сам становится циклическим. Здесь снова нужно отметить то важное обстоятельство, что при использовании процедур в основной программе необходимо учитывать начальное и конечное состояние исполнителя при их выполнении.

 

Задача 6: нарисовать орнамент, состоящий из квадратов, расположенных по краю поля. Здесь вводится еще одна структурная команда — ветвление. На примере этой задачи еще раз демонстрируется методика последовательной детализации. Причем, в отличие от предыдущих программ, здесь используется два шага детализации, поскольку в процедуре РЯД содержится обращение к процедуре следующего уровня — КВАДРАТ.

Разобравшись в рассмотренных задачах, выполнив самостоятельные задания аналогичного типа, ученики должны усвоить два основных принципа структурной методики алгоритмизации (структурного программирования):

— всякий алгоритм может быть построен с использование трех типов управляющих структур: следование, ветвление, цикл;

— при построении сложных алгоритмов следует применять метод последовательной детализации.

О способах описания алгоритмов. Традиционно в школьной информатике используются два способа описания алгоритмов: блок-схемы и учебный алгоритмический язык. В базовом курсе информатики необходимо использовать обе эти формы. Основное достоинство блок-схем — наглядность алгоритмической структуры. Однако это качество проявляется лишь в том случае, если изображение блок-схемы происходит стандартным способом. Эта тема затрагивается в подразделе 10.1 «Что такое структурное программирование» во второй части учебника [6]. Основным следствием освоения учениками структурной методики должно стать умение при построении алгоритмов «мыслить структурами». Например, исходя из условия задачи, делать следующие выводы: «Алгоритм решения данной задачи будет представлять собой два вложенных цикла: или — цикл с вложенным ветвлением, или — два последовательных цикла» и т.п. Структурно изображенные блок-схемы (рис. 1.4) помогают такому видению алгоритма.

Рис. 11.4. Блок-схемы:

 

Вот, например, две блок-схемы: а — пример структурного изображения алгоритма; б — пример неструктурного изображения алгоритма

На первый взгляд трудно понять, что на двух этих блок-схемах изображен один и тот же алгоритм. Из схемы а четко видна его структура: цикл-пока с вложенным ветвлением. В схеме б довольно сложно усмотреть эту же структуру. Блок-схема а нарисована стандартно, блок-схема б — произвольно.

Алгоритмический язык — это текстовая форма описания алгоритма. Она ближе к языкам программирования, чем блок-схемы. Однако это еще не язык программирования. Поэтому строгого синтаксиса в алгоритмическом языке нет. Для структурирования текста алгоритма на АЯ используются строчные отступы. При этом соблюдается следующий принцип: все конструкции одного уровня вложенности записываются на одном вертикальном уровне; вложенные конструкции смещаются относительно внешней вправо. Соблюдение этих правил улучшает наглядность структуры алгоритма, однако не дает такой степени наглядности, как блок-схемы.

 

Страница: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 |