КУРС ПРОГРАММИРОВАНИЯ НА ПАСКАЛЕ В ЗАДАНИЯХ И УПРАЖНЕНИЯХ A COURSE OF PROGRAMMING ON PASCAL IN TASKS AND EXERCISES В.Н.Касьянов Институт Систем Информатики А.П.Ершова, Новосибирск Тел.: (3832) 34-23-52, факс: (3832) 32-34-94, e-mail: [email protected] В настоящее время практика программирования остро нуждается в строгом научном исследовании на математической основе. Этому препятствует, на взгляд автора, несколько прямолинейное изучение программирования в большинстве российских вузов с ориентацией на чисто практическую деятельность, минуя изучение математических концепций, связанных с ним и полезных при оценке возникающих в практике программирования явлений [1]. При обучении программированию наиболее важным представляется начальный этап, на котором обучаемый должен овладеть навыками точного формулирования алгоритмов на языке высокого уровня. Рассматриваемый в докладе курс нацелен на развитие алгоритмического мышления студентов и овладение ими основополагающих приемов программирования на Паскале в заданиях и упражнениях. Курс базируется на опыте преподавания основного курса по программированию для студентов мехмата НГУ, который читается автором, начиная с 1975 г. Создана адаптивная программная среда активного обучения программированию, поддерживающая курс. Основные методические и технологические принципы Курс базируется на ряде методических и технологических принципов, основными из которых являются следующие. Принцип концентрического изложения материала, когда обучаемый осваивает языковые средства и приемы программирования постепенно, слой за слоем. При этом с первых занятий студенты начинают упражняться в составлении программ, которые могут реально выполняться на доступных ЭВМ, а освоение нового слоя означает просто расширение круга задач, которые может решать обучаемый. Принцип обучения проектированию программ на подробно комментированных образцах решения тщательно подобранных задач. Назначение примеров – не только дать образцы и описать основные схемы алгоритмов, но и на сравнительном анализе разных решений одной и той же задачи познакомить студента с такими понятиями, как эффективность, наглядность и надежность решения. Принцип доказательного программирования, когда программа строится вместе с доказательством ее правильности. Для этого в курсе вводятся понятия промежуточных утверждений и инвариантов, а в разрабатываемых алгоритмах решения задач такие утверждения записываются в форме программных комментариев. Принцип пошаговой разработки программ, когда программа строится из формальной спецификации задачи с помощью мелких формально проверяемых шагов преобразования. Содержание и структура курса Курс содержит почти 4000 задач и состоит из восьми глав. Первые семь глав предназначены для изучения студентами основных понятий программирования и постепенного овладения навыками разработки на языке Паскаль линейных, ветвящихся и итеративных алгоритмов, алгоритмов со структурированными данными, процедурами и указателями. Внутри главы упражнения сгруппированы по методам решения и языковым конструкциям, на освоение которых они ориентированы. Каждая группа составляет самостоятельный параграф, содержащий помимо текстов упражнений либо описание соответствующих языковых понятий, либо примеры решения некоторых типичных задач данной группы. Главу завершает список заданий. Каждая из формулировок заданий представляет собой фактически схему для построения конкретных вариантов задания – индивидуальных задач на программирование для всех студентов учебной группы. Практикум по программированию Восьмая глава содержит индивидуальные задания различной сложности, ориентированные на приобретение навыка практического решения на ЭВМ задач, требующих разработки алгоритма, обработки сложных структур данных и создания дружественного интерфейса. Каждое индивидуальное задание – это самостоятельная, как правило, комбинаторная или логическая задача с краткой и четкой формулировкой, не содержащей описания алгоритма. Тематические задачи разбиты на пять разделов: графы, языки, формулы, геометрия, игры. Большая часть главы – это подробные рекомендации по выполнению разных видов работ, которые должен освоить студент, чтобы научиться создавать эффективные, наглядные и надежные программы решения нетривиальных задач на ЭВМ. Предварительное издание курса было осуществлено в виде трех учебных пособий НГУ [2-4] при поддержке Минобразования. Есть положительный опыт их использования в вузах, а также в школах с углубленным изучением математики и программирования. Издание книги запланировано на 2001 год и поддержано РФФИ (грант 01-01-14051). Литература 1. Касьянов В.Н. Вопросы обучения математиков программированию // Всероссийская конф."Математика и общество. Математическое образование на рубеже веков", М., МЦНМО, 2000, С.440-441. 1 2. Касьянов В.Н. Вводный курс программирования на Паскале в заданиях и упражнениях, Новосибирск, НГУ, 1999, Часть 1, 160 С. 3. Касьянов В.Н. Вводный курс программирования на Паскале в заданиях и упражнениях, Новосибирск, НГУ, 1999, Часть 2, 170 С. 4. Касьянов В.Н. Практикум по программированию, Новосибирск, НГУ, 2001, 155 С. 2