МЕТОДИКА БЫСТРОГО ОБУЧЕНИЯ ПРОГРАММИРОВАНИЮ НА ОСНОВЕ ИЗУЧЕНИЯ КЛАССОВ ЗАДАЧ В.П.Гладков Пермский государственный технический университет E-mail: gvp@pstu.ac.ru Современные программы школьного курса информатики отводят мало времени на изучение программирования, отдавая большую часть времени другим темам (линиям). Однако, столь впечатляющие успехи информатики, которые мы наблюдаем сегодня, связаны с реализацией на персональном компьютере большого количества алгоритмов. Умение эффективно использовать реализованные алгоритмы вырабатывается полноценным усвоением идей и методов программирования. Программирование, являясь сложной в интеллектуальном смысле деятельностью, позволяет как ни какой другой предмет развивать и совершенствовать мышление учащихся, учит планировать действия и предвидеть их последствия, четко и ясно выражать свои мысли, находить закономерности, применять аналогии и обобщения. Возникает задача обучению программирования в ограниченный отрезок времени, отводимый учебными планами. Для решения этой задачи был определен круг мыслительных операций (действий), характерных для программирования. Важнейшими из них являются: умение оперировать ненаблюдаемыми объектами, классификация, построение полного множества заданных объектов, умение выделить структуру объектов, умение обобщать, умение формально записывать факты, сформулированные на естественном языке, определение понятий. Мышление всегда предметно, т.е. осуществляется на определенном конкретном материале. Поэтому большое значение имеет набор задач, на которых проводится обучение. Были проанализированы большое количество задачников по алгоритмизации и программированию, учебной литературы, книг, обучающих конкретным алгоритмическим языкам. Проанализированы различные структуры данных и алгоритмы их обработки. На основе анализа выделены типы задач и предложены стандартные алгоритмы их решения. Разработаны методы решения обобщенных и аналогичных задач на основе типовых. При построении ветвящихся алгоритмов основные проблемы возникают из-за слабого знания учащимися логики и не учета всех возможных комбинаций условий. Имеет значение и порядок проверки условий, так как он приводит к алгоритмам разной сложности. Решить эти проблемы позволяет разработка ветвящихся алгоритмов с помощью таблиц решений. Кроме того, используется каталог вариантов записи различных условий, заданных на естественном языке, на алгоритмических языках, таких как Паскаль, С, С++. Например, в каталоге указано как записать условие кратности a и b, условие того, что каждое из трех чисел неотрицательно и т.п. Использование такого каталога позволяет снять у обучаемых боязнь неумения записать условие и сосредоточить основное внимание на уяснении способов построения алгоритмов. Каталог можно использовать и для развития умения отыскивать закономерности в записи разных условий и условий, которые по разному формулируются на естественном языке, но имеют одинаковую структуру записи на алгоритмическом языке. По прошествии времени, для каждого обучаемого разного, происходит отказ от пользования каталогом, т.к. большая часть способов записи условий уже усвоена, больше того, обучаемые начинаю сами пополнять каталог. При обучении построению циклических алгоритмов основное внимание обращается на классификацию алгоритмов по способам окончания. Если заранее известно сколько раз выполняется тело цикла, то для проверки окончания цикла достаточно проверить значение счетчика, который изменяется всякий раз, когда выполнено тело цикла. Если количество раз исполнения тела неизвестно, но существует одна причина окончания, то цикл строится как итерационный. Если причин окончания несколько, то цикл строится со сложным логическим выражением, полученным как конъюнкция причин окончания. Причины окончания имеют вид условий и могут быть записаны с использованием описанного ранее каталога. Задачи на массивы классифицируются так: работа с массивом по получению различных числовых характеристик: сумм, средних, максимальных, минимальных и т.п.; работы по изменению порядка следования элементов в массиве (переворот массива, удаление или вставка элементов, обмен местами пар элементов и т.п.); работы с несколькими массивами одновременно; работа с одним массивом, но разними его подмассивами (переставить нули в конец массива, сдвинув остальные к началу, не нарушая порядка их следования и т.п.); поиск и сортировка в массиве. В нашей методике принята следующая процедура проведения практических занятий. На период обучения каждый обучаемый получает доступ к персональному компьютеру. В начале каждого занятия с помощью специальной программы проводится опрос на специально подготовленной системе тестов. Такой опрос позволяет не только проверить знания пройденного материала, но и актуализировать знания, нужные для нынешнего занятия. Затем преподаватель объясняет алгоритм решения типовой задачи. Каждый учащийся доводит его до программы и уясняет его работу с помощью пошагового исполнения программы. Для лучшего понимания особенностей программирования, предлагается записать изученный алгоритм с помощью других операторов алгоритмического языка, восстановить в предложенной программе пропущенные операторы, установить возможные исходные данные по результату работы программы, разработать систему тестов для всесторонней проверки работоспособности программы, установить границы ее применимости с учетом выбранных типов данных. На следующем этапе предлагается набор задач, которые относятся к изучаемому типу. Свои решения учащиеся отправляют по локальной сети на центральный компьютер, где они проверяются специальной программой на системе тестов, подготовленных преподавателем. Обратно отправляется ответ об успешности прохождения тестов (задача зачтена как решенная), либо информация об ошибке. Учащийся должен исправить ошибки и повторить попытку сдать задачу. В это время преподаватель помогает нуждающимся в помощи, просматривает тексты решенных задач и комментирует их. На завершающем этапе обучаемым предлагается большой набор разных задач, из которых нужно выбрать задачи, решаемые рассмотренным методом; классифицировать задачи по изученным типам, придумать задачи, аналогичные решенным. Решенные задачи оформляются в справочник готовых решений. Такой справочник пригодится в дальнейшем. Описанная методика показала свою эффективность для выработки хороших навыков алгоритмизации за отведенное на обучение время. Литература 1. Гладков В.П. Конспект лекций по программированию для начинающих: Учебное пособие рекомендовано учебно - методическим объединением вузов по образованию в области машиностроения и приборостроения в качестве учебного пособия для студентов, обучающихся по специальности 220100 / Перм. гос. техн. ун-т Пермь, 1998. - 217 с. 2. Гладков В.П. Курс лабораторных работ по программированию: Учебное пособие для специальностей электротехнического факультета ПГТУ / Перм. гос. техн. ун-т. - Пермь: МИБОН, 1998. - 153 с. 3. Гладков В.П. Знаешь ли ты Паскаль?: Учеб. пособие / Перм. гос. техн. ун-т. – Пермь: Изд-во ПГТУ, 2001.109 с. 4. Гладков В.П. Курсовая работа по программированию: Учебное пособие по курсовой работе по программированию для студентов электротехнического факультета ПГТУ. - Пермь: Изд-во ПГТУ, 1996. - 53 с. 5. Гладков В.П., Кулютникова Е.А. Пособие по информатике для самообразования: Учебное пособие / Перм. гос. техн. ун-т. - Пермь: МИБОН, 1998. - 127 с.