程序代码是未来世界的通用语! 学习编程是时代的趋势! 目前,已有16个欧美国家将编程纳入了公立学校的日常课程。在美国,奥巴马总统明确提出“编程应当与ABC字母表和颜色一样同时教学”;英国最新的教育大纲规定,5~16岁儿童将开始学习编程;而早在上世纪90年代中期,以色列教育部部长就明确表示,计算机科学应该同其他科学学科一样受到重视,编程应成为中小学必修课程。 编程语言是人类和计算机对话的一种语言,和人们用于沟通的汉语、英语等语言一样,有着相似的习得过程,越早接触,越能更好地掌握。同时,学习编程更像是一把钥匙,能够为大家打开一扇全新世界的大门,培养多方面的能力: 【1】逻辑思维 【2】设计思维 【3】解决问题能力 【4】团队协作能力 【5】持续学习能力 通过编程, 你们可以从一个dreamer变为一个doer! 回忆一下你从小学到高中毕业,有没有按照自已的兴趣在这方面学习一下呢?小学学习office,初中学习office,高中还是学习office。你的计算机技能有增长吗? 如果你马上要去大学求学,还有一个月的时间(One Month Left),可以试试放心手中的游戏(王者荣耀),看看你这方面是否有天赋? 《道德经》有说:道生一,一生二,二生三,三生万物。如果把它套用到数字化的世界:道生成的一即是二进制,一生二中的二是它的两个数码:0和1,二生三中的三就是0和1的组合,这个组合是无限的即数字化时代的万物。 我们在进一步阐述一下:0和1是二进制的数码,估计大家都能够理解。那0和1的组合就代表数字化的存储(Storage),在计算机世界中,数字化的存储的信息有两类:
打个比方:00 代表 四个方位的东面,01 代表 四个方位的西面,10 代表 四个方位的南面,11 代表 四个方位的北面。这时两位的二进制编码的组合代表或存储的就是数据(Data)。这里又衍生出两个问题,为什么00偏要东(East),代表西,南或者北不行吗?这个其实就是编码的标准问题。 举个例子 Example1 大家都知道ASCII吧?ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。请注意,ASCII是American Standard Code for Information Interchange缩写,而不是ASCⅡ(罗马数字2),有很多人在这个地方产生误解。其实就是对我们的键盘上的按键的编码。 看下图(也就是字符编码),打印字符和控制字符,想像一下你在Word输入文档时,有些是显示的,有些是功能的(换行,换页什么的) 再给一个: 注:Dec是十进制,Hex是十六进制,Oct是八进制,Chr代表字符。 注意: 进制是可以相互转化的,就像汉语,英语,日语可以翻译一样,其核心是表征语言背后的意义。 十进制与二进制转换(四位二进制为例) 比如 十进制27 ( Hex为 1B, Oct 为033) 就是代表键盘上的ESC键(功能键)。那你可能有要说,我非得要把ESC键编码成 十进制99,当然可以但你的键盘输入的字符和地球上其他的人就不一样了。你没有用国际标准组织ISO(the International Organization for Standardization )制定的标准,你就成了外星人了,呵呵! 所以标准很重要。 收住话题,刚才讲到二进制表征数据(Data),接下去讲二进制的指令(Instruction)。指令打个比方,你在水里游泳,你的每个动作(打退,拨水,吸气吐气)都是受你的大脑指令控制的。 看例子 Example2 假如你设计了一个计算机控制家里的灯泡(Bulb),我们设计一套指令如上图, 0000 0000指令是结束程序,0000 0001是开灯,0000 0100减少亮度10%, 0000 1000增加亮度10%。 你可能说 5 条指令我3位二进制就可以搞定,完全正确! 但是指令长度越长,可以扩展更多指令啊! 再给个图,我们可以设计8条指令。 8位二进制可以编码成 2^8= 256 条指令。 现在想想Windows 7 32位 与 Windows 7 64位的区别了吧! 既然开头,把这个例子讲完! 指令是放在计算机的存贮器(Memory)中,执行在CPU中。 指令也是放着存储器中,它有对应地址(Address),地址的编码肯定也是二进制。 关于为什么数据世界(计算机)用二进制,二进制有何好处,以后再讲。关于编码我们也以后再展开。 下面我们模拟一下上面12条指令的执行效果。 视频: 再来讲讲计算机编程。 编程语言可分为:
前面我们介绍的就相当于机器语言(Machine Language)。其上有汇编语言(Assembly Language)和高级语言(Advanced Language)。我们现在绝大多数人用的是高级语言。高级语言有衍生出:Basic系列,C语言系列,Java系列,Pascal系列。包括现在热门的智能手机编程(Android 和 iOS )。 大家看到现在的很多名词,都有云里雾里的感觉!如人工智能、无人驾驶、大数据、云计算……。其实如果你懂得计算机原理,这些无非是三生万物的东西,只要计算机的体系结构不变,我们就可以说:万变不离其宗。 那么计算机的系统机构是?(下次再讲) 下面来说说Jobs的话:Everyone should learn how to code,because it can teach you how to think. 他老人家说的Think应该指在数字化时代的问题思考模式,即如何解决问题(Problem-Solving)。Code这里指编写程序(Programming ), 指用高级语言来编写计算可以识别的指令代码。 下面我们来揭开编程的神秘面纱,编程其实就三种结构(三生万物,呵呵):
顺序机构 循环结构 条件结构 我们来个视频Demo吧,以大家数据的Excel为例,他后台是VBA( Visual Basic for Application ) 是VB程序的子集或者看成Office的应用。 视频中的代码: Sub sequence()
Range('a1') = 2 Range('a2') = 4 Range('a3') = 6 Range('a4') = 8 Range('a5') = 10
End Sub Sub loops()
For i = 5 To 30 MsgBox 'wait' Range('b' & i) = 2 * i
Next i
End Sub
Sub condition()
For i = 1 To 5
If Range('a' & i) < 5=""> Range('c' & i) = 'good' Else
Range('c' & i) = 'bad' End If
Next i 编程不再仅仅是写代码,更是在培养计算思维!编码是当今世界的必要技能。其实,编程不再仅仅是写代码,更是在培养计算思维!学习编程,不仅仅能学会如何处理一般问题,还能灵活应用数学和计算机方法,利用计算思维来解决日常生活中的各种问题。“计算思维”这个词最先由 Seymour Papert 提出,后由周以真教授 (Jeannette Wing) 推广。她将计算思维定义为: 以有效处理信息的方式思考问题、构思并呈现解决方案的一系列思维活动。(Wing, 2011) 计算思维可用于各种领域,也可以在日常生活中使用。科学(Sceince)、工程(Engineering)和数学(Math) 领域都涉及计算思维。这种思维包括以下几个方面: 分解(Decompose)是指把问题分成较小的部分,从而简化问题的能力。通过分解,问题会变得更易于向别人解释,或分成具体的任务。分解之后通常需要进行概括。 例如:去旅游时,可以将准备行程(或是实验)分成几个子任务:预订机票、预订 酒店、打包行李等等。 概括(Generalization)能力是指发现任务中已知的部分,或是在其他地方已经了解过的部分。这通常可以使设计算法变得更加简单。 例如: 交通灯的工作模式就是不断重复一系列相同的操作。 算法(Algorithm Thinking ) 思维是指设计一系列有序的步骤来解决问题的能力。 示例一:当我们按照菜谱做菜时,需要遵循一系列步骤。 示例二:使用计算机时,我们可以通过编程来设计一系列操作,告诉计算机要做什么。 关于算法和计算思维 ,我们以后可以在深入讲解! 评估(Evaluate)与纠错(Debug)是指检验原型是否能按预期运行的能力,或发现不足的能力。计算机编程人员也借此来发现和更正程序中的错误。 示例一:做菜时,我们会不时尝尝味道,看看口味如何。 示例二:查找书面作业的拼写错误和丢失的标点,进行修改,使文字和标点正确。 抽象化(Abstract)是指在解释问题或解决方案时去掉次要细节的能力。也就是说,将想法概念化的能力。 例如:描述一台自行车时,我们会着重描述它的其中一些细节。我们可能会描述它的型号和颜色,如果对方确实对自行车感兴趣,我们再进行更细致地描述。 暑假我们团队推出一个创意编程项目: 适用人群
课程概述
推荐理由
|
|