Everybody in this country should learn how to program a computer…
because it teaches you how to think.
——Steve Jobs
这个国家的每个人都应该学习如何写计算机程序…..
.因为它教你如何思考。
——史蒂夫-乔布斯

答案稍后揭晓
先问您个问题
1+2+3+……+100等于多少
对!答案是5050
小编从小就听说过一则传奇事迹
故事的主人公就是
伟大的数学家、物理学家、天文学家、大地测量学家,近代数学奠基人之一的
卡尔·弗里德里希·高斯
这样一个拥有多重头衔的伟大人物
在他少儿时期就巧妙地解决了这个问题
他是怎样做的呢?
且听小编娓娓道来
首先1+100=101,2+98=101,……,50+51=101
从1加到100共有100/2=50组这样的数
所以50X101=5050
高斯的上述解题思路充分体现了编程思维
将思路进一步延伸
就可以概括出求任意范围[a,b]连续整数求和公式
(a+b)x (b-a+1)/2
编程思维主要有4步:
第一步:分解,把一个复杂的大问题,拆解成可执行、更好理解的小步骤
拿开篇问题做个解答
将所有无序的牌按照同一大小码好
然后就会知道少了哪张牌
但是如果有100副牌、1000副牌
这种常规操作既耗时又耗力
(献上假笑男孩式凝望)
第二步:模式识别,找出相似模式,高效解决细分问题
如果能联想到高斯的求和方法
同一大小的牌有四张,则所有牌的面值大小为
(1+2+……+13)X4
再联想到我们刚刚建立的求和模型(a+b)x (b-a+1)/2
则总面值大小为
[(1+13)X(13-1+1)/2]X4
总和为364
再将手上的牌面值一张张加起来后用总和减去即可
第三步:抽象,把问题映射到计算机可以处理的数据
但是又有新的问题出现
每个数字都有四种花色
怎么确定是哪种花色呢
这种方法好像不适用
但是我们如果可以把扑克牌花色和数字映射到计算机可以处理的数据
就可以适用以上的求和模型了
不妨按花色来,设红桃A 为1
红桃2 为2 ,依次到K是13
然后方块A为14,到方块K是26
以此类推
黑桃A到K是 27到39
梅花则是40到52
就将问题转化为1+2+……+52的问题
第四步:算法,设计一步一步的解决路径,解决整个问题。
当要处理的数据映射到合适的数据结构
可复用的处理模块也都分辨识别出来后
下一步就是利用程序模块
来规划出程序设计步骤
从而解决问题
(献上小编的代码)
计算机相较于人脑
存储容量大、处理速度快
所以计算机最擅长的就是重复劳动
但能够让计算机从事高效的重复劳动的前提
但人要先思考和分析怎样把复杂工作分解成多个可机械重复执行的模块
然后才可以通过程序让计算机来处理
而这步比写程序本身要重要的多
所以说,编程思维的核心
不是编程语言
也不是语法
甚至不是算法或数据结构本身
而是如何分解问题
从中发现规律
建立解决问题的模型
并映射到合适的数据结构和算法上
然后才能根据算法写程序实现
在此过程中,前两步分解和模式识别
其实完全隶属于数学思维范畴
也是编程思维的基础
而抽象和算法才是编程思维所独有的
也是在孩子学编程过程中最需要强调的
其实
学习少儿编程最重要的是培养数学思维和解决问题的能力
能够让孩子在解决问题时能够思考更全面、条理更清晰。
声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。