Scratch 编程

Scratch

计算机是一种输入/采集、存储、处理和输出数据的机器。数据通过键盘、鼠标、摄像头、传感器输入/采集,被存储于硬盘和内存中,通过 CPU 进行运算处理,最后通过屏幕、打印机、扬声器、机器臂等设备输出。这些数据可以是数字、文本、图像、声音等各种形式。无论是科学计算、媒体处理、数据分析、通信还是娱乐,计算机都扮演着关键的角色,它们能够以极快的速度和准确性处理数据。

仅从“输入-存储-计算-输出”模型上看,人类与计算机是一样的,人类通过眼睛、鼻子、皮肤和舌头等各种器官采集数据,通过大脑存储和计算数据,然后通过嘴巴、四肢及其他身体部位响应大脑计算好的数据。人类与机器的最大区别在于人类拥有自主、感知、智能、情感、创造力和伦理判断等高度复杂的特征,而机器只是工具,受限于编程和数据,缺乏这些特征。

机器能学习,独立思考问题和解决问题,拥有自我意识,有自己的价值观和世界观体系,有和生物一样的各种本能(比如生存和安全需求)等待一系列,这被称为人工智能 AI (Artificial Intelligence)。人工智能普遍用于自动驾驶、人脸识别、语音识别、聊天机器人等场景,现阶段人类还未到达强人工智能(Strong AI)时代。

语言是用来交流表达的,不管是自然语言还是计算机语言。人类之间通过自然语言进行交流,人类与计算机通过计算机语言交流,为计算机编写程序(编程),程序是一系列指令的集合,它告诉计算机要做什么。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
type Fibonacci<
T extends number,
TArray extends ReadonlyArray<unknown> = [unknown, unknown, unknown],
PrePre extends ReadonlyArray<unknown> = [unknown],
Pre extends ReadonlyArray<unknown> = [unknown],
> = T extends 1
? 1
: T extends 2
? 1
: TArray['length'] extends T
? [...Pre, ...PrePre]['length']
: Fibonacci<T, [...TArray, unknown], Pre, [...Pre, ...PrePre]>

type Result = Fibonacci<6> // 8,(1 + 1 + 2 + 3 + 5 + 8)

计算机语言有很多,大部分程序都是基于文本的,比如 C、Python…,Scratch 是 MIT 开发的一款可视化图形编程语言,以搭积木的形式编写程序,这让学习编程更加容易和有趣。

Scratch 语法

积木是 Scratch 语法的最基本要素,不同的积木代表着不同的编程命令、操作和功能,类似于文本语言中的语句或表达式。积木分为十大模块,运动、外观、声音、事件、控制、侦测、运算、变量、自制积木、扩展积木,按功能又分为命令积木(语句)和功能积木(表达式)。积木可以传参,凹槽的形状决定了参数的数据类型。

命令积木用于控制程序的流程和执行命令。包括流程控制、事件触发、改变程序状态(如移动到某个位置)等积木。功能积木用于执行计算或操作。包括数学运算、逻辑运算、变量操作。功能积木有返回值,可作为参数传递给功能积木或命令积木。功能积木有两种形状,六边形和圆角,前者返回布尔类型值,后者返回数字或字符串类型值。

流程控制

流程控制是编程的最基础要素,循序指重复做一件事情。日常生活等红绿灯、跳绳、购物、穿着选择都是最常见的例子。

注:Scratch 中的循环即支持 for 也支持 whilewhile 循环更加灵活,适用于循环次数不确定的情况,而 for 循环更适用于已知循环次数的情况。

运算

Scratch 支持的运算包括,算术运算、比较运算、逻辑运算、字符运算(连接、charAt、length、includes)、Math 运算(取余、四舍五入、绝对值等)。运算符(operators)和操作数(operands)组成的一组代码被称为表达式(Expression)。

变量

变量用于存储和表示数据或值。可以理解为一个盒子,其中可以存放不同类型的物品,每个盒子有一个名称,可以通过名称来查找或更改盒子里的内容。变量有两种作用域,私有变量和全角变量,私有变量适用于当前角色,全角变量使用于所有角色。

注意:变量不支持布尔类型的赋值,可通过 01 代替。

数据类型

在 Scratch 中支持的数据类型包括:数字、字符串、布尔、列表。

函数

在 Scratch 中,函数通过自定义积木实现,用于封装一段脚本。自定义积木不能跨角色共用,且只支持参数不支持返回值,返回只能通过变量解决。

注意:形参可通过拖拉的方式应用到对应的地方使用。

GUI 编程

在 Scratch 中,对角色或舞台进行编程,脚本必须在角色或舞台下,脚本可不可以应用到多个角色。

运动

角色的中心点(中心点是针对角色的,每个角色都有中心点,跟位置不同,中心点一般用来描述运动的基点)和角色的位置。

外观

外观不但可用来打印输出结果,也可以控制背景、角色、角色造型的显示。

事件

GUI 编程的核心是事件。Scratch 除了支持常见的鼠标事件外,还支持发布与订阅式的自定义广播事件,这在角色间通信非常方便。

侦测

侦测积木实际上是一种事件监听的机制。这些积木用于检测特定的事件或条件,然后触发相应的操作或行为。类似于文本语言中的事件监听器。

扩展积木

扩展积木是 Scratch 内置的,包括画笔、音乐、翻译等。

综合练习