Развитие алгоритмического мышления учащихся на уроках информатики

Вид материалаУрок

Содержание


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

Развитие алгоритмического

мышления учащихся

на уроках информатики.


Г

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

Д.П. Береговой


Информатика в школе преподается с 8 по 11 класс. В связи с этим мне хотелось бы обратить особое внимание на 8-9 классы, так как стандартно информатика как предмет, вводится в большинстве школ начиная с 10 класса, однако нормативные документы предписывают перенести изучение информатики в основную школу.

Содержание обучения информатики в 8-9 классах включает следующие разделы:
  1. Информация и информационные процессы.
  2. Представление информации.
  3. Системы счисления.
  4. Компьютер.
  5. Алгоритмизация и программирование.
  6. Информационные технологии.

Раздел «Алгоритмизация и программирование» является одним из основных и самых сложных разделов в школьном курсе информатики.

Главная цель данного курса – развитие алгоритмического мышления учащихся.

Поэтому тема, над которой я работаю, называется «Развитие алгоритмического мышления учащихся на уроках информатики».

Эту тему я беру на вооружение для обучения учащихся уже с 8 класса, с последующим изучением в 9-11 классах. Считаю своим долгом заинтересовать школьников такой проблемой, как алгоритмизация, показать необходимость ее изучения, а также область применения. Продемонстрировать связь с другими предметами, изучаемыми в школе.

Учащиеся могут мыслить по-разному, существуют разные стили мышления. Математика развивает математический стиль мышления, то есть умение рассуждать, пользоваться математическими формулами в своих рассуждениях. Литература и история используют гуманитарный стиль мышления. Но существует особый стиль мышления, который называется – алгоритмическим

Что такое алгоритмическое мышление?

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

Для этого буду использовать отечественную методику «Комплекс Учебных Миров», которая начала разрабатываться в 80-е годы в стенах Московского государственного университета им. М.В Ломоносова академиком А.Г. Ершовым (рис.1), и продолженная его учениками и последователя А.Г. Кушниренко, Г.В. Лебедевым, Р.А. Скворенем.

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

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

Главное в обучении по данной методике – составление и анализ алгоритмов.

Основным средством при этом является школьный алгоритмический язык – современный процедурный язык, который входит в «Комплекс Учебных Миров» (КуМир) (рис.2). Для составления и записи алгоритмов в школьном алгоритмическом языке используется исполнитель Робот.

Школьный алгоритмический язык выбран в 8-9 классах как среда, которая соответствует уровню развития ребенка среднего школьного возраста. А также, с одной стороны она удовлетворяет требованиям пропедевтического курса, а с другой стороны, учитывает эмоциональные качества ребенка.

Важнейшей особенностью школьного алгоритмического языка является русская лексика. Смысл служебных слов языка доступен и понятен школьнику. Иностранные слова традиционных языков программирования (Бейсик, Паскаль), изучаемых в старших классах, создают дополнительную сложность, не имеющую никакого отношения к сути дела. Более того, заучивание иностранных слов часто затуманивает основную проблему – механизм работы и использование алгоритмических конструкций

Знакомство с правилами составления и записи алгоритмов на школьном алгоритмическом языке начинается с алгоритмов управления исполнителем Робот.

Пусть имеется клетчатое поле со стенами (препятствиями). В одной из клеток поля находится Робот (рис.3). Робот - это машинка с антенной, батарейками, моторами и так далее. И пусть есть у нас в руках пульт дистанционного управления Роботом с кнопками: «влево», «вправо», «вверх», «вниз», «закрасить». А также с экраном для вывода отказов - «нельзя выполнить» (рис.4).

Нажимаем на кнопку «вправо» - Робот смещается на клетку вправо, нажимаем на кнопку «влево» - смещается влево, на «вверх» - вверх, на «вниз» - вниз. Если такой пульт управления Роботом дать ученикам, то любой из них в состоянии, глядя на Робота, нажимать на кнопки так, чтобы Робот обошел препятствие.

Тут нет ничего сложного. Даже ребенок 5-7 лет в состоянии это проделать. Такой стиль работы с электронным устройством называется «непосредственным управлением»: я нажимаю на кнопку, смотрю на результат. Нажимаю на другую кнопку, смотрю, что получилось, принимаю решение, на какую следующую кнопку нажать.


Рис. 2


СХЕМА НЕПОСРЕДСВЕННОГО УПРАВЛЕНИЯ




В этой схеме человек нажимает на кнопки, а «исполнитель» выполняет действия. Основной план действий (как и куда двигаться) человек может придумывать по ходу выполнения команд и прояснения ситуации.

Теперь немного усложним задачу. Будем считать, что Робот далеко от нас (т.е. мы его не видим). Нажимаем на кнопку «вниз» - Робот анализирует, можно ли сделать шаг вниз, и если вниз шаг сделать нельзя, то на экране вывода «отказа» появляется сообщение «нельзя выполнить» (если можно - то сообщение об отказе не выводится). Итак, нажали на кнопку «вниз», если экран «отказа» чист то, значит, внизу свободно, если нет - значит снизу препятствие. Наша задача: не видя ничего, кроме пульта управления, заставить Робота обойти препятствие. Возможно, не с первой попытки, уже не так мгновенно, как в первом случае, но практически все ученики такую задачу решат.

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

Записать или объяснить кому-нибудь алгоритм труднее, чем выполнить работу

Если теперь школьника попросить: « Запиши как-нибудь всю последовательность нажатий на кнопки для обхода препятствия неизвестных размеров Роботом», - то тут-то и выясняется, что значительная часть учеников:

а) прекрасно представляет, на какие кнопки и как надо нажимать, чтобы заставить Робота препятствие обойти,

б) но не в состоянии четко описать эту последовательность действий.

Нет ничего удивительного в том, что алгоритм легче выполнить, чем записать.

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


СХЕМА ПРОГРАММОГО УПРАВЛЕНИЯ.

Составление алгоритма





Выполнение алгоритма




Почему же алгоритм трудно записывать?

Это трудно по трем причинам.

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

Во-вторых, учащиеся должны не только всё продумать «наперёд» во всех вариантах, но и записать это без выражений типа «и т. д.».

В-третьих, выполнять алгоритм будет компьютер - техническое устройство. Оно не может догадаться, что учащиеся «имели в виду», - все должно быть описано точно и на понятном компьютеру языке.

Здесь и возникают сложности. Школьник может прекрасно представлять себе, на какие кнопки и как надо нажать для получения результата, но иногда не в состоянии записать эту последовательность команд в виде программы.

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

Для развития алгоритмического стиля мышления нужна только голова.

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

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

Выбор средств оказывает влияние не только на сложность решаемых задач, но и на то, что учащиеся изучают. Если выбрать несоответствующие средства: ненадёжный компьютер, сложный язык программирования, неудобную программную систему, - то будем вынуждены потратить часть времени на ремонт и изучение компьютеров, языков программирования. И тем самым часть времени будет изъята из курса, то есть пропадет время, которое можно было потратить на решение задач.

Выводы:

1. Существует особый, «алгоритмический стиль» мышления.

2. Главная цель курса – развитие этого стиля мышления, как самостоятельной культурной ценности.

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

4. Основным содержанием обучения является составление и анализ алгоритмов.

Методика развития

алгоритмического мышления.

Методика построена на трех принципах:
  1. Активное усвоение материала;
  2. Проблемный подход;
  3. Выделение алгоритмической сложности в «чистом виде».

1. Активное усвоения материала.

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

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

Поэтому на уроке записи в тетради стараюсь довести до минимума. Более подробную теорию по данной теме даю учащимся на дом в виде распечатки. Таким образом, освобождается больше времени на практическую работу на компьютере.

Сам материал по данной теме довольно сухой, выдержан в физико-математическом стиле. Для повышения мотивации и интереса к теме использую на уроках элементы занимательности, эпиграфы.

Эпиграфы:
    • ко всей теме: Алгоритмам учиться – всегда пригодиться!
    • к уроку по теме ветвления: На безрыбье и рак – рыба.
    • к уроку по теме вспомогательные алгоритмы: Хороша веревка длинная – программа короткая.
    • к уроку по теме цикл n раз:

упрямы вы, и все одно и то же

твердить вам надобно сто раз!
    • к уроку по теме цикл «пока»: Коси, коса, пока роса;
Роса долой – и ты домой



2. Проблемный подход.

Второй методический принцип тесно связан с первым. Я поясню его на примере. Предположим, мы хотим ввести новую алгоритмическую конструкцию школьного алгоритмического языка. Тут возможны два подхода. Первый – мы объясняем новую конструкцию, рассказываем все подробно школьникам, приводим примеры, показываем, как её использовать, потом даем задачи, чтобы проверить усвоение материала. От этого подхода, начинающегося с изложения понятий, я отказалась.

Излагаю по другому. Сначала ставится задача, хотя у учеников нет достаточных знаний для её решения.

Например, для введения цикла «пока» ставится задача:

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

Цикла «пока» ученики в этот момент еще не знают, у них нет средств для решения этой задачи, однако задача поставлена.

Для введения цикла n раз перед учащимися ставятся следующие задачи:

Задача1.

Записать алгоритм перемещения робота на одну клетку вправо.

Усложним задачу.

Задача2.

Записать алгоритм перемещения Робота на 10 клеток вправо.

Этот алгоритм записать не сложно, только будет большим по размеру.

Задача3.

Записать алгоритм перемещения Робота на 100 клеток вправо.

Запишите алгоритм смещения Робота вправо на 100 клеток любым способом. Пусть этот алгоритм будет не для ЭВМ, а для человека.


Задача для введения команды ветвления «если»:

Робот на дежурстве – Робот охраняет помещение, состоящие из 2-х соседних клетках, неизвестно, в какой из 2-х клеток находиться Робот. Необходимо перевести Робота в другую клетку.

Все начинается с задачи.

Опыт показывает, что в тех или иных формах, более или менее правильные, три-четыре разных разумных вариантов в классе появятся. В этот момент можно весь класс похвалить, выбрать самое правильное решение. И сказать, что примерно такая конструкция введена во всех современных языках программирования, после чего добавить, что в школьном алгоритмическом языке будем записывать её так.

При этом происходит следующие – мы не излагаем новую конструкцию языка, мы поставили задачу, школьники её решали, обсуждали, а потом мы дали им форму записи того, что они сами придумали.

Почти все необходимые конструкции алгоритмического языка школьники могут изобрести сами. И в этом смысле изучения школьного алгоритмического языка как так такового не происходит. Он не является предметом. Учитель лишь показывает, как в школьном языке записывается то, что учащиеся так замечательно придумали сами.

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

Таким образом, все время учеников расходуется на решение задач. Проблемный подход – это когда конструкции вводятся на проблемах, а не наоборот.


3. Выделение алгоритмической сложности в «чистом виде».

Я провозгласила основной целью, развитие алгоритмического мышления и сказала, что в этой области есть сложности, которые надо преодолевать, с которыми надо учится работать, то нужно эти сложности выявить и представить в «чистом виде». Чтобы школьники преодолевали именно алгоритмические сложности информатики, а не сложности, скажем математики. То есть задачи, которые решает ученик, нужно очистить от математики, от лишних технических деталей, от английских слов и т.д. - словом от всего, от чего можно. И именно поэтому я в обучении использую Робота.

Если ученик думает над задачей по управлению Роботом, то все сложности у него алгоритмические, а не из других областей.

Но у принципа очистки от всего лишнего есть и обратная сторона. Конечно, при работе с Роботом на первых порах возникает ощущение игрушечности, кажется, что всё «ненастоящие». Это продолжается до тех пор, пока не достигнем уровня, когда задачи становятся сложными для лидера класса.

Игрушечности Робота боятся не надо по тем же причинам, по которым не нужно боятся тренажёров при подготовке пилотов. Во-первых, не весь курс будем Робота гонять, постепенно начнем от него отходить. Во-вторых, Робот хоть и игрушечный, но понятия и конструкции, которыми овладеваем в процессе работы с Роботом, вполне настоящие.

И чтобы учащиеся не потеряли интерес, нужно индивидуально варьировать сложность задач в зависимости от уровня учеников.

Я проиллюстрирую это на примерах.

Робот стоит слева от вертикальной стены требуется составить алгоритм, который заставит Робота обойти стену вокруг и закрасить все примыкающие к стене клетки (рис.5). Значительная часть класса сделает такую задачу быстро. Пока остальные раздумывают или вводят свои алгоритмы в компьютер тех, кто задачу уже сделал, можно попросить изменить алгоритм применительно к более сложной ситуации.

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

Задачи различной сложности для команды ветвления (рис.6):
  • Закрасить клетки напротив проходов (выходов и тупиков);
  • Закрасить первую клетку прохода;
  • Закрасить тупики;
  • Закрасить первую клетку выхода;
  • Закрасить клетки напротив тупиков.

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

При проведении практических работ предлагаю учащимся готовые алгоритмы записанные на компьютере:
  • Затем их легко прокручивать с различными данными и модифицировать;
  • А так же в целях сокращения времени на набор текста алгоритма на компьютера, так как у разных учащихся различная скорость набора текста.

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

Школьники разные, у одних лучше идет математика, у других информатика, у третьих ещё что-то, при таком преподавании информатики на материале математики просто выпадает целый пласт учеников, которые математику знают плохо, боятся её, неуверенно себя чувствуют или теряют интерес, когда начинается что-то математическое. Поэтому, отделяя информатику от математики, кроме всего прочего, создаем условия в классе новых лидеров - лидеров по информатике, даём ученикам проявиться в этой новой области более или менее независимо от их успехов по другим предметам.

После изучения КуМира, в 10-11 классах учащиеся легче усваивают язык программирования Qbasic. Даю два языка в сравнении.

Выводы:

1. Доля объяснений на уроках должна быть ниже, чем доля активной работы учащихся.

2. Все начинается с задачи.

3. Задачи, которые решает ученик, нужно очистить от математики, от лишних технических деталей, от английских слов и т.д. - словом от всего, от чего можно.

Структура курса.

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



Название и содержание блока


Кол-во часов


Введение в школьный алгоритмический язык:
  • Понятие алгоритма. Исполнитель алгоритма. Свойства алгоритма.
  • Школьный алгоритмический язык. Исполнитель Робот.

2


Линейные алгоритмы:
  • Понятие линейного алгоритма.
  • Составление линейных алгоритмов.

2


Вспомогательные алгоритмы:
  • Понятие вспомогательного алгоритма.
  • Составление алгоритмов с использованием вспомогательных алгоритмов.

4


Циклические алгоритмы:
  • Цикл n раз.
  • Алгоритм с «обратной связью». Цикл «пока».
  • Составление алгоритмов с использованием циклов n рази «пока».

7


Разветвляющиеся алгоритмы:
  • Команда ветвления если.
  • Команда ветвления выбор.
  • Составление алгоритмов с использованием команд ветвления если и выбор.

7


Изложение темы целесообразно построить именно в таком порядке, так как в этом случае последующие методы построения алгоритмов опираются на использование предыдущих, дополняя их.

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

• решение задач в классе и дома;

• работу на компьютере, в том числе:

1) отработку навыков с помощью учебных программ;

2) решение задач с использованием компьютера.

Учебные задания по всей теме рассматриваю с учётом дифференцированного обучения.