# 积木的形状
在其他编程语言中, 一般通过使用不同的符号来表示"数据类型", 通过段落缩进来表示一个"代码块/代码意群". 比如下面的 Python 程序:
conditions = [True, False]
for condition in conditions:
	if condition:
		print("Branch A")
	else:
		print("Branch B")
 1
2
3
4
5
6
7
2
3
4
5
6
7
上面的 Python 程序中:
- 用 
[ ]表示"列表"数据类型 - 用 
""表示"字符串"数据类型 - 用段落缩进来标识"代码块"
 conditons是自定义的"变量名"True,False,ifelseforin... 在 Python 中有特殊的含义, 不能作为"变量名". 但是它们没有特殊的符号标识, 只能靠使用者自己记住
而在 Scratch 中, 不是使用"符号"和"段落缩进"来标识具体功能, 而是使用具象的"积木形态"来暗示具体功能. 这是因为:
- 积木是孩子常见的、喜闻乐见的玩具
 - 积木之间可以契合拼插, 很形象地寓意代码之间的连接关系
 - 大脑的图像记忆比文本记忆强大, 因此, 孩子可以通过积木形状和颜色的线索, 迅速识别代码的功能
 
# 3 大类
Scratch 的"代码积木"可以大致分成 3 大类:
| 名称 | 用途 | 形状 & 图示 | 
|---|---|---|
| 帽子积木 Hat blocks  |  帽子形状. 用在脚本的起始位置, 表示触发脚本运行的前提条件  |  |
| 堆栈积木 Stack Blocks  |  上有凹槽下有凸起. 表示镶嵌到脚本中  |  ![]() ![]() ![]()  | 
| 信息积木 Reporter Block  |  上下平坦, 头尾是"菱形"或者"圆形". 表示"变量", 用于保存数字、字符串、运算. 用于运算时, 会返回结果  |  ![]()  | 
# 6 小类
除了上述的 3 大类, 还可以细分成 6 小类:
| 形状 | 含义 | 图示 | 例子 | 
|---|---|---|---|
| 帽子形 | 顶部像帽子, 暗示前面无法放置其他积木, 只能用在脚本的起始位置.  这类积木用于表示触发脚本运行的前提条件. (此类共有 11 个)  |  ![]()  | |
| 凹形 | 顶部凹陷, 底部平坦, 暗示前面需要连接积木, 而后面无法连接.  这类积木用于脚本的末尾. (共有 2 个, 都在"控制类"积木中)  |  ![]()  |  ![]()  | 
| "C" 形 | 一种"分支"结构, 形似字母 "C". 分支的顶部和底部都有凹凸结构, 暗示需要把自己嵌入到其他积木, 且自身内部需要嵌入积木.  这类积木用于表示"流程控制" -- "条件判断"或者"循环". (共有 5 个, 都在"控制类"积木中)  |  ![]()  |  ![]()  | 
| 凹凸形 | 顶部凹陷, 底部凸起, 暗示镶嵌在前后积木中间. 这类积木用于放在脚本的中间 (共有 77 个, 是最常见的积木类型)  |  ![]()  |  ![]()  | 
| 菱形 | 上下平坦, 头尾菱形, 暗示镶嵌在积木内部 这类积木表示"布尔值[1]", 主要用于"流程控制" -- "条件判断"或者"循环" (共有13个)  |  ||
| 椭圆形 | 头尾是椭圆形. 这类积木暗示镶嵌在积木内部, 表示"数字"和"字符串" (共有 37 个)  |  ![]()  |  
"布尔值"是编程语言中重要的数据类型, 总共只有两个值: "真(True)"和"假(False)". 比如说, 判断"空格键是否被按下?", 回答只有两种可能 -- "是"或者"不是", 对应着"真"和"假" ↩︎







