Структура, содержание и методические подходы к преподаванию языка программирования Python в школе

Структура, содержание и методические подходы к преподаванию языка программирования 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 класс).

«Алгоритмы и исполнители»

Таблица 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». Аргументы функции задаются в скобках после названия функции. Можно задавать необязательные аргументы, присваивая им значение по умолчанию.

Модуль «Алгоритмизация и объектно-ориентированное программирование»

Таблица 2. Таблица соответствия учебного материала государственному стандарту по информатике и ИКТ

Алгоритмизация и объектно-ориентированное программирование 10-11 класс

Разделы стандарта

Логика и алгоритмы

Цепочки (конечные последовательности), деревья, списки, графы, матрицы (массивы), псевдослучайные последовательности. Индуктивное определение объектов. Вычислимые функции, полнота формализации понятия вычислимости, универсальная вычислимая функция. Формализация понятия алгоритма. Построение алгоритмов и практические вычисления. Язык программирования. Типы данных. Основные конструкции языка программирования. Система программирования. Основные этапы разработки программ. Разбиение задачи на подзадачи.

Знания, умения, навыки из государственного стандарта Знать/понимать основные конструкции языка программирования; свойства алгоритмов и основные алгоритмические конструкции; тезис о полноте формализации понятия алгоритма Уметь строить информационные модели объектов, систем и процессов, используя для этого типовые средства (язык программирования, таблицы, графики, диаграммы, формулы и т.п.) Использовать приобретенные знания и умения в практической деятельности и повседневной жизни для

поиска и отбора информации, в частности, связанной с личными познавательными интересами, самообразованием и профессиональной ориентацией_

Темы курса

1. История языков программирования

2. Язык программирования Python

3. Типы и структуры данных в программировании

4. Введение в объектно-ориентированное программирование

5. Классы и объекты

6. Создание классов и объектов

7. Методы

8. Наследование

9. Множественное наследование

10. Полиморфизм

11. Инкапсуляция

12. Перегрузка операторов

13. Графический интерфейс пользователя

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