Как увлечь детей программированием. Этап 2
Если вы - не программисты, но детей на эту стезю направить хотите, то этот цикл статей - для вас.
В прошлый раз "программировали" на листочке. Сегодня уже используем компьютер.
Цель этапа - научить правильному подходу к программированию:
2) внимательно изучаю набор команд, которые умеет выполнять бездушная машина;
3) пытаюсь описать решение сначала своими словами, потом на языке машины - вот, собственно, программа и готова...
Начинаем выполнять с чадом все задания по порядку. Это точно такое же программирование (набрасывание цепочки команд из числа доступных), только в виде паззла.
Задачи простые, вам точно под силу. Про циклы "повторять" и условия "если" вы уже знаете. Вот для примера одна из задач "довести пешехода до цели", вместе с решением:
Вы, как рассудительный взрослый, без особого труда решите задачу, используя тот подход, что мы упоминали выше. Но ведь у детей свой подход:
Cкорее закрыть окошко со скучными пояснениями, оно ведь закрывает собой интересное игровое поле! А на поле разноцветный паззл, и если его наугад собирать, то может получиться правильный ответ! Ведь домашку же получается решать подбором, вот и тут подберу!..
Вот тут вам, взрослому, придётся проявить терпеливость, мягко но твёрдо уводя чадо от его весёлого "неправильного" подхода к скучному "правильному" подходу. Разберём на примере приведённой на картинке выше задачи:
"Не получается? Отложи-ка мышку, послушай. Просто представь, что ты пролетаешь над этим человечком на вертолёте, всё видишь, и можешь ему в рупор крикнуть, как ему действовать чтобы добраться до цели. Но ты не можешь вести его по шагам, тебе ведь нужно лететь дальше по важным делам. Что ты ему крикнешь? Сверху тебе ясно видно, что дорога и так приведёт его к цели, главное ему не сворачивать в закоулки. То есть, в рупор нужно крикнуть: иди по возможности вперёд, сворачивай только когда прямо нет пути!"...
Опа – так это и есть готовый алгоритм, осталось его запрограммировать исходя из того набора команд, которые доступны.
После выполнения каждого задания, сайт отображает для справки текст набросанной вами программы на языке JavaScript, то есть всё то, что вы напрограммировали, но не в виде детского паззла, а в виде настоящей полноценной программы, написанной текстом. Английским, разумеется. На эти "исходные тексты программы" стоит обратить внимание чада – но не разбирать их детально (это скучно), а просто чтобы перед глазами примелькались куски настоящих программ (а ведь он их сам только что написал!). Ещё нужно обратить внимание, что на паззлинках названия команд расписаны подробно, а на самом деле соответствующие настоящие команды на настоящем языке программирования – это всегда одно английское слово, иногда сцепленное из нескольких слов, без пробелов, например moveForward. Не стоит этого пугаться, набор команд всегда ограничен, значит много английских слов учить не понадобится.
В какой-то момент вы заметите, что чадо шустрее вас расставляет нужные блоки, в этот момент можно пустить его в самостоятельное плавание по этому сайту. Но некоторые не очевидные ребёнку моменты объяснить придётся, упомяну их.
Например, в заданиях "Птица", нужно рассказать, что такое координаты Икс (по горизонтали) и Игрек (по вертикали), и как для птицы при её полете меняются текущие координаты по осям. Вот пример решённого задания из “Птицы”, здесь используется настраиваемая паззлина “если”, нужно нажать на шестерёнку в её углу, откроется мини-конструктор, в котором нужно перетаскиванием набросать паззлину с нужным количеством “иначе если”:
В заданиях "Черепашка" нужно объяснить про “перо”: опускаешь его на бумагу – оно рисует, поднимаешь над бумагой – оно перемещается не оставляя следа.
Вот пример решённого задания, здесь цикл вложен в цикл, чтобы трижды отрисовать одинаковые звезды (каждая из которых состоит из пяти одинаковых движений):
В заданиях "Фильм" есть не очень очевидное анимирование с помощью паззлика "time", придётся как-то объяснить, что этот паззлик можно использовать вместо явных чисел, это тоже по сути число, но оно само по себе шустро меняется от нуля до 100, и если его использовать как координату, возникает движение фигуры. Ещё там небольшая путаница с переводом на русский язык: “высоту” обозвали “шириной”, а “ширину” обозвали “длиной”.
Вот пример решённого задания с размахиванием рук в разном направлении (одна вверх, другая вниз), здесь используется такой финт: если шустро меняющееся от нуля до ста число вычесть из ста, то получим шустро меняющееся от 100 до нуля, то что нужно для движения сверху вниз:
За несколько дней чадо скорее всего дойдёт до последних игр – "Музыка", "Пруд". Там уже начинается скучная сложнота. Её можно (да даже нужно) пропускать, поясню почему.
1) Она скучна. Стоит чаду заскучать, интерес погаснет. А впереди нас ждут вещи поинтереснее!
2) Появляются задания, где программу нужно писать не паззлом, а прямо таки текстом. Но язык JavaScript не самый лучший для начинающих, я бы не советовал начинать с него, можно просто отпугнуть. Если есть интерес – пусть пробует, если нет – пропускайте.
3) Вводятся такие программистские штуки, как например "функция" – но на этом этапе использование функций просто сэкономит кусочки паззла, более ничего не даст. Ребёнок наверняка не станет их использовать, а просто будет выстраивать нужные цепочки команд столько раз, сколько нужно. Это будет вполне в духе детского прямолинейного решения задач, не нужно мешать этому. Все эти функции и прочие фишки потенциальный программист быстро наверстает потом сам, если подсядет на крючок программирования плотно.