Теория и методика обучения и воспитания (по областям и уровням образования) | Мир педагогики и психологии №12 (41) Декабрь 2019

УДК 37.011.33

Дата публикации 30.12.2019

Задачи-ловушки на уроках информатики

Лялин Андрей Васильевич
преподаватель кафедры прикладной математики и информатики, Вятский государственный университет, РФ, г.Киров, lialinandrei@rambler.ru

Аннотация: Задачи-ловушки – это задачи, рассчитанные на неверное или очень неэффективное первое решение. В статье обоснована необходимость таких задач в обучении любому предмету, так как они учат критичности и внимательности. Далее проанализированы школьные учебники информатики и сделан вывод о том, что большинство задач в них имеют однообразные и искусственные формулировки, а задач-ловушек нет совсем. Наконец, приведены примеры задач-ловушек по информатике. Этим показано, что содержание информатики достаточно богато и позволяет формулировать такие задачи.
Ключевые слова: школьная информатика, задачи-ловушки, метод научного познания, развитие интеллекта

Trap Problems at the Computer Science Lessons

Lialin Andrei Vasilevich
Lecturer of Applied Mathematics and Computer Science Department, Vyatka State University, Russia, Kirov

Abstract: Trap problems are problems designed for the wrong or very inefficient first solution. The article substantiates the need for such problems in teaching any subject, since it teaches criticality and attentiveness. Next, school textbooks of computer science are analyzed and the conclusion is made that most of problems in them have monotonous and artificial formulations, and there are no trap problems at all. Finally, examples of computer science trap problems are given. It shows that the content of computer science is quite rich and allows us to formulate such problems,
Keywords: school informatics, trap problems, scientific method, development of intelligence

Определимся и назовём задачей-ловушкой задачу, рассчитанную на  неверное или очень неэффективное первое решение.

Чем больше учеников не заметило верное или эффективное решение и пошло не в том направлении, тем полезнее задача-ловушка.

Такие задачи необходимы в обучении любому предмету. Они учат сомнению и критичности, предупреждают поспешность и невнимательность.

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

Иллюстрация 1. Какой из двух горизонтальных отрезков длиннее (рис.1)? Почти все отвечают, что нижний. Это просто видно. На самом деле отрезки равны. В чём легко убедиться, если усомниться и измерить их линейкой или попытаться мысленно совместить отдельно их левые концы и отдельно правые. Иллюзия рассеивается.

Рисунок 1. Иллюзия Мюллера-Лайера

Иллюстрация 2. Психолог Даниель Канеман предлагал студентам различных университетов следующую задачу [1, с.95].

«Линде 31 год, она не замужем, откровенная и очень умная. В университете изучала философию. Будучи студенткой, она уделяла много внимания вопросам дискриминации и социальной справедливости, а также участвовала в демонстрациях против использования ядерного оружия. Какой из вариантов вероятнее?

1. Линда – кассир.

2. Линда – кассир в банке и активистка феминистского движения».

Многие студенты, от 85 до 90%, вопреки логике выбирали неверный второй вариант. От университета к университету высокий процент повторялся.

Иллюстрация 3. Зрительная иллюзия с отрезками и задача о Линде могут показаться игрушечными и «безобидными». Конечно, не все задачи такие. Иногда от решения некоторых зависят даже жизни людей [2, с.14].

Вторая мировая война. Американцы ведут воздушные бои против Германии. Противник сбивает всё больше и больше самолётов. Броня должна уменьшить потери, но какие места корпуса защитить в первую очередь?

В поисках ответа военные для всех вернувшихся самолётов рисуют схемы пробоин, накладывают их друг на друга и получают общую схему (рис.2).

Рисунок 2. Общая схема повреждений самолёта

 По ней определяют наиболее «дырявые» места и решают укрепить именно их. Математика Абрахама Вальда просят лишь посчитать толщину брони. Тот понимает, самые уязвимые места не там, где много пулевых отверстий, а там, где мало! Самолёты вернулись только потому, что эти места не были прострелены. Их и нужно бронировать прежде всего.

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

Итак, задачи-ловушки необходимы в обучении. Есть ли они в школьных учебниках по информатике? Возьмём один из последних, под авторством К.Ю. Полякова и Е.А. Еремина, и процитируем несколько задач оттуда на разные темы [3, с.124, с.132, с.141, с.170, с.204].

1. «Напишите программу, которая вводит радиус круга и вычисляет площадь этого круга и длину окружности».

2. «Напишите программу, которая выбирает максимальное и минимальное из пяти введённых чисел».

3. «Напишите программу, которая вводит натуральные числа a и b и выводит сумму квадратов натуральных чисел в диапазоне от a до b».

4. «Заполните массив случайными числами в диапазоне 20..100 и посчитайте отдельно число элементов с чётными и нечётными значениями».

5. «Напишите программу, которая во введённой символьной строке заменяет все буквы «а» на буквы «б» и наоборот, заглавные – на заглавные, строчные – на строчные».

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

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

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

Приведём примеры того, как могли бы выглядеть задачи-ловушки по информатике.

1. Корабельная лестница. На причале стоит корабль. С него на воду спущена стальная лестница. Расстояние между её ступеньками одно и то же. Самая нижняя ступенька касается воды. Океан спокоен, но начинается прилив. Прилив поднимает воду с постоянной скоростью.

Пользователь вводит скорость подъёма воды, расстояние между ступеньками и номер ступеньки. Программа определяет, через сколько секунд вода покроет эту ступеньку. Если результат будет не целым, то округляет его.

Решение. Большинство действительно пишут программу, «не видя леса за деревьями». Делят расстояние на скорость. Находят время. Выражают его в секундах и округляют. Хотя вода никогда не покроет нужную ступеньку. Корабль поднимается вместе с водой. Школьная физика и простой здравый смысл. В программе нет необходимости.

2. Книжный червь. На полке в библиотеке рядом стоят n книг. Толщина каждой, без учёта обложек, равна a мм, а толщина одной обложки – b мм. Червь перпендикулярно страницам прогрыз от первой страницы первой книги до последней страницы последней книги.

Пользователь вводит n, а и b. Программа вычисляет, сколько миллиметров червь прогрыз.

Решение.  Многие считают миллиметры по такой формуле. n∙a+2∙b∙(n–1). Однако первую книгу червь не трогал, а только её лицевую обложку. Не трогал он и последнюю книгу, а только её заднюю обложку. Верная формула – это (n–2)∙a+2∙b∙(n–1).

3. Хитрый продавец. У продавца киоска открытки хранятся пачками. По сто штук в каждой. Одну открытку он отсчитывает за секунду и одну пачку – за секунду.

Пользователь вводит количество открыток. Программа выводит, за какое минимальное время продавец их сможет отсчитать. 

Решение. Например, открыток 370. Берём четыре пачки и из последней набираем 70 открыток. Тратим на всё 74 секунды. Но можно успеть и за 34 секунды, если последней пачке отсчитать не 70 открыток, а 30, эти 30 оставить, а 70 забрать. Редко кто не ошибается.

4. Цепь. Кузнецу принесли n обрывков цепи, по k колец в каждом обрывке, и заказали соединить их в одну замкнутую цепь.

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

Решение. Допустим, есть четыре обрывка по три кольца. Ошибаются буквально все, говоря, что нужно будет расковать четыре кольца, не меньше. А меньше можно (рис.3).

Рисунок 3 . Решение задачи о цепи

5. Турнир. На турнир по бильярду собралось n человек. Они разбиваются на пары и играют друг с другом в этих парах. Проигравшие покидают турнир. Победители остаются и снова играют в парах. И так далее, пока не останется один победитель. Если кому-то не находится пары, то он автоматически переходит на следующий этап.

Пользователь вводит n. Программа определяет, сколько игр будет в турнире?

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

Но если подумать, то считать не придётся. Вначале участников n. Чтобы в конце остался один, нужно исключить (n-1). Каждая игра всегда исключает одного участника и других способов исключения не бывает, поэтому число игр и число исключений равны. Ответ – в турнире будет n-1 игра.

«Лень – двигатель прогресса. Хорошие программисты всегда немножко ленивы. Они сидят и ждут озарения, вместо того, чтобы воплощать в жизнь первую пришедшую им в голову идею» – писал Джон Бентли, один из специалистов по компьютерным наукам [4, с.36].

6. Палочки. Конструктор состоит из палочек различной длины. В инструкции  к нему сказано, что из любых трёх можно составить треугольник.

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

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

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

Примеры задач-ловушек многочисленны и их включение в школьные учебники по информатики только улучшит последние.

 Даже историю о самолётах и броне несложно оформить как задачу по программированию, осмысленную и естественную. Школьники, конечно, повторят ошибку военных, а урок из «учебного часа, посвящённому отдельному предмету» превратится в «нечто поучительное, то, из чего можно сделать вывод для будущего» [5].


Список литературы

1. Канеман Д. Думай медленно… решай быстро. – М.: АСТ, 2014. – 653 с.
2. Элленберг Д. Как не ошибаться. Сила математического мышления – М.: Манн, Иванов, Фербер, 2017. – 576 с.
3. Поляков К. Ю., Еремин Е.А. Информатика. 10 класс. Часть 2. – М.: Бином. Лаборатория знаний, 2015. – 304 c.
4. Бентли Дж. Жемчужины программирования. – СПб.: Питер, 2002. – 272 c.
5. Ожегов С. И., Шведова Н. Ю. Толковый словарь русского языка. – М.: Азбуковник, 2000.– 940 с.

Расскажите о нас своим друзьям: