методика преподавания программирования в школе. Лекция Методика преподавания программирования в школе. Методические аспекты изучения основ алгоритмизации и программирования в школьном курсе
Скачать 33.26 Kb.
|
Методические аспекты изучения основ алгоритмизации и программирования в школьном курсе План 1. Цели и задачи изучения основ алгоритмизации и программирования в школьном курсе информатики. Значение проблемы формирования алгоритмического стиля мышления учащихся. 2. Обязательный и вариативный уровни усвоения учебного материала по изучаемому разделу. 3. Методические особенности изучения базовых понятий алгоритмизации и программирования. 4. Решение трудностей изучения раздела учащимися. 5. Выводы 1. Изучение алгоритмов и языков программирования является неотъемлемой частью информатики. Программирование вырабатывает логическое, комбинаторное и алгоритмическое мышление, творческие способности. Под способностью алгоритмически мыслить понимается умение решать задачи различного происхождения, требующие составления плана действий для достижения желаемого результата. Для записи алгоритмов в первую очередь предлагается использовать формальные языки блок-схем и структурного программирования. Предполагается, что с самого начала работа с алгоритмами поддерживается компьютером. Вопрос о роли алгоритмизации должен решаться исходя из основных целей обучения в школе вообще. Одна из таких целей – развитие мышления учащихся. Исходя из этого, обучение алгоритмизации можно рассматривать и как промежуточный шаг в обучении программированию, и в большей степени, как средство развития мышления. Таким образом, изучение алгоритмизации в школьной информатике может иметь два целевых аспекта: первый – развивающий аспект, под которым понимается развитие алгоритмического (ещё говорят операционного) мышления учащихся, второй – программистский аспект. Вопрос о месте и объёме программирования в базовом курсе остаётся дискуссионным. Здесь также можно выделить два аспекта в изучении программирования в школе. Первый связан с усилением фундаментальной компоненты курса информатики. Ученикам даётся представление о том, что такое языки программирования, что представляет собой программа на языках программирования высокого уровня, как создаётся программа в среде современной системы программирования. Изучение в рамках школьного курса позволяет ученикам испытать свои способности в программировании. 2. В учебном стандарте и обязательном минимуме по информатике для основной школы содержание алгоритмической линии определяется через следующий перечень понятий: алгоритм, свойства алгоритмов; способы записи алгоритмов, блок-схемы; алгоритмические конструкции; логические значения, операции, выражения; разбиение задачи на подзадачи, вспомогательный алгоритм. Здесь также определены требования к уровню подготовки выпускников: - в результате изучения раздела ученик должен знать/понимать основные свойства алгоритма; типы алгоритмических конструкций: следствие, ветвление, цикл; понятие вспомогательного алгоритма -уметь выполнять и строить простые алгоритмы. Примерная программа. Алгоритм. Свойства алгоритма. Способы записи алгоритмов; блок-схемы. Возможность автоматизации деятельности человека. Исполнители алгоритмов (назначение, среда, режим работы, система команд). Компьютер как формальный исполнитель алгоритмов (программ). Алгоритмические конструкции: следование, ветвление, повторение. Разбиение задачи на подзадачи, вспомогательный алгоритм. Алгоритмы работы с величинами: типы данных, ввод и вывод данных. Языки программирования, их классификация. Правила представления данных Правила записи основных операторов: ввода, вывода, присваивания, ветвления, цикла. Правила записи программы. Этапы разработки программы: алгоритмизация – кодирование – отладка – тестирование. Обрабатываемые объекты: цепочки символов, числа, списки, графы. Практические работы: Разработка линейного алгоритма (программы) с использованием математических функций при записи арифметического выражения. Разработка алгоритма (программы), содержащей оператор ветвления. Разработка алгоритма (программы), содержащей оператор цикла. Разработка алгоритма (программы), содержащей подпрограмму. Разработка алгоритма (программы) по обработке одномерного массива. Разработка алгоритма (программы), требующего для решения поставленной задачи использования логических операций. Таким образом, базовая подготовка в области информатики относительно разделов алгоритмизации и программирования, включает рассмотренный выше круг вопросов, а освоение учебного материала обеспечивает учащимся возможность: - уяснить (на основе анализа примеров) смысл понятия алгоритма, узнать свойства алгоритма, понять возможность автоматизации деятельности человека при исполнении алгоритмов; - освоить основные алгоритмические конструкции (цикл, ветвление, процедура), применение их для построения алгоритмов решения учебных задач; - получить представление о «библиотеке алгоритмов», научиться использовать библиотеку для построения более сложных алгоритмов; - получить представление об одном из языков программирования, использовать этот язык для записи алгоритмов решения простых задач. После изучения темы учащиеся должны: - понимать сущность понятия алгоритма, знать его основные свойства, иллюстрировать их на примерах конкретных алгоритмов; - понимать возможность автоматизации деятельности человека при исполнении алгоритмов; - знать основные алгоритмические конструкции и уметь использовать их для построения алгоритмов; - определять возможность применения исполнителя для решения конкретной задачи по системе команд, строить и исполнять на компьютере алгоритм для учебного исполнителя. - записывать на учебном алгоритмическом языке (или языке программирования) алгоритм решения простой задачи; - иметь представление о переменной как участке памяти ЭВМ; - иметь представление о массиве как совокупности однотипных данных; - понимать характер изменения параметра в процессе выполнения цикла; - понимать процесс выполнения программ, содержащих обращение к подпрограммам; - знать атрибуты переменной (имя, тип, значение); - знать стандартные функции, правила определения функций пользователя; - знать правила записи и порядок выполнения логических выражений; - знать правила определения подпрограмм и обращения к ним; - знать правила описания массивов данных; - уметь описать процесс задания значения переменной с помощью оператора присваивания; - уметь описать форматы простейших операторов, обеспечивающих ввод данных с клавиатуры и вывод символов на экран; - уметь описать форматы стандартных функций, типы аргументов, типы значений; определять функции пользователя, использовать их в выражениях; - уметь описать формат условного оператора и порядок выполнения его в полном и неполном вариантах; записывать простые разветвляющиеся алгоритмы в виде программ; - уметь описать формат операторов организации циклов; записывать простые циклические алгоритмы в виде программ; - уметь описать формы графических операторов; использовать эти операторы для создания простых изображений; - уметь организовывать ввод/вывод массива данных; различать индекс и значение массива; - владеть простейшими приёмами отладки программ. 3. Алгоритм – это конечная последовательность действий, описывающая процесс преобразования объекта из начального состояния в конечное, записанная с помощью точных и понятных исполнителю команд» Очень важна в разделе «Алгоритмизация» роль Исполнителя алгоритма. Исполнитель – объект, изменяющий своё состояние под воздействием последовательности поступивших извне команд (программы) в соответствии с некоторой договорённостью. Важно понять, чем характеризуется исполнитель: среда, система команд, элементарное действие, отказы. Среда или обстановка – «место обитания» исполнителя. Например, среда Робота – бесконечное клетчатое поле, ориентированное по сторонам горизонта, стены и закрашенные клетки на поле. Система команд исполнителя. Каждый исполнитель может выполнять команды только из некоторого конечного списка – системы команд исполнителя. Для каждой команды должны быть описаны условия применимости и результаты её выполнения. На уроке, посвящённом понятию исполнителя алгоритмов, учитель должен донести до учащихся следующие идеи. Во-первых, человек далеко не единственный исполнитель алгоритмов. Во-вторых, любой исполнитель состоит из устройства управления и «рабочего инструмента». В-третьих, каждый исполнитель алгоритмов обладает ограниченным набором допустимых действий. В-четвёртых, для решения одних и тех же задач исполнители с более «бедным» набором допустимых действий требуют более сложных и подробных алгоритмов. В-пятых, разные классы задач требуют разных наборов допустимых действий разных исполнителей. Дополним общее направление содержания образования, описанное выше, относительно раздела программирования. Цель в освоении практического программирования – научить грамотно программировать несложные практические задачи, дать представление о современной технологии программирования и о технико-экономических аспектах разработки и эксплуатации сложных программных комплексов. Во время изучения языков программирования уделяется особое внимание их классификации, правилам представления данных и правилам записи основных операторов: ввода. вывода, присваивания, ветвления, цикла. Предполагается, что ученики должны знать этапы разработки программы: алгоритмизация – кодирование – отладка – тестирование. После изучения курса учащиеся должны уметь выполнять базовые операции над объектами: цепочками символов, числами, проверять свойства этих объектов; выполнять и строить простые алгоритмы. На профильном уровне предполагается овладение умениями строить математические объекты информатики, в том числе логические формулы и программы на формальном языке, удовлетворяющие заданному описанию; создавать программы на языке программирования по их описанию; использовать общепользовательские инструменты и настраивать их для нужд пользователя. Однако, стандарт не дает методических рекомендаций по выбору языка программирования и методики его изучения. Наиболее важным и сложным обстоятельством для учителя, таким образом, становится выбор изучаемого языка программирования, учитывая уровень обучения, профиль класса и планируемые результаты обучения. Предлагаемые языки: Паскаль Pascal, созданный в 1971 году Никлаусом Виртом как учебный язык. Основной принцип, заложенный в нём – это поддержка структурной методики программирования. Этот же принцип лежит в основе учебного алгоритмического языка. По сути дела, расхождение между алгоритмическим языком и Паскалем состоит в следующем: алгоритмический язык – русскоязычный, Паскаль – англоязычный; синтаксис Паскаля определён строго и однозначно в отличии от сравнительно свободного синтаксиса алгоритмического языка. Си Си создавался с одной важной целью: сделать более простым написание больших программ с минимумом ошибок по правилам процедурного программирования. Подходит для изучения структурного программирования в базовом школьном курсе информатики. С++ Поддерживает такие парадигмы Программирования как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Язык подходит для обучения программированию на профильном уровне, так как развивает объектно-ориентированный стиль мышления. Подходит для выполнения практических работ и практикумов, предусмотренных в стандарте полной средней школы. ////// Поскольку в базовом курсе ставится только лишь цель первоначального знакомства с программированием, то строгого описания языка программирования не требуется. Основной используемый метод – демонстрация языка на примерах простых программ с краткими комментариями. Некоторые понятия достаточно воспринять ученикам на «интуитивном уровне». Для выполнения учениками несложных самостоятельных заданий достаточно действовать методом «по образцу». Учитель может задуматься над проблемой: как лучше связать изучение методов построения алгоритмов работы с величинами и языка программирования. Здесь возможны два варианта: 1) сначала рассматриваются всевозможные алгоритмы, для описания которых используются блок-схемы и алгоритмический язык, а затем – правила языка программирования, способы перевода уже построенных алгоритмов в программу на этом языке; 2) алгоритмизация и язык программирования осваиваются параллельно. Опыт показывает, что теоретическое изучение алгоритмизации и программирования, оторванное от практики, малоэффективно. Ни одну более или менее сложную программу нельзя считать правильной и процесс её написания законченным, если он не проверен путём исполнения. Велика обучающая роль исполнения программ – это в конце концов приводит к сознательному и прочному усвоению конструкций и правил алгоритмического языка. Учителю надо знать, что привить учащимся навыки программирования можно только путём обучения учащихся самостоятельно исполнять их. В информатике не всегда выгодно гнаться за количеством упражнений. Гораздо важнее решить немного задач, но так, чтобы они все были понятны учащимся. Исполнение программ – очень эффективная форма контроля знаний учащихся. Исполнение программ можно также сделать средством активизации деятельности учащихся на уроке. Воспитательное значение исполнения программ заключается в том, что учащиеся приучаются к аккуратности, внимательности, к умению доводить начатое дело до конца. Развивается логическое и рациональное мышление. Желательно, чтобы ученики как можно раньше получили возможность проверять правильность своих алгоритмов, работая на компьютере. А для этого им нужно знакомиться с языком программирования, осваивать приёмы работы в системе программирования. На первых этапах рекомендуется не отказываться от ручной трассировки алгоритма. Этот приём помогает ученикам «почувствовать» процесс исполнения, увидеть свои ошибки, допущенные в алгоритме. Когда же они станут более опытными программистами, например, осваивая элективный курс программирования в профильных классах старшей школы, тогда можно будет отказаться от ручной трассировки. Обучение программированию должно проводиться на примерах типовых задач с постепенным усложнением структуры алгоритмов. По признаку алгоритмической структуры их можно классифицировать так: - линейные алгоритмы: вычисления по формулам, всевозможные пересылки значений переменных; - ветвящиеся алгоритмы: поиск наибольшего или наименьшего значений из нескольких данных; сортировка двух-трёх значений; диалог с ветвлениями; - циклические алгоритмы: вычисление сумм и произведений числовых последовательностей, циклический ввод данных с последующей обработкой. Подобно задачам по теме «Алгоритмизация», задачи в теме «Программирование» можно разбить на следующие типы: - исполнение программы; - найти ошибку в программе; - определить, каков результат выполнения программы; - усложнение задачи; - построить математическую модель, составить алгоритм, написать программу, проверить её. Рекомендуется при решении задач в классе использовать методы проблемного изложения. На практике преимущественно урок строят по следующей схеме: фронтальная работа с классом (проверка домашнего задания, выполнение устных упражнений)-10 минут; объяснение нового материала -15 минут; работа за компьютером, выполнение заданий – 20 минут. 4. Решение трудностей изучения раздела учащимися При изучении данной темы можно столкнуться со следующими сложностями: · непонимание учащимися понятия «алгоритм»; · неправильное приведение примеров алгоритма (не выполняются все его свойства, команды не входят в систему команд исполнителя); · неправильное представление алгоритма в виде блок-схемы; ·неправильное использование простейших алгоритмических конструкций; · отсутствие понимания принципа перевода алгоритма на формальный язык. С первой из предложенного списка трудностей сталкиваются уже на начальном этапе изучения данной темы. В связи с этим раскрытие этого вопроса дается с использованием примеров, основанных на жизненном опыте учащихся. А также огромное значение имеет тот факт, что знакомство с алгоритмом происходит через раскрытие его неотъемлемых атрибутов или свойств, которые и позволяют некий текст (при условии представления его в словесной форме) воспринимать как алгоритм. Примеры, приводимые учителем во время урока должны отличаться разнообразием, касаться различных сфер человеческой деятельности. Это могут быть зарядка, выполняемая каждым человеком по утрам, переход через улицу, разведение костра, пришивание пуговицы, приготовление блюда по поваренной книги и другие. Следующим этапом является закрепление понимания учащимися понятия алгоритм, и здесь возникает следующая проблема. Несмотря на то, что учащиеся знают определение и основные свойства они не могут правильно сформулировать примеры, которые являлись бы алгоритмами. Чаще всего забываются какие-нибудь важные атрибуты, им не уделяется достаточного внимания. Например, распространенной является ошибка, когда учащиеся забывают, что необходимо, чтобы все действия приводили к какому-нибудь результату, а не выполнялись просто так. Для закрепления основных понятий и для преодоления вышеназванных трудностей, связанных с определением алгоритма, полезно рассмотреть с учениками несколько заданий следующего содержания: 1. выполнить роль исполнителя: дан алгоритм, формально исполнить его; 2. определить исполнителя и систему команд для данного вида работы; 3. в рамках данной системы команд построить алгоритм; 4. определить необходимый набор исходных данных для решения задачи. Следующая проблема связана с неправильным представлением алгоритма в виде блок-схемы. Чтобы избежать серьезных проблем с изучением этого подраздела, нужно выработать у учащихся практические навыки по разработке блок-схемы, для этого необходимо соблюдать единообразие представления основных алгоритмических конструкций, а также осуществлять многократное повторение упражнений на использование данных схем. Большую сложность у учащихся вызывает изучение базовых алгоритмических конструкций. Подробно необходимо остановить на каждой из них: линейность, ветвление и цикл. Линейные алгоритмы воспринимаются легче всего, но необходимо подвести учащихся к выводу о невозможности их использования для большого круга задач. При разборе конкретного алгоритма ветвления на схеме следует отметить разными цветами два возможных способа выполнения команды, точку входа и выхода из команды. Обязательно вслух проговаривается алгоритм с использованием ключевых слов «если», «то», «иначе». Это позволяет, во-первых, лучше усвоить данную структуру, а во-вторых, осуществить пропедевтику записи алгоритма с помощью псевдокода. Обращается внимание на то, что слева всегда записывается действие, которое будет выполнено в случае соблюдения условия, т. е. путь «да», а справа – действие, выполняемое при несоблюдении условия, т. е. путь «нет». Необходимо обратить внимание учащихся на то, что команда ветвления заканчивает свою работу, как только выполнится одна из двух предложенных команд. Следует обсуждать с учащимися необходимость использования команды ветвления. Для этого можно задать следующие вопросы: почему алгоритм решения задачи не может иметь линейную структуру? Какое условие надо проверять при выполнении алгоритма? Какие действия выполняются при соблюдении условия, а какие – при его несоблюдении? Какая форма команды ветвления применена? В каких задачах используется данная структура алгоритма? и т. п. В ряде учебников первой изучаемой конструкцией после команды следования является цикл, поскольку это дает возможность сократить запись алгоритма. Как правило, это конструкция «повторить n раз». Такой подход приводит к трудностям в освоении циклов как структуры организации действий, качественно отличающейся от линейной. Во-первых, другие разновидности цикла с предусловием и с постусловием (цикл «пока», цикл с параметром, цикл «до») воспринимаются как изолированные друг от друга и главный признак - повторяемость действий – не выступает в качестве системообразующего. Во-вторых, без внимания остаются опорные умения, которые необходимы при разработке циклов: правильное выделение условия продолжения или окончания цикла, правильное выделение тела цикла. Проверка условия в цикле «повторить п раз» практически не видна, и циклический алгоритм часто продолжает восприниматься учащимися как линейный, только иначе оформленный, что порождает неверный стереотип у учащихся в восприятии циклов вообще. Поэтому методически более целесообразным является изучение вначале команды ветвления, в которой используется условие, а уже затем команды повторения. Изучение команды повторения следует начинать с введения цикла с постусловием, поскольку в этом случае учащемуся дается возможность вначале продумать команды, входящие в цикл, и только после этого сформулировать условие (вопрос) повторения этих команд. Если же сразу вводить цикл с предусловием, то учащимся придется выполнять оба эти действия одновременно, что снизит эффективность проведения занятий. В то же время цикл с постусловием рассматривается в качестве подготовки восприятия учащимися цикла с предусловием, обеспечивает перенос знаний на другой вид команды повторения, дает возможность работать по аналогии. Следует обратить внимание учащихся на то, что данные виды цикла отличаются по месту проверки условия, по условию возврата к повторению выполнения тела цикла. Если в команде повторения с постусловием тело цикла выполняется хотя бы один раз, то в команде повторения с предусловием оно может ни разу не выполняться. Для решения последней трудности, связанной с отсутствие понимания принципа перевода алгоритма на формальный язык можно предложить следующее решение: необходимо начать изучение языка программирования с использования базовых алгоритмических конструкций, а также необходимо использовать параллельно различные формы представления алгоритма, что позволит более формально подойти к конкретному алгоритму. 5. Выводы Алгоритмическая линия включает в себя обязательный минимум содержания учебного материала, который должен быть усвоен учащимися полностью. Изучение учебного материала данной содержательной линии курса обеспечивает учащимся возможность: · понять (на основе анализа примеров) смысл понятия алгоритма, знать свойства алгоритмов, понять возможность автоматизации деятельности человека при исполнении алгоритмов; · освоить основные алгоритмические конструкции (цикл, ветвление, процедура), применять алгоритмические конструкции для построения алгоритмов решения учебных задач; · получить представление о “библиотеке алгоритмов”, уметь использовать библиотеку для построения более сложных алгоритмов; · получить представление об одном из языков программирования (или учебном алгоритмическом языке), использовать этот язык для записи алгоритмов решения простых задач. В образовательном стандарте также сформулированы основные требования к уровню подготовки учащихся. Учащиеся должны: · понимать сущность понимания алгоритма, знать его основные свойства, иллюстрировать их на конкретных примерах алгоритмов; · понимать возможность автоматизации деятельности человека при исполнении алгоритмов; · знать основные алгоритмические конструкции и уметь использовать их для построения алгоритмов; · записать на учебном алгоритмическом языке (или языке программирования) алгоритм решению простой задачи. Практикум: Разработка алгоритма (программы), решающего поставленную задачу с использованием математических функций для записи арифметических выражения, операторов ветвления и цикла. Разработка алгоритма (программы) для решения поставленной задачи с использованием вспомогательных алгоритмов, в том числе по обработке одномерного массива. В результате освоения курса информатики в основной школе учащиеся получат представление о методах представления и алгоритмах обработки данных, дискретизации, о программной реализации алгоритмов; У выпускников будут сформированы: основы алгоритмической культуры; умение составлять несложные программы; Обучающиеся познакомятся с одним из языков программирования и основными алгоритмическими структурами — линейной, условной и циклической; получат опыт написания и отладки программ в выбранной среде программирования. Изучение алгоритмизации и программирования в старшей школе на профильном уровне направлено на достижение следующих целей: овладение умениями строить математические объекты информатики, в том числе логические формулы и программы на формальном языке, удовлетворяющие заданному описанию; создавать программы на языке программирования по их описанию; использовать общепользовательские инструменты и настраивать их для нужд пользователя; развитие алгоритмического мышления, способностей к формализации, элементов системного мышления; воспитание культуры проектной деятельности, в том числе умения планировать, работать в коллективе; чувства ответственности за результаты своего труда, используемые другими людьми; установки на позитивную социальную деятельность в информационном обществе, недопустимости действий, нарушающих правовые и этические нормы работы с информацией; Основные содержательные линии в профильном уровне: Алгоритмический язык Здесь изучаются правила построения и выполнения алгоритмов. Разбиение задачи на подзадачи. Использование имен для алгоритмов и объектов. Примеры записи алгоритмов на алгоритмическом языке для графических и числовых исполнителей. Вычислимые функции. Функции, вычисляемые алгоритмами. Полнота формализации понятия вычислимости. Универсальная вычислимая функция. Индуктивные определения объектов. Доказательства правильности Соответствие алгоритма заданию (спецификации), инварианты, индуктивные доказательства. Построение алгоритмов Системы счисления, арифметические операции и перевод; кодирование с исправлением ошибок; генерация псевдослучайных последовательностей. Алгоритмы решения задач вычисли тельной математики (приближенные вычисления площади, значения функции, заданной рядом, моделирования процессов, описываемых дифференциальными уравнениями) Типы данных Основные конструкции. Матрицы (массивы). Работа с числами, матрицами, строками, списками, использование псевдослучайных чисел. Определяемые (абстрактные) типы данных. |