Найти тему

Решите с ребёнком задачку про робота, чтобы понять его шансы стать программистом

Оглавление

Чаще всего детей учат не программировать, а «программировать». Это означает, что им предлагают готовые инструменты для создания игр и анимации. А когда они начинают всерьез знакомиться программированием и искусственным интеллектом, то оказывается, что в основе лежит математика. «Да ладно?!» - читается у многих во взгляде. «Не верим! Всё должно быть просто и весело! А математика это сложно».

Или нет? Математика для вас это про красоту отражения мира в математических объектах и формулах или про скучный школьный предмет? Решим задачку и расставим всё на свои места.

Эта одна из задач курса «Python для искусственного интеллекта» нашей с мужем семейной IT-школы. Курс рассчитан на школьников 5-8 классов.

Задачка. Робот живет в виртуальном мире. В этом мире есть поле с препятствиями. Робот умеет перемещаться по полю, обходя препятствия. Представьте, что робот попросил уменьшить размер его поля. Помогите ему отрезать от поля последний ряд клеток.
Вам нужно написать кусочек кода, изменяющий размер поля. Ваша программа должна состоять из вашей собственной функции.

Робот может перемещаться по свободным (белым) клеткам поля
Робот может перемещаться по свободным (белым) клеткам поля

«Ребята, - говорю я обычно ученикам. - Вы ещё не умеете рисовать поле и робота, пользоваться графическими библиотеками Python, но чтобы решить нашу задачу нам это не требуется. Зато мы можем делать более глубокие вещи! Давайте поймем, как наши знания о том, как устроено поле с препятствиями мы можем записать математически».

Смотрите, на поле есть клеточки. Они могут быть заняты или свободны. Обозначим свободную клетку 0, а занятую 1. На поле 25 клеток, по пять клеток в каждом ряду.

Поле можно заменить на матрицу чисел:

Ура! Появились нолики и единички. Как же без них в программировании?😉
Ура! Появились нолики и единички. Как же без них в программировании?😉

Нолики - это свободные клетки, единички - препятствия. Всего в матрице столько же чисел, сколько клеток на поле.

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

[[0,1,0,0,0],

[0,1,1,0,1],

[0,0,0,0,0],

[0,1,0,1,1],

[0,1,0,0,0]]

будет обозначать нашу матрицу чисел. Скобочки и запятые имеют значение. А вот писать строчки друг под другом необязательно. Можно в одну строчку: [[0,1,0,0,0], [0,1,1,0,1], [0,0,0,0,0], [0,1,0,1,1], [0,1,0,0,0]].

Игровое поле с препятствиями заменили на объект в Python: [[0,1,0,0,0], [0,1,1,0,1], [0,0,0,0,0], [0,1,0,1,1], [0,1,0,0,0]].

Это у нас список списков на самом деле. Как пакет с пакетами. Посмотрите внимательно на квадратные скобочки. По какой логике они расставлены?

Дальше я должна вам рассказать, что можно со списками делать. Например, можно брать не всю матрицу, а её часть.

Положим в переменную field нашу матрицу:

*field - в переводе с анг. поле

field = [[0,1,0,0,0], [0,1,1,0,1], [0,0,0,0,0], [0,1,0,1,1], [0,1,0,0,0]]

А потом возьмём так называемый срез списка:

field[:-1]

матрица станет такой:

[[0,1,0,0,0], [0,1,1,0,1], [0,0,0,0,0], [0,1,0,1,1]]

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

Решением задачи будет такая функция:

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

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

Итак, если ребёнок готов переходить от своих фантазий о мире роботов и других героев к их математическим интерпретациям и инструментам языка программирования, то он готов изучать программирование.

Если ему пока сложно это делать, то стоит подождать годик-другой. Абстрактное мышление у детей развивается постепенно и у каждого в своём темпе.

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

Поставьте 👍