Питер Макоуэн - Вычислительное мышление: Метод решения сложных задач
- Название:Вычислительное мышление: Метод решения сложных задач
- Автор:
- Жанр:
- Издательство:Альпина Паблишер
- Год:2017
- Город:Москва
- ISBN:978-5-9614-5020-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Питер Макоуэн - Вычислительное мышление: Метод решения сложных задач краткое содержание
Если вы хотите узнать больше о вычислительном мышлении, ищете новые способы стать эффективнее и любите математические игры и головоломки, эта книга для вас. В то же время вы научитесь навыкам, необходимым для программирования и создания новых технологий. Даже если вы не планируете писать программы и изобретать, вы сможете применять навыки вычислительного мышления, чтобы справиться с любыми жизненными проблемами.
Вычислительное мышление: Метод решения сложных задач - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Глава 3
Магия и алгоритмы
Искусному фокуснику, который сам придумывает магические трюки, и опытному программисту нужны одни и те же навыки, а именно вычислительное мышление. Фокусы — это алгоритмы, и компьютерные программы — тоже. Оказывается, чтобы осуществить поиск данных, первые компьютеры воспроизводили фокус под названием «Сон об австралийском маге». Программисты, несомненно, настоящие волшебники!
«Сон об австралийском маге»
В фокусе под названием «Сон об австралийском маге» иллюзионист предсказывает, какая карта останется в конце, хотя точно это не может быть известно заранее. В основе фокуса — информатика. Показывают его следующим образом.
Перед началом представления возьмите обычную перетасованную колоду карт рубашкой вверх и поместите восьмерку червей 16-й сверху. На 32-е место поместите какую-нибудь запоминающуюся карту, например туза червей. Положите колоду на стол рубашкой вверх. Теперь возьмите восьмерку червей из другой колоды (для дополнительного эффекта лучше использовать карты большого размера) и поместите ее в запечатанный конверт. Положите конверт под стол так, чтобы он оставался на виду с начала и до конца фокуса.
Перейдем к тому, что видит аудитория. Вызовите добровольца. Распределите карты в одну линию на столе лицом вверх, чтобы зрители видели, что это обычная перетасованная колода. Объявите, что сначала вам нужно поделить колоду примерно пополам. Попросите добровольца выбрать любую карту примерно посередине и покажите руками, что вы имеете в виду. Вы обязательно должны сделать так, чтобы ваши руки оказались над 16-й и 32-й картами. Таким образом вы ненавязчиво ограничиваете выбор до какого-то варианта между ними. Сбросьте карты справа от той, которую укажет доброволец (нижнюю часть колоды), и попросите его подтвердить, что это был свободный выбор. Возьмите оставшиеся карты и, держа их рубашкой вниз, объясните, что ночью перед выступлением вам всегда снятся странные сны, в которых маги учат вас новым фокусам. Накануне во сне к вам явился австралийский маг и научил методу «шиворот-навыворот», позволяющему угадывать карту, о которой никак нельзя было знать заранее.
Теперь сдавайте карты, по очереди раскладывая их в две кучки. Делая это, говорите «шиворот», когда кладете карты рубашкой вверх в первую стопку, и «навыворот», когда кладете карты лицом вверх во вторую стопку. Как только все карты будут выложены, сбросьте «шиворот» и отметьте, что вы всегда сбрасываете эту стопку. Возьмите стопку «навыворот», поверните ее рубашкой вверх и повторяйте процесс, каждый раз сбрасывая «шиворот». Продолжайте, пока у вас не останется одна карта из стопки «навыворот», лежащая лицом вверх. Это будет восьмерка червей. Скажите зрителям, что это и есть искомая карта. Попросите добровольца подтвердить, что он не знал заранее, какая карта останется в конце, а также показать и назвать полученную карту. Также попросите его подтвердить, что он разделил колоду исключительно по своему усмотрению. Переверните первые несколько карт в сброшенной стопке и скажите: «Если бы вы сдвинулись даже на одну карту, результат был бы другой».
Теперь укажите вот на какую странную вещь: в вашем сне австралийский маг сказал, что нужно заранее положить в конверт одну конкретную карту. Попросите добровольца посмотреть под столом и достать из конверта карту, предсказанную австралийским магом в вашем сне. Это тоже восьмерка червей!
Поблагодарите добровольца и попросите аудиторию поаплодировать ему.
Хитрые алгоритмы
Какое отношение фокус имеет к информатике? Здесь мы имеем так называемый самовоспроизводящийся фокус— именно это в информатике называют алгоритмом.Под алгоритмом подразумевается серия инструкций, которая всегда приводит к конкретному желаемому эффекту, если следовать им в заданном порядке. В данном случае — магический эффект: у вас остается именно предсказанная карта. Компьютерные программы — всего лишь алгоритмы, написанные на языке, который скорее поймет компьютер, чем фокусник. С их помощью программист добивается, чтобы программа выполняла задуманные им действия.
Алгоритм, лежащий в основе «Сна об австралийском маге», показан на рис. 5.
Этот конкретный алгоритм содержит не только шаги, которые надо выполнять последовательно. В нем есть циклы, например «повторите 4 раза». Цикл показывает, что некоторые инструкции надо повторить. Он позволяет не писать одно и то же много раз. Именно такие инструкции программисты используют в компьютерных программах, чтобы компьютер повторил какие-то указания. Есть и второй цикл: «Повторите, пока не останется карт». Этот цикл воспроизводится 4 раза, как указано в первом цикле. Каждый раз вы проходите через всю колоду, оставляя и сбрасывая карты, пока не останется ни одной.

Придумываем фокусы
Чтобы придумать новый трюк, фокусник должен использовать тот же тип мышления, что и ученый-информатик, — а именно вычислительное мышление. Карточный фокус подразумевает вычисления, только они проводятся с помощью колоды карт вместо компьютера. Чтобы изобрести новый фокус, необходимо алгоритмическое мышление. Фокусник должен продумать серию шагов, которые можно повторить и обязательнополучить магический эффект. Ему абсолютно необходимо, чтобы фокус получался всегда. Он не хочет глупо выглядеть на сцене, и поэтому нужно продумать все до мельчайших деталей. Необходимо удостовериться, что шаги должны делаться именно в указанной последовательности. Как и в программировании, нужно продумать каждый возможный вариант. Может ли доброволец как-то помешать выполнению фокуса? Если да, нужно знать, что делать в этом случае. Кроме того, следует достаточно точно записать все действия, чтобы в будущем сам фокусник или кто-то другой смог повторить их и успешно показать фокус (хотя маги, в отличие от ученых-информатиков, не склонны раскрывать свои секреты!). Все это — алгоритмическое мышлениев действии.
Главное здесь в том, что, как только маг изобрел свой трюк и записал алгоритм (возможно, рунами!), всякий, кто знает этот алгоритм, в состоянии показать фокус. Для этого не придется ничего изобретать. Надо просто четко следовать инструкциям. Ученик чародея может показать фокус, даже если ему абсолютно не понятно, как он работает. Правильно и точно выполните необходимые действия — и получите задуманный волшебный эффект.
Почему это важно для информатики? Именно так мы добиваемся, чтобы работал компьютер. Компьютеры — это куски металла и кремния. Они не понимают, что делают. Просто слепо следуют инструкциям, как ученик колдуна. Программисты делают всю творческую работу, составляя инструкции. Для программирования важен навык писать инструкции очень точно и недвусмысленно, чтобы не допустить несоответствий. Цель каждой инструкции не должна вызывать никаких сомнений: компьютер должен в точности следовать указаниям. Каждый возможный исход событий должен быть описан в инструкции — компьютер не справится с непредвиденным. Однако, следуя этим указаниям, компьютер может творить чудеса (и даже казаться разумным, как мы увидим далее).
Читать дальшеИнтервал:
Закладка: