在scratch的学习过程中,我们需要掌握一些编程的基本知识,下面给大家逐一介绍
数据类型 Data Type
实际编程环境中会涉及很多数据类型,但在scratch中数据类型基本就三种:数字、字符串和布尔
数字 Decimal
输入一个数字很简单,在任何椭圆形的输入框内都可以输入数字。scratch甚至提供了专门的运算工具来处理数字
随机数 Random
这些指令块中还有一个比较特殊的是随机数,它用于生成一个1-10之间的随机整数。想一想,如果我们想生成一个任意区间之内的随机数,应该怎么操作?比如我想生成1-100之内的随机数。
- 首先,系统只提供了1-10的随机数,我们用这个随机数乘以10,就得到了10-100的10的倍数
- 然后,用1-10的随机数减1,就得到了0-9的随机数
- 最后用第一步的结果减去第二步的结果,就得到了1-100的随机数。
那要想得到1-1000呢,同理,用上面的结果乘以10,再减去0-9。想得到1-10000呢,用1-1000的随机数乘以10,再减去0-9。依次类推。
二进制、十进制、十六进制 Binary Decimalism Hexadecimal
-
我们日常生活中用到的数字都是十进制的,为什么呢,因为我们人类有十个手指头,最初的计数就是数手指。然后阿拉伯数字1-10代替了手指的功能。
-
计算机只“认识”二进制的数字,也就是只认识0和1。为什么呢,因为计算机是集成电路组成的,电路需要开关来控制,而开关只有“开启”和“关闭”两个状态。而二进制中的1就代表开启,0就代表关闭。
-
除了二进制外,还有八进制,十六进制。因为二进制虽然简单,但是计数起来位数很多有点麻烦,所以就有了八进制和十六进制,一般用于位计算和编码。
-
这里仅以十进制、二进制和十六进制的对比来说明它们的计算方法
字符串 String
在任何输入框中也能输入字符,包括英文字母、汉字甚至其它语言文字。scratch也提供了专门处理字符串的方法
布尔 boolean
布尔型的变量只有两个值,true或者false(真或假)。就像它的值一样,布尔型的变量用于判断真假。 比如 (1+2=3),这句话是真的,是true;(1+3=2),这句话是假的,是false.
在scratch中所有“六角形”的代表的值都是布尔型的变量。
逻辑运算
就像数字有加减乘除四则运算一样,布尔型的变量也有自己的运算,叫做逻辑运算。 最基本的逻辑运算包括与、或、非
| 操作名 | 英文名 | 操作符 | 举例 | 总结 |
|---|---|---|---|---|
| 与 | and | & | true&true=true; true&false=false; false&false=false | 全真为真,有假为假 |
| 或 | or | | | true|true=true; true|false=true; false|false=false | 全假为假,有真为真 |
| 非 | not |  ̄ |  | 真变成假,假变成真 |
在scratch工具中,与、或、非对应的命令是:
- 一个与操作的例子,找出1-100以内所有能被3整除的单数。能被3整除意思是这个数除以3的余数等于0;单数意思是这个数除以2余数不为0
可以看到,其中“不等于0”这个判断就是用“不成立”这个命令实现的。
数据结构 Data Structure
以下两种数据结构在之前已经介绍过了 数据结构_数组和列表
数组 Array
列表 List
对象 Object
在scratch中,对象最直观的表现就是角色。 一个角色有: 角色名称,x坐标,y坐标,显示/隐藏,大小,方向
一个对象,最主要的特点就是它的属性,以及对于它的属性的改变的操作。 所以,世界上任何一个物体都可以是一个对象,它都有自己的属性。 比如一个人,他有年龄,有身高,体重,长相等等。 比如一部手机,它有尺寸、使用寿命等等。 当我们了解了现实世界中物体的属性后,我们就可以用编程的方法把它抽象为一堆数据
比如在打砖块的游戏中,我们为砖块建立的“仅适用于当前角色的变量”,就属于砖块的属性。
流程控制 Process Control
流程控制,简单来讲就是根据条件的判断,使程序运行到不同的分支上去。 例如:我明天准备去旅游,但前提是明天不要下雨,如果明天下雨,我就不去旅游了;如果明天不下雨就去。这就是一个根据某个条件来决定接下来的进程的例子。
顺序结构
顺序结构就是程序执行过程中没有分支,比如用上面的例子来做顺序结构,明天下不下雨我都要去旅游
flowchat
s=>start: 开始
e=>end: 结束
o=>operation: 去旅游
s->o->e
选择结构
选择结果需要有条件来使程序分支执行,条件成立时和条件不成立时程序会走不同的路径
flowchat
s=>start: 开始
e1=>operation: 去
e2=>operation: 不去
o=>operation: 去旅游
c=>condition: 下雨?
s->o->c
c(yes)->e1
c(no)->e2
循环结构
循环结构顾名思义,就是需要重复执行某个操作,分为有条件的循环和无条件的循环。有条件的循环在条件成立或者不成立时循环就要停止,而无条件的循环会一直循环下去,直到程序被强制结束。 比如上面的例子,如果下雨我就等待,一直等到不下雨为止
flowchat
s=>start: 开始
o=>operation: 去旅游
o1=>operation: 等待雨停
o2=>operation: 去旅游
con=>condition: 下雨?
s->o->con
con(no)->o2
con(yes)->o1->con
输入、输出 Input/Output
- 输入与输出是计算机的基础功能,方便我们与计算机互动。
- 输入就是我们要通过什么方式告诉计算机做什么;输出就是计算机告诉我们它做了什么。
- 常见的输入设备包括鼠标、键盘、麦克风、摄像头、手写板、触摸屏、游戏手柄等,这些设备都是要捕捉人类的操作,把这些操作变成指令传递给计算机。
- 常见的输出设备包括显示器、打印机、耳机等,这些设备将计算机的工作展示给我们。
在scratch中,可以捕捉我们的输入的操作有很多,
这里主要说一下“询问”和“说”的命令,它可以帮助我们和计算机进行“对话”,程序需要根据我们的输入进行判断时,就需要询问
此外还有录音的功能,可以把我们自己的声音用在作品当中
I/O
Input/Output的简写,I/O可以简单的理解为文件的导入和导出,这也是输入和输出的一部分。大部分的计算机软件都有I/O的功能,以帮助我们处理文件。
我们曾经说过,计算机是用来处理数据的,而数据在计算机上的具体表现,就是数据文件。一段文字,一张图片,一个视频,都是文件。可以说我们处理数据,其实就是在处理各种数据文件(当然也不是所有的数据都会生成文件,比如网络IO,这个以后再说)
在scratch中,我们保存自己的作品到电脑上,就是导出文件;而从电脑中上传,就是导入文件。 此外,我们导入一张图片作为背景或者角色,导入声音作为素材,都是导入文件。
甚至列表也是可以导入和导出的,比如我们把上面例子中1-100以内的3的倍数的单数全部导出。
监听 Listening
监听是一个被广泛应用的计算机功能,但是可能有很多同学没有听说过。比如上面讲到的大部分输入操作,都要用到监听的功能。
简单来说,监听就是计算机一直在“监视”你的操作,一旦你做了某个操作,它必须立即回应你。比如你按下键盘鼠标,程序就“看到”你按下了键盘鼠标,它就会有动作。
scratch中的监听大概分为以下三类,一般监听事件都要用到无限循环操作。
键盘鼠标
顾名思义,监听我们的键盘鼠标操作
想一想,为什么我要在程序中加一个“等待0.2”秒的操作
消息广播
这个功能之前在打砖块的游戏中用到过,当球碰到砖块时,我们通知球转向。
- 老师的代码
- 学生的代码
- 效果是这样的
事件
其实鼠标键盘操作都可以称为事件。scratch中还提供了很多其它的事件,比如:
函数 Function
在编程过程中,对于一些复杂的逻辑编码,我们希望它们能够被重复应用。于是我们把它们“打包”成一个个的代码块,这种被打包的处理某个复杂逻辑的代码块就叫做函数。 函数有几个要素:函数名,参数,返回值 scratch中通过自定义积木,实现了函数的功能。 我们自定义一个判断输入年份是否是闰年的函数
当然一个函数是可以传递多个参数的,比如我们定义一个计算两数相加或者相减的函数,当布尔值传入true时就把两数相加,传入假时就把两数相减
一个函数执行结束后,是可以有返回值的,可惜的是,scratch中并不提供这样的功能,以后再讲其它编程语言时,会再提及
以上就是关于编程的一些基本知识,对于从没有接触过编程的同学来说,还是很新鲜的,希望同学们在学习scratch的过程中可以掌握这些知识。