《hello Ruby儿童编程大冒险》书中通过绘本童书的形式为孩子讲解什么是计算思维。书中以及网站上有一些活动以及游戏。更多精彩可以访问网站helloruby.com。
“作者希望孩子们理解和接受最基本的编程逻辑,以后就可以像搭建乐高积木一样,用轻松、创意的方式编写代码”
----华尔街日报
*孩子不一定要当程序员,但一定要具备“计算思维”:
分解问题
重复任务
寻找规律
制定计划
打破常规思维*
计算机的秘密:执行指令又迅速又准确,但是它们不能独立思考。
下面是一些专业词汇的解释
·序列
成人世界的定义:
序列是一块用于存放多个值的连续内存空间并且按一定顺序排列,每一个值都分配一个数字,成为索引或位置。通过索引可以取出相应的值。
书中的活动是以日常生活举例。比如“刷牙”的指令:1.走进卫生间;2.拿起牙刷,挤上一点牙膏;3.张开嘴,开始刷牙,重复同样的动作,直到每颗牙齿都刷一遍;4.如果牙齿上还沾有牙膏,可以漱一口水,全部做完后,再离开卫生间。
计算机说:请确定你给我的指令是按照正确的顺序!这样才会又快又准!
那这一步步指令就叫做“编码”。
序列,就是一连串排定顺序的指令。
·分解
把问题分成很多小部分的过程叫做分解。
Ruby小女孩不怕尝试新的事物,因为她知道一个秘密:**所有的大问题都是由小问题组成的。**这也是我作为程序猿后受益最多的一种思维。在现实生活中,我在遇到问题时,通常也会习惯去把问题分解,当看见一个个小问题时,心里也就不会觉得那么难了。
程序员工作中通常会把他们所写的代码分成更小的程序块,方便理解和维护。我们现实生活中也会经常遇到分解,如把肉、蛋糕或游戏等级分解成几个部分。
书中的活动:一副完整的简单图片,旁边是被分解的碎片,找出缺少的或多出来的碎片。或者让小朋友把自己的画分解,看它是由哪些不同的部分组成的。
模式识别
成人世界的定义:
通过计算机技术自动地或半自动地(人机交互)实现人类的识别过程。如人脸识别、语音识别等等。
书中定义:找到问题的相似性或规律,可以有效地解决问题,为了找到问题的规律,我们会在每一个问题中寻找相同点或相似性。
人类也一直在完成模式识别的任务,比如读书,是利用认识的汉字词语(脑中的模式)去理解书中的内容,这整个过程也是一种模式识别。人脑在学习新知识时,也是在调用以前储存在脑中的旧知识去理解新知识,这一个过程,我理解这也是一种模式识别,所以模式化的学习更容易让人去理解、去记忆。
书中模式识别的活动是举例Ruby的着装规则,星期一,我会穿波点衣服;星期二,我会穿…根据这样的规则,就可以找出和她规则相匹配的服装。
变量
成人世界的定义:
变量就是申请内存来储存值,即创建变量时会在内存中申请存储空间。内存管理系统会根据变量类型来给变量分配空间,该空间只能存放该类型的数据。
简单来说,变量是一个用来给数据命名的标识符。 变量分为三种,静态变量(类变量)、成员变量(实例变量)、局部变量。
静态变量(类变量)声明在方法体之外,被static关键字修饰,作用域是整个类。 成员变量(实例变量)声明在方法体之外,作用域是整个类。
局部变量是声明在方法体内的变量,随着该方法被执行而创建,当方法结束时该变量被销毁,作用域仅为该代码块,不能被访问修饰符修饰,局部变量没有默认值,如需使用该变量,必须对其进行赋值。
电脑在储存信息(或者叫“数据”)方面可厉害了,这些数据可以是人名,也可以是一块蛋糕的重量。
一个变量就好像一个有标签的盒子,你可以在里面为你的项目储存数据。
书中Ruby的爸爸给Ruby留了四张线索卡,有机器人的地址、提示企鹅在河边、true或false的提示,还有雪豹到狐狸家的方向和步数。这些线索就像密码一样,而四张线索卡就像变量,储存着不同类型的信息。也就是说使用计算机时,会产生和存储不同类型的数据, 编程时,这些数据以变量的形式储存。有很多的东西都可以存储为变量:1.字符串;2.数值;3.布尔值
·字符串:引号里面的字符组合,包括键盘上的字母、数字、空格键及其他字符,如“Ruby”。
书中的活动是:Ruby觉得爸爸的键盘很神奇,因为她和她的好朋友的名字都藏在里面。根据不同的颜色可以分别找到他们的名字,也可以去网站上设计和打印自己的专属键盘。
·数值:比如1,2,3或4.12
书中的活动就是通过一系列数学问题,回答个数等等。Ruby爸爸留给Ruby的线索卡里,其中有一个是100X4(这个还没理解什么意思)
·布尔值:只有True或False这两种表达方式
布尔逻辑就是用and/or/not连接表达式后作出的真假判断。
书中的活动是给出一副图片,给出三句话,判断真或假。也可以找自己的玩具,想出关于这个玩具的三个特征,不管是真的假的,尽量难以分辨,让小朋友猜猜哪些是真的。
算法
成人世界的定义
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
书中:算法是解决问题的一系列具体解决步骤。也就是说就是按照一步步的计划完成某件事。计算机喜欢用符号化指令写出这些步骤,让我们更容易理解。
Ruby在接到爸爸给的任务后,一头雾水,她决定先制定一个计划,之后按照计划进行的任务。这个计划就是一个算法:把寻找宝石分解成更小的步骤。编程时,算法可以用来创建重复使用的解决方案。谷歌、必应的搜索引擎就是使用搜索算法对结果进行排序。
书中的活动是给出步骤与规则,画出每一种算法代表的不同图案。如:画线、直线、重叠、三种颜色。
算法和序列的活动是用上下左右四个箭头让Ruby移动到终点。用正常或者快捷方式的指令写。程序就是由一连串的指令所组成,序列就是一连串排定顺序的指令。
数据结构
成人世界的定义
数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。
常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等。
书中:
当你要处理很多数据时,如果把他们排列得井井有条,会大大地提升使用效率,我们把这些方法称为“数据结构”。
如果你需要在同一个地方保存很多数据时,可以用数据结构来储存。数据结构就像一个大箱子,你可以在里面存储数值、字符串和目录之类的数据,并可以根据需求随时修改。有的数据结构可以让你快速找到数据,有的数据结构让分类和整理变得更方便,有的数据结构擅长保存有顺序的信息或者设定数值更方便。
企鹅有秘密语言,但只要了解这些语言的组成要素,就能理解他们在说什么。
活动1:秘密语言,根据图表解密。
活动2:午餐时间,根据提示分类整理午餐盒。
循环
不断重复执行的代码块。有的循环会一直执行(无限循环),有的循环则有停止条件,比如计数器循环。当循环重复一定次数后就会停止,或者不停循环直到满足停止的条件。
儿童更懂的语言:
不停地重复做一件事或者反复做一系列事情。Ruby搭梯子,搭好一节,在重复四次,就完成了。这个过程就叫循环。
计算机说:我擅长不断重复做同一个任务,而且不觉得无聊。我甚至不需要吃饭、休息,只需要知道什么时候开始、做什么事情、什么时候结束。
活动1:模式识别,找规律的题
活动2:循环:每个任务有一系列招牌动作。你能重复这些动作多少次? 第一回合:重复一套舞蹈动作3次;第二回合:选择一套舞蹈动作不断重复,直到你和伙伴们一起拍手。第三回合:当你的伙伴捏鼻子时,重复Ruby的动作。
想一想,日常生活中,有哪些事情也像循环一样,会一直重复呢?例如:校园生活,日常行为习惯还是歌曲旋律?
选择
if…then…
if…else…
书中活动1:指令按钮,按下什么颜色按钮,做什么动作。每天都可以看到这样的计算机指令。
比如:按电梯,按微波炉按钮。
活动2:根据过程,填写指令。
函数
一段能重复使用的代码,用于执行一些常见的任务。如果你有一段使用过很多次的代码,把他们变成函数将会非常有用。
书中活动:对建造木筏的图片进行排序,并为整个过程起一个名字,好让Ruby记得下次如何建造相同的东西。
抽象化
意味着要忽略不必要的细节。
就是为了在需要的事情上集中精力,把不需要的细节分离出来。地铁路线图就是把复杂的真实路线抽象化,日历也是对时间的抽象化,其实,编程语言也是抽象化。
转载:https://blog.csdn.net/weixin_55240334/article/details/113809305