"Недавно помогал ребенку подготовиться к контрольной по программированию (школьному предмету; они учат C#). Главной темой были связные списки и работа с ними, что в данном случае было работой с классами типа Node<T>, с методами Get/SetValue(), Get/SetNext(). Я увидел, что с одной стороны ребенок вроде и понимает, что такое связный список, зачем может быть нужен, что с ним делать; но конкретные задачи из старых контрольных, что им выдали, решает с трудом или вообще не. В принципе понимает, что хочет сделать, но в код это переводится с трудом, без уверенности и с постоянными ошибками. Подумав немного, я решил не разбирать пока эти старые контрольные и их решения, а подтянуть основы. Сидя рядом, просил ребенка писать код НА БУМАГЕ, решающий очень простые задачи одну за другой. Немедленно обсуждали написанное, ошибки в нем, исправляли их и шли дальше. Задачи такие (во всех случаях предполагаем переменную list типа Node<int>, указывающую на первый элемент списка, возможно равную null, если список пустой): - проверить, пустой ли список - проверить, есть ли в списке минимум 3 элемента - проверить, есть ли в списке ровно 3 элемента - проверить, верно ли, что второй элемент списока равен 4 (не забывать проверки существования элементов) - если третий элемент списка существует, изменить его значение на 12 - если есть минимум 2 элемента, удалить второй - распечатать все элементы списка - проверить, есть ли в списке элемент со значением 5 - если есть хотя бы один элемент, вставить новый элемент с значением 10 на второе место в списке - удалить все элементы, равные 5, предполагая, что первый не такой - то же самое, но без предположения, что первый не такой - найти все элементы в списке, равные 2, и для каждого такого, если следующий тоже 2, а предыдущий не 2, удалить этот следующий - найти элемент со значением 13, и если после него есть следующий, поменять их местами - найти минимальный элемент - вставить элемент на правильное место в отсортированном списке Мне кажется, это время, проведенное вместе за интенсивной проработкой основ, не было потрачено зря, и помогло укоренить правильные абстракции в голове. После того, как все эти задачи решаются без сложностей, без ошибок и практически без рассуждений, можно переходить к задачам типа ""поменять порядок на обратный"" или ""найти и удалить все дубликаты в списке с помощью двух вложенных циклов"". Не надо с них *начинать*, если основы не делаются быстро, правильно и без сомнений. А это произойдет, когда ментальные образы станут ясными и четкими и будут правильно отражать происходящее на удобном уровне абстракции. Начинающий программист часто не понимает, насколько важны эти ясность и четкость. В таком случае задача наставника - понять это и показать на живых примерах, как и почему они важны."
"Недавно помогал ребенку подготовиться к контрольной по программированию…
Из этого канала
- #2399Моя мечта : чтоб у каждого учащегося и по каждому предмету была такая поддержка…
Моя мечта : чтоб у каждого учащегося и по каждому предмету была такая поддержка (не обязательно от родителей).
- #2400😊Все прутся от OpenAI, а от каких стартапов прется фонд OpenAI? Собственно, все…
😊Все прутся от OpenAI, а от каких стартапов прется фонд OpenAI? Собственно, все прутся от OpenAI из-за ее AI-продуктов. Тут сложно отрицать.
- #2401Новость 1: GPT-4.5 запустили для Plus-подписчиков, однако доступ появится не…
Новость 1: GPT-4.5 запустили для Plus-подписчиков, однако доступ появится не моментально, а в течение 1-3 дней.
- #2397Через 3 часа намечается восьмой тестовый пуск системы Starship. Корабль снова…
Через 3 часа намечается восьмой тестовый пуск системы Starship. Корабль снова второй версии, и надеемся, что с ним всё будет в порядке — прошлый-то взорвался,…
- #2396В Anthropic инвестировали ещё 3.5 миллиарда После раунда финансирования от…
В Anthropic инвестировали ещё 3.5 миллиарда После раунда финансирования от группы инвесторов, компания теперь оценивается в 61.5 миллиард долларов.