Уведите детей от этих экранов и продолжайте учить их программированию

Когда вы и ваши дети пытаетесь кодировать, вы часто сталкиваетесь с не очень желаемым результатом. Есть сообщения об ошибках, которые помогут решить проблему. Однако иногда сообщение об ошибке не дает достаточного понимания проблемы и, что еще хуже, иногда нет сообщений об ошибках, и все, что у вас есть, - это серия недостатков в вашем выводе. Теперь пора сосредоточиться на «отладке».

Так что же такое отладка?

Отладка - это процесс проверки вашего кода для исправления ошибки в логике, мешающей желаемому результату.

Отладка важна для программирования. Вы написали замечательные строчки кода. Но код не дает желаемого результата. Причина такого нежелательного вывода называется «ошибкой». Таким образом, отладка - это процесс обнаружения и последующего устранения ошибки.

Для этого нам не нужно заново переписывать весь код. Нам просто нужно изменить существующий код, чтобы исправить проблему. Давайте разберемся с этой концепцией на простом примере. Допустим, мы написали код для умножения двух чисел (a, b) и добавления их к третьему числу (c).

a = 2
b = 3
c = 5
answer = a * (b + c)

Использование приведенного выше кода даст ответ = 16. Это неверный результат. Правильный вывод - 11. Для устранения проблемы мы анализируем шаг за шагом и проверяем вывод.

Step 1 = To open the bracket → a * (b +c ) = a* b + a*c  
Step 2 = To put the value of a, b and c → 2*3 + 2*5
Step 3 = using mathematical rule we multiply first → 6 + 10
Step 4 = we add → 16

Для отладки мы делаем шаг 1 и проверяем, имеет ли смысл вопрос. Мы видим, что нужно умножать a только на b, а не умножать a на c. a умножается на c, потому что оно заключено в скобки. Это говорит нам, что мы должны перепроверить положение c - должно ли оно быть в скобках или нет. Исправляем шаг 1 следующим образом

Step 1 (corrected) = a*b + c → (a*b)+c
Re-evaluating other steps. 
Step 2 = (2*3)+5
Step 3 = 6 + 5
Step 4 = 11

В приведенном выше примере мы обнаружили, что «неправильное расположение скобок» приводит к нежелательному результату. Это «неправильное размещение скобок» было ошибкой. Пошаговый процесс оценки, которому мы следовали, и внесенное нами исправление - это процесс отладки.

Пытаясь решить проблему, мы можем добавить, удалить или заменить любую строку кода. Мы должны быть осторожны, чтобы сохранить значимый код при замене неправильного кода или при удалении бесполезного кода. Любой неверный шаг в «отладке» может сделать основную программу бесполезной.

Как исправить то, что не работает?

Давайте вернемся к программированию на миллиметровой бумаге из нашей предыдущей статьи, чтобы лучше понять отладку.



При программировании миллиметровой бумаги цель состояла в том, чтобы перейти от изображения A к изображению B, используя набор из 5 команд, показанных ниже.

R используется для перемещения вправо, L используется для перемещения влево. U используется для движения вверх, а D - для движения вниз. F - это команда заливки, которая заполняет сетку цветом. (Помните, что выход за пределы сетки запрещен).

Для указанной выше проблемы следующая последовательность команд решает первую строку.

Право (R) → Заливка (F) → Право (R) → Право (R) → Заливка (F)

Результат для первой строки ниже.

Теперь давайте рассмотрим более сложный пример для понимания отладки. У нас есть код для создания изображения D из изображения C.

В приведенном выше примере мы увеличили размер сетки, и результат, который мы пытаемся сделать, равен «А» в нашей сетке.

Интересный факт: буква «А» на экране компьютера написана с использованием аналогичной сетки. Есть много маленьких коробок, которые очень закрыты. Для невооруженного глаза такое близкое расстояние придает фигуре плавный вид. Вы можете увеличить экран, чтобы увидеть сетку.

Давайте сначала посмотрим на неправильную последовательность команд. Это набор команд, которые (скажем) ваш ребенок написал для получения желаемого результата. Но вы понимаете, что эта последовательность приводит к нежелательному результату.

Строка 1: R → R → R → F → R → R → R → R → R
Строка 2: D → L → L → F → L → L → F → L → L → L
Строка 3: D → L → L → L → F → L → F → L → F → L → F → L → F → L → L
Строка 4: D → L → F → L → L → L → L → L → L → F → L
Строка 5: D → F → R → R → R → R → R → R → R → R → F

На первый взгляд приведенный выше набор команд выглядит неплохо. Результат, который он дает, сильно отличается от желаемого. См. Изображение ниже.

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

Мы видим, что в строке 3 есть ошибка, приводящая к команде вне сетки. Для робота ничего вне сетки не существует, и, следовательно, он прекратит выполнение, не завершив строки 4 и 5.

Для первых 3 строк кода результат, который мы получим, будет следующим.

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

Мы также видим, что вывод не завершает строку 4 и строку 5. Эту ошибку не очевидно, и она появляется на картинке только после выполнения команд.

Чтобы решить указанную выше проблему, мы начинаем со строки 1. На рисунке B мы определяем размещение заполненного поля в строке 1. Это 4-й прямоугольник после звезды. В нашем коде мы использовали только три команды для сдвига вправо.
«R → R → R → F»

Роботы глупы, несмотря на достижения в области искусственного интеллекта, и им нужно прямо сказать, что делать. Писание каждого шага имеет первостепенное значение. В этом случае отсутствует один шаг перехода вправо. Поэтому, чтобы исправить эту команду, мы добавляем другую команду перед буквой «F». Как показано ниже.

“ R →R→R→R→F ”

Точно так же мы видим, что после заполненного поля есть 4 квадрата. Однако для сдвига вправо мы использовали пять команд. Нам нужно удалить последнюю команду.

R → R → R → R → F → R → R → R → R (→ R для удаления)

Общие команды становятся:

Строка 1: R → R → R → R → F → R → R → R → R

Соответственно, теперь робот изменит размещение заполненного поля и перейдет к строке 2.

Аналогичным образом во второй строке мы видим, что первое заполненное поле находится на 3-й позиции от правого поля сетки. Итак, нам нужно 3 команды «сдвинуть влево». Однако в коде всего 2 команды «двигаться влево».

Строка 2: D → L → L → F

Чтобы исправить это, мы можем вставить еще одну команду «сдвинуть влево».

Строка 2: D → L → L → L → F

Общие команды становятся:

Строка 2: D → L → L → L → F → L → L → F → L → L → L

Выходные данные для строк 1 и 2:

Строка 1: R → R → R → R → F → R → R → R → R → R
Строка 2: D → L → L → L → F → L → L → F → L → L → L

В этом примере мы видим, что легко определить ошибку и исправить ее, используя собственные знания. Опять же, есть много способов подойти к этим проблемам. Более продуктивно побуждать ваших детей подружиться и попытаться решить эти головоломки с друзьями во время игры.

В этом примере мы видим, что легко определить ошибку и исправить ее, используя собственные знания. Опять же, есть много способов подойти к этим проблемам. Более продуктивно побуждать ваших детей подружиться и попытаться решить эти головоломки с друзьями во время игры.

В программировании каждый должен неоднократно выявлять и исправлять ошибки, и чем больше человек практикует искусство отладки, тем легче становится выявить проблему, даже не имея необходимости выполнять команды.

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

В нашей следующей статье мы поговорим о более важных аспектах отладки и программирования без экрана.