【scratch】class_5_编程基础知识

在scratch的学习过程中,我们需要掌握一些编程的基本知识,下面给大家逐一介绍

数据类型 Data Type

实际编程环境中会涉及很多数据类型,但在scratch中数据类型基本就三种:数字、字符串和布尔

数字 Decimal

输入一个数字很简单,在任何椭圆形的输入框内都可以输入数字。scratch甚至提供了专门的运算工具来处理数字
【scratch】class_5_编程基础知识_第1张图片
我们注意到在绝对值的指令块的下拉选项中,还有很多数学函数,包括三角函数、反三角函数、指数函数和对数函数,这些是高中数学中要学的东西。

随机数 Random

这些指令块中还有一个比较特殊的是随机数,它用于生成一个1-10之间的随机整数。想一想,如果我们想生成一个任意区间之内的随机数,应该怎么操作?比如我想生成1-100之内的随机数。
【scratch】class_5_编程基础知识_第2张图片
生成1-100的随机数

  • 首先,系统只提供了1-10的随机数,我们用这个随机数乘以10,就得到了10-100的10的倍数
  • 然后,用1-10的随机数减1,就得到了0-9的随机数
  • 最后用第一步的结果减去第二步的结果,就得到了1-100的随机数。
    【scratch】class_5_编程基础知识_第3张图片
    那要想得到1-1000呢,同理,用上面的结果乘以10,再减去0-9。想得到1-10000呢,用1-1000的随机数乘以10,再减去0-9。依次类推。

二进制、十进制、十六进制 Binary Decimalism Hexadecimal

  • 我们日常生活中用到的数字都是十进制的,为什么呢,因为我们人类有十个手指头,最初的计数就是数手指。然后阿拉伯数字1-10代替了手指的功能。

  • 计算机只“认识”二进制的数字,也就是只认识0和1。为什么呢,因为计算机是集成电路组成的,电路需要开关来控制,而开关只有“开启”和“关闭”两个状态。而二进制中的1就代表开启,0就代表关闭。

  • 除了二进制外,还有八进制,十六进制。因为二进制虽然简单,但是计数起来位数很多有点麻烦,所以就有了八进制和十六进制,一般用于位计算和编码。

  • 这里仅以十进制、二进制和十六进制的对比来说明它们的计算方法
    【scratch】class_5_编程基础知识_第4张图片

字符串 String

在任何输入框中也能输入字符,包括英文字母、汉字甚至其它语言文字。scratch也提供了专门处理字符串的方法
【scratch】class_5_编程基础知识_第5张图片

布尔 boolean

布尔型的变量只有两个值,true或者false(真或假)。就像它的值一样,布尔型的变量用于判断真假。
比如 (1+2=3),这句话是真的,是true;(1+3=2),这句话是假的,是false.

在scratch中所有“六角形”的代表的值都是布尔型的变量。
【scratch】class_5_编程基础知识_第6张图片
【scratch】class_5_编程基础知识_第7张图片

逻辑运算

就像数字有加减乘除四则运算一样,布尔型的变量也有自己的运算,叫做逻辑运算。
最基本的逻辑运算包括与、或、非

操作名 英文名 操作符 举例 总结
and & true&true=true; true&false=false; false&false=false 全真为真,有假为假
or | true|true=true; true|false=true; false|false=false 全假为假,有真为真
not 【scratch】class_5_编程基础知识_第8张图片 真变成假,假变成真

在scratch工具中,与、或、非对应的命令是:
与或非
一切六角形的孔中都可以镶嵌布尔型的积木块

  • 一个与操作的例子,找出1-100以内所有能被3整除的单数。能被3整除意思是这个数除以3的余数等于0;单数意思是这个数除以2余数不为0
    【scratch】class_5_编程基础知识_第9张图片
    可以看到,其中“不等于0”这个判断就是用“不成立”这个命令实现的。

数据结构 Data Structure

以下两种数据结构在之前已经介绍过了
数据结构_数组和列表

数组 Array

列表 List


对象 Object

在scratch中,对象最直观的表现就是角色。
一个角色有:
角色名称,x坐标,y坐标,显示/隐藏,大小,方向
【scratch】class_5_编程基础知识_第10张图片
以上这些可以称为角色的属性。

一个对象,最主要的特点就是它的属性,以及对于它的属性的改变的操作。
所以,世界上任何一个物体都可以是一个对象,它都有自己的属性。
比如一个人,他有年龄,有身高,体重,长相等等。
比如一部手机,它有尺寸、使用寿命等等。
当我们了解了现实世界中物体的属性后,我们就可以用编程的方法把它抽象为一堆数据

比如在打砖块的游戏中,我们为砖块建立的“仅适用于当前角色的变量”,就属于砖块的属性。
【scratch】class_5_编程基础知识_第11张图片


流程控制 Process Control

流程控制,简单来讲就是根据条件的判断,使程序运行到不同的分支上去。
例如:我明天准备去旅游,但前提是明天不要下雨,如果明天下雨,我就不去旅游了;如果明天不下雨就去。这就是一个根据某个条件来决定接下来的进程的例子。

顺序结构

顺序结构就是程序执行过程中没有分支,比如用上面的例子来做顺序结构,明天下不下雨我都要去旅游

Created with Raphaël 2.2.0 开始 去旅游 结束

选择结构

选择结果需要有条件来使程序分支执行,条件成立时和条件不成立时程序会走不同的路径

Created with Raphaël 2.2.0 开始 去旅游 下雨? 去 不去 yes no

循环结构

循环结构顾名思义,就是需要重复执行某个操作,分为有条件的循环和无条件的循环。有条件的循环在条件成立或者不成立时循环就要停止,而无条件的循环会一直循环下去,直到程序被强制结束。
比如上面的例子,如果下雨我就等待,一直等到不下雨为止

Created with Raphaël 2.2.0 开始 去旅游 下雨? 等待雨停 去旅游 yes no

输入、输出 Input/Output

  • 输入与输出是计算机的基础功能,方便我们与计算机互动。
  • 输入就是我们要通过什么方式告诉计算机做什么;输出就是计算机告诉我们它做了什么。
  • 常见的输入设备包括鼠标、键盘、麦克风、摄像头、手写板、触摸屏、游戏手柄等,这些设备都是要捕捉人类的操作,把这些操作变成指令传递给计算机。
  • 常见的输出设备包括显示器、打印机、耳机等,这些设备将计算机的工作展示给我们。

在scratch中,可以捕捉我们的输入的操作有很多,
【scratch】class_5_编程基础知识_第12张图片
关于这些命令的应用,在之前的小游戏中已经介绍过,在此不做赘述。
参看以前的小游戏

这里主要说一下“询问”和“说”的命令,它可以帮助我们和计算机进行“对话”,程序需要根据我们的输入进行判断时,就需要询问
【scratch】class_5_编程基础知识_第13张图片

此外还有录音的功能,可以把我们自己的声音用在作品当中
【scratch】class_5_编程基础知识_第14张图片

I/O

Input/Output的简写,I/O可以简单的理解为文件的导入和导出,这也是输入和输出的一部分。大部分的计算机软件都有I/O的功能,以帮助我们处理文件。

我们曾经说过,计算机是用来处理数据的,而数据在计算机上的具体表现,就是数据文件。一段文字,一张图片,一个视频,都是文件。可以说我们处理数据,其实就是在处理各种数据文件(当然也不是所有的数据都会生成文件,比如网络IO,这个以后再说)

在scratch中,我们保存自己的作品到电脑上,就是导出文件;而从电脑中上传,就是导入文件。
此外,我们导入一张图片作为背景或者角色,导入声音作为素材,都是导入文件。
【scratch】class_5_编程基础知识_第15张图片
角色也是可以导出的,而且导出的角色中不止包含造型,还包含代码,比如我们把曾经做过的打砖块游戏中的“砖块”角色导出
【scratch】class_5_编程基础知识_第16张图片
注意,导出操作可能会出现下面这个错误,但是并不妨碍导出结果的生成,只要忽视它就好了
【scratch】class_5_编程基础知识_第17张图片
他会生成一个.sprite3为后缀的文件,我们可以在别的项目中导入这个角色,就连它的代码一起导入了
【scratch】class_5_编程基础知识_第18张图片
所以这个功能可以帮我们复制我们写过的复杂的代码,复杂的东西写一遍就可以了,以后只需要不断的完善

甚至列表也是可以导入和导出的,比如我们把上面例子中1-100以内的3的倍数的单数全部导出。
【scratch】class_5_编程基础知识_第19张图片
我们也可以按照它的格式,自定义一个列表然后导入进来,比如我们随便写一个偶数数组
【scratch】class_5_编程基础知识_第20张图片
然后建立一个空的列表,就可以导入这个数组了


监听 Listening

监听是一个被广泛应用的计算机功能,但是可能有很多同学没有听说过。比如上面讲到的大部分输入操作,都要用到监听的功能。

简单来说,监听就是计算机一直在“监视”你的操作,一旦你做了某个操作,它必须立即回应你。比如你按下键盘鼠标,程序就“看到”你按下了键盘鼠标,它就会有动作。

scratch中的监听大概分为以下三类,一般监听事件都要用到无限循环操作。

键盘鼠标

顾名思义,监听我们的键盘鼠标操作
【scratch】class_5_编程基础知识_第21张图片

想一想,为什么我要在程序中加一个“等待0.2”秒的操作

消息广播

这个功能之前在打砖块的游戏中用到过,当球碰到砖块时,我们通知球转向。
【scratch】class_5_编程基础知识_第22张图片
【scratch】class_5_编程基础知识_第23张图片
这里我们再做一个小功能,令一名老师问一个学生100以内的加法,看是否能回答正确

  • 老师的代码
    【scratch】class_5_编程基础知识_第24张图片
  • 学生的代码
    【scratch】class_5_编程基础知识_第25张图片
  • 效果是这样的
    【scratch】class_5_编程基础知识_第26张图片

事件

其实鼠标键盘操作都可以称为事件。scratch中还提供了很多其它的事件,比如:
【scratch】class_5_编程基础知识_第27张图片


函数 Function

在编程过程中,对于一些复杂的逻辑编码,我们希望它们能够被重复应用。于是我们把它们“打包”成一个个的代码块,这种被打包的处理某个复杂逻辑的代码块就叫做函数
函数有几个要素:函数名,参数,返回值
scratch中通过自定义积木,实现了函数的功能。
我们自定义一个判断输入年份是否是闰年的函数
【scratch】class_5_编程基础知识_第28张图片
可以看到,我们的回答作为参数传递到了函数内部进行计算。所以,对于使用函数的人来说,他不用关心函数内部的实现方法,他只需要关心的在使用函数时传递正确的参数。

当然一个函数是可以传递多个参数的,比如我们定义一个计算两数相加或者相减的函数,当布尔值传入true时就把两数相加,传入假时就把两数相减
【scratch】class_5_编程基础知识_第29张图片
【scratch】class_5_编程基础知识_第30张图片
有同学可能注意到自定义积木时有一个选项是“运行时不刷新屏幕”,这个功能是干什么的呢?
要回答这个问题我们可以看一下之前做的打砖块小游戏,还记不记得在绘制砖块的克隆体时出现了一个现象,就是30个砖块的克隆速度其实很慢,是一个一个克隆出来的,以至于球都飞出来了,砖块还没有克隆完。那这个问题怎么解决呢?【scratch】class_5_编程基础知识_第31张图片
我们可以把砖块克隆的代码打包成一个函数,然后勾选执行时不刷新屏幕,就可以解决这个问题了
【scratch】class_5_编程基础知识_第32张图片
修改后可以试一下,发现30个砖块被瞬间克隆出来。原因是,克隆时,会重新绘制舞台,这很耗时间,所以把重绘舞台关闭就节约了时间。

一个函数执行结束后,是可以有返回值的,可惜的是,scratch中并不提供这样的功能,以后再讲其它编程语言时,会再提及

以上就是关于编程的一些基本知识,对于从没有接触过编程的同学来说,还是很新鲜的,希望同学们在学习scratch的过程中可以掌握这些知识。

你可能感兴趣的:(scratch)