Структура, содержание и методические подходы к преподаванию языка программирования Python в школе
Н.Е. Федорова, МОУ Лицей №7 г. Солнечногорск, учитель,
Fomina--Natalia@yandex. ru
Алгоритмизация и программирование - одно из важнейших направлений школьного курса информатики и ИКТ. Традиционно при изучении таких разделов и тем курса как «Алгоритмы и исполнители», «Алгоритмический язык», «Построение алгоритмов», «Типы данных» на базовом и профильном уровне используют такие языки программирования, как Turbo Pascal или Object Pascal, Basic в различных своих реализациях (QBasic, Visual Basic v.6.0, Visual Basic v.7.0 и выше). В пакет свободного программного обеспечения, поставляемого в образовательные учреждения входят компиляторы и интерпретаторы для наиболее распространённых языков программирования (C/C++, Perl, Ruby, Python, Tcl/Tk, Lisp, Ocaml, Java, Fortran, PHP и другие). В рейтинге популярности языков программирования TIOBE Programming Community Index [2] многие из них входят в десятку наиболее популярных и используемых языков.
В связи с этой тенденцией и была начата разработка курса «Основы алгоритмизации и программирования». В качестве основы этого курса был выбран язык программирования Python. Отличительной особенностью языка Python является простой и ясный синтаксис, но используется стандартная библиотека, включающая большой объём полезных функций, расширяющих возможности языка. Он поддерживает императивную, объектно-ориентированную и функциональную парадигмы программирования. Основными чертами языка являются динамическая типизация, автоматическое управление памятью, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Python организовывается в функции и классы, которые могут объединяться в модули.
Поскольку Python — интерпретируемый язык программирования, при его изучении можно использовать метод проб и ошибок, что превращает программирование в игру.
Программа курса охватывает изучение практически всех разделов школьной информатики, связанных с изучением алгоритмизации и программирования в школе. Содержание курса «Основы алгоритмизации и программирования» представлено двумя укрупненными модулями: «Алгоритмы и исполнители» (8-9 класс) и «Алгоритмизация и объектно-ориентированное программирование» (10-11 класс).
«Алгоритмы и исполнители» (8 - 9 класс)
Таблица 1. Таблица соответствия учебного материала государственному стандарту по информатике и ИКТ (основное общее образование).
Разделы стандарта
Обработка информации.
Алгоритм,свойства алгоритмов. Способы записи алгоритмов; блок-схемы. Алгоритмические конструкции.
Логические значения, операции, выражения. Разбиение задачи на подзадачи, вспомогательный алгоритм.
Обрабатываемые объекты: цепочки символов, числа, списки, деревья, графы. Восприятие, запоминание и преобразование сигналов живыми организмами.
Алгоритмы и исполнители 8-9 класс
Знания, умения, навыки из государственного стандарта
знать/понимать:
основные свойства алгоритма, типы алгоритмических конструкций: следование, ветвление, цикл; понятие вспомогательного алгоритма; уметь
выполнять:
базовые операции над объектами: цепочками символов, числами, списками, деревьями; проверять свойства этих объектов; выполнять и строить простые алгоритмы; использовать приобретенные знания и умения в практической деятельности и повседневной жизни для: создания простейших моделей объектов и процессов в виде программ (в том числе в форме блок-схем);
Темы курса
1. Алгоритм и его формальное исполнение
2. Свойства алгоритма
3. Исполнители алгоритмов
4. Способы записи алгоритмов. Блок-схемы
5. Введение в язык программирования Python
6. Процедуры ввода и вывода
7. Типы данных в программировании. Определение переменной
8. Логические выражения
9. Условный оператор. Инструкция if
10. Множественное ветвление
11. Цикл While
12. Цикл for в языке программирования Python
13. Последовательности: строки
14. Последовательности: списки
15. Структуры данных: словари
16. Функции в языке программирования Python
Отличительной особенностью данного курса является то, что в качестве учебного языка используется язык Python. Питон - язык с динамической типизацией, в нём нет необходимости заранее декларировать функции и переменные для дальнейшего использования, что существенно укорачивает программу и делает её более наглядной. Многие преподаватели отрицательно относятся к такому старту в изучении основ программирования. Однако отсутствие строгой типизации позволяет уделить больше внимания логике программирования и управляющим
структурам. Как известно, одним из важнейших дидактических принципов в методике обучения является принцип наглядности. За каждым изучаемым понятием в сознании ученика должен закрепиться какой-то визуальный образ, поэтому уже на первых занятиях учащиеся приступают к выполнению практических работ (использование Питон как калькулятора, работа в интерактивном режиме). При знакомстве с синтаксисом языка особое внимание уделяется «правилу отступов», поэтому учащиеся сразу привыкнут к хорошему стилю программирования.
В Питоне имеются встроенные типы: булевые, строки, Unicode-строки, целые числа произвольной точности, числа с плавающей запятой, комплексные числа и некоторые другие. Из коллекций Python поддерживает кортежи (tuples), списки, словари (ассоциативные массивы) и, начиная с версии 2.4, множества. Все значения в Питоне являются объектами, в том числе функции, методы, модули, классы. В теме «Типы данных в программировании» учащиеся знакомятся с тремя типами данных: целые числа (integer), числа с плавающей точкой (float), строки (string). Операторы while, if, for составляют операторы перемещения. В операторе for происходит сравнение переменной и списка. Чтобы получить список цифр до числа <number> - используйте функцию range (<number>). Вот пример использования операторов:
N= input ( 'Количество □ элементов : □ ' )
S=0
for i in range (N-1) :
a=input ( 'Введите □ число : □ ' ) S=S+a
C=S/N
p r i n t 'Результат : ', C
После рассмотрения операторов управления и цикла учащиеся знакомятся со структурами данных: строки, списки, словари. Списки - похожи на одномерные массивы (но можно использовать Список включающий списки - многомерный массив), кортежи - неизменяемые списки, словари - тоже списки, но индексы могут быть любого типа, а не только числовыми. "Массивы" в Python могут содержать данные любого типа, то есть в одном массиве могут находиться числовые, строковые и другие типы данных. Массивы начинаются с индекса 0, а последний элемент можно получить по индексу -1. Для объявления функции в Питоне служит ключевое слово «def». Аргументы функции задаются в скобках после названия функции. Можно задавать необязательные аргументы, присваивая им значение по умолчанию.
Модуль «Алгоритмизация и объектно-ориентированное программирование» (10-11 класс)
Таблица 2. Таблица соответствия учебного материала государственному стандарту по информатике и ИКТ (среднее (полное) общее образование (профильный уровень))
Алгоритмизация и объектно-ориентированное программирование 10-11 класс
Разделы стандарта
Логика и алгоритмы
Цепочки (конечные последовательности), деревья, списки, графы, матрицы (массивы), псевдослучайные последовательности. Индуктивное определение объектов. Вычислимые функции, полнота формализации понятия вычислимости, универсальная вычислимая функция. Формализация понятия алгоритма. Построение алгоритмов и практические вычисления. Язык программирования. Типы данных. Основные конструкции языка программирования. Система программирования. Основные этапы разработки программ. Разбиение задачи на подзадачи.
Знания, умения, навыки из государственного стандарта Знать/понимать основные конструкции языка программирования; свойства алгоритмов и основные алгоритмические конструкции; тезис о полноте формализации понятия алгоритма Уметь строить информационные модели объектов, систем и процессов, используя для этого типовые средства (язык программирования, таблицы, графики, диаграммы, формулы и т.п.) Использовать приобретенные знания и умения в практической деятельности и повседневной жизни для
поиска и отбора информации, в частности, связанной с личными познавательными интересами, самообразованием и профессиональной ориентацией_
Темы курса
1. История языков программирования
2. Язык программирования Python
3. Типы и структуры данных в программировании
4. Введение в объектно-ориентированное программирование
5. Классы и объекты
6. Создание классов и объектов
7. Методы
8. Наследование
9. Множественное наследование
10. Полиморфизм
11. Инкапсуляция
12. Перегрузка операторов
13. Графический интерфейс пользователя (GUI)
14. Библиотека Tkinter
Изучение второго раздела начинается с истории языков программирования. Далее следует блок повторения синтаксиса языка программирования, типов данных, основных конструкций языка программирования. Основой чего служит решения заданий из вариантов ЕГЭ. Для изучения основ объектно-ориентированного программирования (ООП) выбрана методика, по которой сначала вводятся понятия класса и объекта, потом, постепенно, рассматриваются вопросы наследования, полиморфизма и др. При этом далеко не абстрактно, а на конкретных примерах. И только на предпоследнем уроке конкретизируются основные идеи объектно-ориентированного программирования.
Самое интересное, что ООП в языке Python проще в изучении и использовании, чем в других языках программирования, таких как C++ и Java. Будучи языком сценариев с динамической типизацией, Python ликвидирует синтаксическую перегруженность и сложность, свойственные ООП в других языках. Фактически объектно-ориентированное программирование в языке Python сводится к выражению: objectattribute
Классы в языке Python создаются с помощью инструкции class. Основное назначение классов состоит в том, чтобы создавать и манипулировать новыми объектами, а кроме того, они поддерживают механизм наследования. Инструкция class создает объект класса и присваивает ему имя. Так же как и инструкция def, инструкция class является выполняемой инструкцией. Среди методов, особое внимание уделяется методу конструктора класса _init_ - специальный метод, который автоматически при создании объекта создает ему атрибуты. Т.е. вызывать данный метод не нужно, т.к. он сам запускается при вызове класса. В заключительной части раздела идут темы, связанные с использованием наследования, полиморфизма, инкапсуляции и перегрузки операторов.
В виду сложности раздела «Алгоритмизация и объектно-ориентированное программирование» занятия строятся по следующему плану: каждой теме теоретического материала соответствует практическая работа, предназначенная для закрепления полученных теоретических сведений на практике. В практических заданиях по данному разделу, сначала решаются элементарные задачи, требующие не больших временных затрат. Далее предлагаются задания с методическими рекомендациями по разработке индивидуального мини-проекта с целью закрепления полученных знаний, являющихся обязательным минимумом для выполнения каждым учащимся. Кроме того, обязателен раздел с заданиями повышенной сложности.
В состав раздела «Алгоритмизация и объектно-ориентированное программирование» была включена тема «Основы построения графического интерфейса пользователя на основе библиотеки Tkinter». Tkinter входит в стандартный дистрибутив Python, он доступен для многих платформ, включая Windows, Linux, Mac и др. Данная тема формирует у обучающихся базовые понятия построения графического интерфейса пользователя (GUI), а также расширяет знания о программировании. Работа по данной теме заключается в изучении и разборе готовых программ, с последующим внесением некоторых изменений, для закрепления полученных знаний, т. е. несет больше факультативный характер.
Апробация данного курса проходила в 2010-2011 году. Анализ проведенных контрольных и практических работ показал, что 90% учащихся справились с программой курса. А некоторые учащиеся проявили
интерес к данной теме и продолжили самостоятельное изучение языка. Знания и навыки, полученные в процессе обучения по данной методике, по мнению автора, дают прочный фундамент для изучения аналогичных концепций в других языках программирования, рассматриваемых в высших ученых заведениях
Литература
1. Лутц М. Изучаем Python, 3-е издание - Пер. с англ. - СПб.: Символ-Плюс, 2009. - 848 с.
2. Грамаков Д.А. Выбор языков программирования для системы общего и педагогического профессионального образования. // Современные информационные технологии и ИТ-образование. Труды IV Международной научно-практической конференции. М., МГУ. 2009.
3. Warren Sande, Hello World: Computer Programming for Kids and Other Beginners, 2009
4. Fredrik Lundh, An Introduction to Tkinter, 1999
5. http://www.tiobe.com/tiobe_index — TIOBE Programming Community Index