
许多人都熟悉 Scratch,这是一种儿童编程环境,其中的学习通常归结为按照“从简单到复杂”的原则创建创意项目。 与此同时,在 Scratch 中学习编程的“经典方法”(变量 → 分支 → 循环 → 函数 → 结构 → 对象 → …)是困难的。
然而,改变结构化、面向对象和面向事件编程的概念(让我们称之为概念)的学习顺序,将它们隐藏在彩色精灵和交互式动画后面,并不意味着不应该强调这些概念。 特别是如果目标不是发展创造力而是学习编程。 我试图在我的作品中反映这个想法 .
初学者首先遇到的就是精灵。 尽管 Scratch 本身没有面向对象的编程,但精灵可以被视为对象。 在此阶段,学生看到一个程序可以有许多对象,这些对象的行为由外部脚本控制。 精灵按需接收命令或传输有关其状态的信息,也就是说,编程归结为管理对象。
年轻程序员在 Scratch 中立即感受到的第二件事是多线程的概念。 每个精灵可以同时运行多个脚本。 多个精灵也可以同时运行它们的程序。 而且,组织顺序执行变得更加困难。


在第一课中我们就不可避免地要熟悉循环。 不然的话,猫也不会真的跑掉。 在这个阶段,认识必须是直觉和肤浅的。 我们将其限制为“始终重复”和“重复...次”循环,这更容易理解。 条件循环在专门讨论循环的课程中进行了研究。 本课程假设您了解布尔表达式和变量。
由于 Scratch 是一个事件驱动的环境,因此条件语句块在变量之前更容易学习。 该条件可以是某些事件。

在我看来,这个顺序更好,因为每节课我们都会介绍最少的概念。 不是抽象的,而是我们立即看到它们的实际好处。
如果你首先研究变量,那么它们的目的和好处很难证明,因为之前没有研究过条件运算符、数据输入和随机数生成。
在Scratch中,不包括列表,程序员会遇到三种类型的数据:数字、字符串和布尔值。 在这种情况下,类型绑定到值,而不是变量。 无需将字符串与数字相互转换。 字符串不加引号。
返回布尔值并具有特征角度形状的块可以插入到圆形字段中。 反之则不然:在假定布尔表达式的情况下,不能插入常规变量。

实施了 Scratch,以便在执行过程中不会发生严重错误。 显然这就是为什么,如果您尝试在算术运算中使用字符串,它会被零替换(请参见第一个屏幕截图)。
程序员应该知道编程语言的功能是通过库来扩展的。 在 Scratch 中工作,学生可以连接导致环境中出现新命令的添加内容。

Scratch 中的功能在“其他块”部分中实现,一方面您可以创建自己的块,可以将其插入其他脚本中。 另一方面,我们必须收集这个块的功能,即它会做什么。

暂存函数没有返回值。
因此,在事件驱动的环境中学习编程概念会留下痕迹。 本质上,我们首先研究更复杂和抽象的概念,只有当我们深入研究这个过程时,我们才会转向结构化编程的元素。 对于初次相识来说这是优点还是缺点还是一个有争议的问题。
来源: habr.com
