Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Повторение курса алгоритмики: вести с полей

Дитятко за истёкший период обильно протекало носом, поэтому занятия КуМиром были отнюдь не каждый день. И, конечно, повторить весь курс Кириенко за пару недель у меня не получилось.

На скорости примерно в 40 ударов в минуту была пересадка с VerseQ на Клавогонки.ру (http://ailev.livejournal.com/1026626.html) -- и жизнь после этого стала легче. Во-первых, ошибки теперь нужно исправлять по-настоящему, через backspace. Во-вторых, в разы стало проще с мотивацией: индикаторы затраты времени и прогресса намного понятней, чем в VerseQ, а также есть полное понимание, что он не один страдает-тренируется, а среди большого числа таких же страждущих. Тренировка пошла на текстах "обычный", норма тренировки 10 заездов (один заезд сейчас идёт чуть меньше четырех минут, а начинали с пяти минут), в награду за выполненную норму полагается мультфильм по выбору дитенка.

На сегодня рекорд у него 71 удар в минуту, скорость ниже 60 не опускается пару дней, и даже уже были восторги по поводу первой победы в гонках (попался какой-то страдалец, тренировавшийся на скорости чуть больше полусотни ударов в минуту). Главный итог: "написать что-то" перестало восприниматься дитяткой как тяжёлый труд. Жена тут же воспользовалась этим, и заставила его нацокать в Ворде какое-то длинное сочинение. Результат: все проблемы по факту ушли во "что писать", а не в собственно процесс письма длинного текста. То же самое происходит с программами на Ершоле: их запись больше не проблема, проблема только в понимании того, что именно нужно записывать.

По факту, повторение закончилось как раз на переходе к клавогонкам. Похоже, что из всех навыков прошлого года оставалось только понимание, что это слепой десятипальцевый метод, и поэтому каждый палец должен нажимать на свою клавишу, и смотреть нужно не на клавиши, а на экран. Ну, и было очень немного времени на запоминание расположения всех букв: это расположение быстро вспомнилось, только скорость была очень маленькой, с постоянными воплями "опять мой палец не туда попал, он меня не слушается". То есть ключевым оказалось не запомнить клавиши, а набрать скорость -- чисто мышечная координация точно двигать каждым пальчиком отдельно.

На скорости 100 я сделаю перерыв, но затем будет повтор цикла с английским алфавитом. Ибо сегодня в задаче потребовалось поделить два числа друг на друга нацело, что в Ершоле делается функцией div. Набор на клавиатуре этого div превратился в приключение с поиском клавиш. Так жить в двадцать первом веке и в четвертом классе нельзя.

Из задач прошли 12 уроков, при этом последние три урока я делаю скип пары последних задач (которые повышенной трудности). Мы их или пройдём позже, или двинем вперёд без них -- моя задача сейчас вспомнить Ершол, не более. Двенадцатый урок -- это передача параметров во вспомогательный алгоритм. Всего уроков в этом курсе 16.

Чётко проявляющаяся ошибка -- это мышление "движениями робота", а не связанной с "обстановкой" математической моделью. Собственно, это не ошибка. Это как раз то, чему как-то нужно научить. Попробую пояснить примером.

Предположим, нам нужно измерить расстояние до какой-то закрашенной клетки справа, и затем продвинуться вправо на удвоенное расстояние. Это очень просто делается рекурсией, на выходе из рекурсии пишется "вправо вправо" -- этого достаточно. Рекурсия -- это урок 10. В уроке 11 нужно это сделать, используя счётчик. Для этого в счётчик М будет подсчитано значение передвижений циклом "пока не клетка закрашена", после чего... будет сделано два подряд цикла "М раз вправо". В ответ на просьбу написать этот фрагмент короче -- остаётся один цикл "М раз вправо вправо". Конструкция "2*М раз вправо" начинает как-то воспроизводиться только после нескольких тыканий носом в аналогичную ситуацию в других задачах, выражение-формула на месте какой-то цифры в программе оказывается очень непривычна.

То же самое происходит в случае создания вспомогательных алгоритмов с параметрами: повторяющийся кусок кода видится исключительно в терминах передвижения робота, поэтому появление в параметрах или циклах каких-нибудь сумм или разностей для вычисления нужного пути игнорируется, в это приходится тыкать носом -- действительно, какие могут быть сложения или вычитания, если в голове не "отрезок пути длиной 3", а "цикл 3 раза вправо"? То, что путь робота представляет собой какую-то геометрическую фигуру (отрезок, квадрат, прямоугольник) проходит мимо сознания дитёнки. Курсы геометрии и математики с курсом алгоритмики не склеиваются -- это для дитенки совсем разные миры.

Чтобы сохранять спокойствие в данном случае, всегда нужно помнить две байки про яблоки:
-- Александр Звонкин, Вадим Левин. Домашняя школа для дошкольников -- http://orel.rsl.ru/vers_may2000/books/html/zw_fr/fr1.htm (эти ребята, вроде, понимают про образование маленьких: "Давайте встанем на место ребенка и попробуем сами учиться арифметике... но только по-японски! Итак, вот вам первые десять чисел: йти, ни, сан, си, го, року, сити, хати, ку, дзю. Интересно, сколько времени вам потребуется, чтобы хотя бы только выучить эту последовательность наизусть? Когда это наконец удастся, попробуйте считать в обратном направлении, от дзю до ити. Если же и это удается, давайте начнем вычислять. Отвечайте, желательно без запинки и по возможности не переводя, даже в уме, на русский язык: сколько будет к року прибавить сан? А от сити отнять го? А хати поделить на си? А теперь давайте решим задачу: мама купила на базаре ку яблок и дала по ни яблок каждому из си детей; сколько яблок у нее осталось? (Все ответы тоже следует давать по-японски.) Если после месяца активных тренировок вы освоите всю эту нелегкую науку и научитесь беглому счету в пределах дзю, вас можно поздравить: у вас превосходная механическая память"). -- это я писал в http://ailev.livejournal.com/470248.html
-- отождествление какой-то теории и объектов практической ситуации -- "яблок из задачи с яблоками из жизни".


Формулы и шаги (а хоть и в цикле с заданным числом этих шагов) робота, выражения и конструкты структурного программирования никак не замешиваются в в одно целостное размышление -- несмотря на то, что все эти задачи уже решались, и даже чуть меньше года назад. Тем более будет важен курс робототехники: там как раз и будет тренироваться перевод движения робота в численную модель, а затем программирование этой численной модели.

В понедельник должен быть уже готов управляемый из КуМира робот Лего (собственно, он уже и сейчас готов, просто доотлаживается и пакетируется -- это происходит в Пущино). Так что повторение с нарисованным роботом я планирую закончить на следующей неделе, дальше будет робототехника с роботом Лего.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 9 comments