Мой способ знакомства учеников младших классов с Python
В наше время большинство детей знакомится с миром программирования через создание проектов на платформе scratch.mit.edu Создание проектов происходит путем соединения разноцветных блоков без ввода кода с клавиатуры (вводим только значения переменных).
Однако, дети взрослеют, им становится тесно в мире Scratch, и в этот момент им можно предложить несколько путей развития.
Некоторые, как мой сын Артём, вдоволь поработав в графическом редакторе Scratch выбирают кружок изобразительного искусства.
Другие ребята — фанаты 2D игр, продолжают делать более профессиональные игры на платформе Construct.
Ну, а фанатам программирования можно посоветовать Python, ведь это один из самых простых языков для изучения. Но как же быть, ведь ученики начальных классов совершенно не знакомы с клавиатурой?
Вот пример простейшего проекта на Scratch в котором ребенок вводит с клавиатуры только 2 числа.
Во «взрослых» языках программирования приходится вводить гораздо больше текста с клавиатуры, но есть способ упростить детям жизнь при переходе от Scratch к Python.
Россия, IT, Телеком
5 807 вакансий «Python»
262 вакансии «Pascal»
44 вакансий «VB.NET»
И под Pascal на hh.ru подразумевается Delphi, а не PascalABC, используемый в школах.
(На всякий случай вот фанатская подборка литературы по PascalABC для расширения кругозора pascalabc.net/rubantsevbooks)
Пару лет назад я решил познакомить своих учеников с Python и начал искать литературу по этой теме. Книг по Питону для детей оказалось совсем немного, и ни одна из них меня полностью не удовлетворила — пришлось снова, как и истории про Scratch habr.com/ru/post/234823, изобретать все самому.
Что же не так в этих книгах? Общая проблема — там много кода. И если для учеников старших классов это не критично, они за 20 минут смогут вколотить программу на 30–40 строк, то для учеников начальной школы это огромная проблема.
Также, сами проекты, которые предлагаются в книгах, по моему мнению, не очень подходят для младших классов.
Небольшой обзор литературы с моим личным рейтингом.
Python for Kids archive.org/details/PythonForKids/mode/2up
Вот отзыв об этой книге от vectorplus из Канады.
Книга «Написана легким языком, с юмором, детям нравится. У неё есть недостаток, свойственный многим книгам по программированию. Как в известной шутке — как нарисовать сову. Овал — круг — сова. От простых понятий слишком резкий переход к достаточно сложным концепциям.» [Подробности в статье ](https://habr.com/ru/post/485424/)
Ну и список проектов: сначала проекты с черепашкой, которые подходят для начальной школы, а потом 20 страниц делаем игру теннис, и потом 60 страниц делаем игру про Стикмана (код игры на 6 страниц), а это уже для старшеклассников.
2 место
Python для детей Автор: Ханс-Георг Шуман
www.litres.ru/hans-georg-shuman/python-dlya-detey-48411263
Здесь больше коротких проектов, но в конце также мощная игра про насекомых на 40 страниц. Малыши осилят только первую часть книги.
1 место
Вордерман, Вудкок, Макаманус: Программирование для детей. Иллюстрированное руководство по языкам Scratch и Python www.labirint.ru/books/481230
В этой книге есть и про создание проектов на Scratch (всего 3 проекта) и про Python (4 проекта). Проектов немного, но они хорошо пошагово расписаны с мельчайшими подробностями, но несмотря на это книга не поможет в проведении занятий на кружке. Но это хороший самоучитель для детей 10–12 лет, которые занимаются самостоятельно.
Не обнаружив на просторах интернета подходящего учебника я придумал собственный способ знакомства детей с Python, и помогла мне в этом платформа trinket.io.
На этой платформе есть возможность работать онлайн со следующими языками программирования:
- Блочный язык Blockly
- HTML
- GlowScript
- R
- Java
- и конечно Python
причем в платной версии ($3 в месяц) можно использовать Pygame для создания игр!
А главным открытием для меня стало то, что блочный тринкет, в три клика превращается в код на Python! Первый клик — просмотр кода.
Ещё пара кликов — преобразование блочного тринкета в тринкет на Python.
Готово!
Ученик получает программу на Python, которую создал без долгого мучительного поиска символов на клавиатуре. Теперь учитель может провести аналогии с блочным языком, рассказать о синтаксисе и дать задание изменить координаты, чтобы квадратик превратился в прямоугольник.
Также теперь ребенок может «копипастить» чтобы собрать более сложный проект, например как этот с рисованием картинки.
Вот так и появился мой курс по Python для учеников начальной школы в котором они знакомятся с этим языком программирования. Сложные проекты не создаем, работаем в рамках 45 минутного урока. По-новому смотрим на циклы и условия, знакомые по программированию на Scratch, разбираемся с числовыми и текстовыми переменными, о которых раньше вообще не задумывались. Знакомимся со сложными типами данных, учимся работать со срезами и различными методами. Чтобы детям было интересно, кроме узоров с черепашкой создаем картинки из символов ACSII, рисуем смайлики Каомодзи и создаем картинки из символов юникода.
Котик со списком.
Гусеница с двумя списками.
Картинка из символов юникода со словарем.
Работа с объектами.
Ну и конечно моя любимая игра «Путаница» — простая, но очень веселая!
Платформа trinket.io — отличный помощник в деле знакомства школьников младших классов с языком Python. Но не так давно я обнаружил еще одну шикарную платформу, которая позволяет программировать на Python в мире Minecraft. Это платформа progkids.com созданная отечественными разработчиками. Платформа платная, но недавно авторы платформы разместили на Facebook промокод FREESELFCOURSE который дает две недели доступа бесплатно.
Под эту платформу я тоже разработал кучу уроков codim.online/pythonvm которые позволяют освоить более сложные темы, такие как вложенные циклы и многомерные массивы.
from mc import world, blocks, player
for i in range(5):
for j in range(5):
for k in range(5):
world.buildHome(5 + (j * 5), 0 + (k * 5), 0 + (i * 10), 5, 5, 5, blocks.WOOD)
Рисуем смайлики с помощью массивов.
from mc import *
heart = [ [[ 0, 0, 152, 0, 0],
[ 0, 152, 152, 152, 0],
[ 152, 152, 152, 152, 152],
[ 152, 152, 152, 152, 152],
[ 0, 152, 0, 152, 0]] ]
scull = [[ [ 0, 173, 173, 173, 0],
[ 0, 173, 173, 173, 0],
[ 173, 173, 173, 173, 173],
[ 173, 0, 173, 0, 173],
[ 0, 173, 173, 173, 0]] ]
world.setBlocks(0, 3, 0, sad)
world.setBlocks(0, 3, 7, heart)
world.setBlocks(0, 3, 14, scull)
world.setBlocks(0, 3, -7, butterfly)
Платформа имеет кучу встроенных функций, облегчающих создание построек, позволяет спавнить существ, управлять дронами, строить города, ~~грабить корованы~~, копать метро, строить тоннели и бункеры, обкладывать все динамитом и… и делать еще много интересного!
Также можно создавать анимированные постройки, например часы.
Покажите эти платформы детям, я уверен, они смогут сделать много интересных проектов на радость учителям и родителям.
И в честь дня весеннего равноденствия и наступления астрономического лета всем читателям в подарок первые 8 уроков курса знакомства с Python по промокоду PYTHON2020.