Решение трудностей изучения раздела учащимися
При изучении данной темы можно столкнуться со следующими сложностями:
· непонимание учащимися понятия «алгоритм»;
· неправильное приведение примеров алгоритма (не выполняются все его свойства, команды не входят в систему команд исполнителя);
· неправильное представление алгоритма в виде блок-схемы;
· неправильное использование простейших алгоритмических конструкций;
· отсутствие понимания принципа перевода алгоритма на формальный язык.
С первой из предложенного списка трудностей сталкиваются уже на начальном этапе изучения данной темы. В связи с этим раскрытие этого вопроса дается с использованием примеров, основанных на жизненном опыте учащихся. А также огромное значение имеет тот факт, что знакомство с алгоритмом происходит через раскрытие его неотъемлемых атрибутов или свойств, которые и позволяют некий текст (при условии представления его в словесной форме) воспринимать как алгоритм. Примеры, приводимые учителем во время урока должны отличаться разнообразием, касаться различных сфер человеческой деятельности. Это могут быть зарядка, выполняемая каждым человеком по утрам, переход через улицу, разведение костра, пришивание пуговицы, приготовление блюда по поваренной книги и другие.
Следующим этапом является закрепление понимания учащимися понятия алгоритм, и здесь возникает следующая проблема. Несмотря на то, что учащиеся знают определение и основные свойства они не могут правильно сформулировать примеры, которые являлись бы алгоритмами. Чаще всего забываются какие-нибудь важные атрибуты, им не уделяется достаточного внимания. Например, распространенной является ошибка, когда учащиеся забывают что необходимо, чтобы все действия приводили к какому-нибудь результату, а не выполнялись просто так.
Для закрепления основных понятий и для преодоления вышеназванных трудностей, связанных с определением алгоритма, полезно рассмотреть с учениками несколько заданий следующего содержания:
1. выполнить роль исполнителя: дан алгоритм, формально исполнить его;
2. определить исполнителя и систему команд для данного вида работы;
3. в рамках данной системы команд построить алгоритм;
4. определить необходимый набор исходных данных для решения задачи.
Следующая проблема связана с неправильным представлением алгоритма в виде блок-схемы. Чтобы избежать серьезных проблем с изучением этого подраздела, нужно выработать у учащихся практические навыки по разработке блок-схемы, для этого необходимо соблюдать единообразие представления основных алгоритмических конструкций, а также осуществлять многократное повторение упражнений на использованием данных схем.
Большую сложность у учащихся вызывает изучение базовых алгоритмических конструкций. Подробно необходимо остановить на каждой из них: линейность, ветвление и цикл.
Линейные алгоритмы воспринимаются легче всего, но необходимо подвести учащихся к выводу о невозможности их использования для большого круга задач.
При разборе конкретного алгоритма ветвления на схеме следует отметить разными цветами два возможных способа выполнения команды, точку входа и выхода из команды. Обязательно вслух проговаривается алгоритм с использованием ключевых слов «если», «то», «иначе». Это позволяет, во-первых, лучше усвоить данную структуру, а во-вторых, осуществить пропедевтику записи алгоритма с помощью псевдокода. Обращается внимание на то, что слева всегда записывается действие, которое будет выполнено в случае соблюдения условия, т. е. путь «да», а справа — действие, выполняемое при несоблюдении условия, т. е. путь «нет». Необходимо обратить внимание учащихся на то, что команда ветвления заканчивает свою работу, как только выполнится одна из двух предложенных команд.
Следует обсуждать с учащимися необходимость использования команды ветвления. Для этого можно задать следующие вопросы: почему алгоритм решения задачи не может иметь линейную структуру? Какое условие надо проверять при выполнении алгоритма? Какие действия выполняются при соблюдении условия, а какие — при его несоблюдении? Какая форма команды ветвления применена? В каких задачах используется данная структура алгоритма? и т. п.
В ряде учебников первой изучаемой конструкцией после команды следования является цикл, поскольку это дает возможность сократить запись алгоритма. Как правило, это конструкция «повторить n раз». Такой подход приводит к трудностям в освоении циклов как структуры организации действий, качественно отличающейся от линейной. Во-первых, другие разновидности цикла с предусловием и с постусловием (цикл «пока», цикл с параметром, цикл «до») воспринимаются как изолированные друг от друга и главный признак — повторяемость действий — не выступает в качестве системообразующего. Во-вторых, без внимания остаются опорные умения, которые необходимы при разработке циклов: правильное выделение условия продолжения или окончания цикла, правильное выделение тела цикла. Проверка условия в цикле «повторить п раз» практически не видна, и циклический алгоритм часто продолжает восприниматься учащимися как линейный, только иначе оформленный, что порождает неверный стереотип у учащихся в восприятии циклов вообще. Поэтому методически более целесообразным является изучение вначале команды ветвления, в которой используется условие, а уже затем команды повторения.
Изучение команды повторения следует начинать с введения цикла с постусловием, поскольку в этом случае учащемуся дается возможность вначале продумать команды, входящие в цикл, и только после этого сформулировать условие (вопрос) повторения этих команд. Если же сразу вводить цикл с предусловием, то учащимся придется выполнять оба эти действия одновременно, что снизит эффективность проведения занятий. В то же время цикл с постусловием рассматривается в качестве подготовки восприятия учащимися цикла с предусловием, обеспечивает перенос знаний на другой вид команды повторения, дает возможность работать по аналогии. Следует обратить внимание учащихся на то, что данные виды цикла отличаются по месту проверки условия, по условию возврата к повторению выполнения тела цикла. Если в команде повторения с постусловием тело цикла выполняется хотя бы один раз, то в команде повторения с предусловием оно может ни разу не выполняться.
Для решения последней трудности, связанной с отсутствие понимания принципа перевода алгоритма на формальный язык можно предложить следующее решение: необходимо начать изучение языка программирования с использования базовых алгоритмических конструкций, а также необходимо использовать параллельно различные формы представления алгоритма, что позволит более формально подойти к конкретному алгоритму.