采购补给 版权说明:《Bad Choices》是由Ali Almossawi著作的一套计算思维书籍,可以通过https://bookofbadchoices.com/访问本书英文版本。书中通过一系列人物的故事场景,以插画的方式展示了一个个现实生活中遇到的问题,进而引出了一些计算思维的问题,内容丰富且非常有趣。本书的目标读者是计划学习编程的儿童、学生,通过阅读本书可以开拓眼界,培养计算思维习惯。
本章背景故事(请孩子阅读,家长伴听)
话说有这样一位退休的老师,他家住在伦敦东部。几年前老师曾经摔伤过背部,现在还隐隐作痛。他讨厌离开家门,不仅是因为邻居有条凶狠的大狗总朝他汪汪叫,还因为伦敦总下雨,而老师不喜欢被淋湿。但话说回来,如果不想忍饥挨饿,他还是得经常去商店买自己需要的杂货。老师如何在一周内尽量减少去商店的次数而又不致于遭受饥饿的风险呢?
工作目标: 在给定的一周内尽可能少地去商店
老师可以采用的方法:
方法一:当发现他已经用光了一些食物后,就去商店补充。
方法二:做一份已经用光的食物清单。一旦清单达到达到一定数量,或者当他吃光最重要的一种食物(老师以巧克力为口粮,一天不吃就饿得慌)时,就去商店。
好了,现在我们可以动手准备了,请你找到笔和纸、袜子(可选)或者其他你觉得可以替代的道具。
你可以按照上面的两种方法,先进行一些实验,看看哪种方法更优?并思考为什么?
实验完成再接着往下看哦!
采购补给 分析过程(请家长+孩子分段阅读思考)
在计算领域存储这些物品或者元素的项目集合的方式有很多种。我们在第一章袜子配对中看到了最基本的数组:一堆没有匹配的袜子。在第二章衬衫争夺战中遇到了经过排序的衬衫数组,进而实现了可搜索性的价值最大化。这些其实就是所说的数据结构,我们通过牺牲掉一些不在意的需要,实现我们所关心地方的效用最大化。这些总是有些对立的特性无法同时满足,比如有一款手机应用,每次提示你输入密码,你可以得到了安全性的提升,却损失了易用性方面的体验。
本章场景的讨论,本质上是为了避免重复性工作。举例来说,一位秘书要负责把文件打孔,她经常会把十份文件一起打孔,而不是一个文件就去打一次;在晚餐后你负责清洗盘子并擦干它们,你通常会先把所有盘子洗干净之后,再依次的擦干他们,而不是洗一个擦一个,接着下一个洗完再擦的过程;在切洋葱的时候,妈妈总是先顺着切,之后再统一横着切;有些电梯实现了自动调度功能,将去往同一楼层的乘客汇总到一部电梯。
如果给今天用到的数据结构做一个定义,我们会使用“堆栈”这个名词。百度百科对于堆栈的定义是:在计算机领域,堆栈是一种数据结构,而且是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。类似于它的名字意义,我们只关心堆栈顶部的状况,而不管堆栈之下有多少东西。举例来说,你走进一家咖啡店,看到了一堆报纸,你只会看最上面的那一份,因为你知道它是今天的报纸,而你只关心今天的头条新闻。因此,对于堆栈,我们非常关心查看顶部情况。
在老师的故事里,他建立了一个认知堆栈,里面包含他已经用完的物品,而仅当巧克力出现在堆栈最上层后,他就去商店补充堆栈中消耗的物品;也就是,反复移除堆栈清单最上面的物品,直到堆栈为空。换句话说,巧克力是清空堆栈事件的触发器。在此之前,他可以愉快地将巧克力以外的物品放进去,而不需要出门。
基于前人的智慧,人类变得越来越聪明。关于这个有趣的看法,您可能想了解一下弗林效应,人类变得越来越聪明,部分原因是我们的直觉不断成熟并变得更加复杂。新人类现在预装了比他们的祖先更好的直觉。阅读图书和论文总是很有趣,因为我们了解人类已经走了多远。1530 年出版的一本《儿童良好礼仪手册》中,做这个给读者一些建议,例如“不要让你的鼻孔像一些肮脏的人一样充满鼻涕;苏格拉底因为这个恶习而受到批评。”对于我们现在的孩子来说,这个建议似乎是显而易见的,然而,在当时那个背景下,这种观点也是非常新颖的。
今天学习结束了,下面一起来通过实验体会一下堆栈的方法吧!
采购补给 本章延申练习(请家长+孩子共同完成)
日常生活中是否还有其他像堆栈一样工作的东西?
试一下用Chome或者iexplore浏览器访问不同的网站,每次你点击一个链接,你就是把一个网站推到一个堆栈上,每次你回到上一个链接,你就是从那个堆栈中弹出一个网站。您可能并不关心总共访问了多少个网站,只要您可以回到上一个网站,然后从那个网站回到之前的网站,以此类推。
图灵的计算理论对于计算机的发明和发展起到了基石作用,你可能想要阅读一下他的故事,可以自行查找了解一下。