Loading...
墨滴

尤慕

2021/03/27  阅读:59  主题:极简黑

推荐一款给小朋友使用的可视化编程语言及练习网站

给小朋友使用的可视化编程语言及配套练习网站

文章最初发表自「背井」公众号:给小朋友使用的可视化编程语言及配套练习网站

如果产品和我说『给我画一个正方形』,我很可能回怼他/她说「没法画,你没说画多大的」。


现在少儿编程挺火的,我觉得少儿学编程,主要是训练「编程思维」。

我眼里的编程思维包含下面3点(我临时想的 😂 ):

  1. 追求问题的规范化。问题不能模棱两可,定义要清晰。(你也不想你理解的和他想表达的不一样,永远不在一个频道上。)
  2. 分而治之的思想。问题确定后,要会把大问题切分成小问题;解决时,也要学会分步骤地进行处理。
  3. 日常工作的自动化。程序很多时候就是为了代替人工,解决一些重复枯燥的问题。学会编程后,一些重复要做的事你会想方设法用程序来解决它。

同样以画一个正方形为例,知道画多大(即边长是多少)是一方面(规范),而怎么画则是另一个方面(分解),如果每天都画而且要画很多,你就会想着用程序自动处理了(自动化)。

画正方形,你可能会先定一个点,接着这个点画一条向上的直线,右转90度,再画一条直接,再右转90度,再画直线,...直到4条直线闭合,一个正方形才算完成。

这里的规范,就是「画一个连长为 X 的正方形」;而分解,则是基于正方形的特征(4条边长度相同,相邻2边垂直,4条边闭合),来一步一步地画线,自动化呢。。。你自己想。


今天推荐的语言就是训练编程思维的。语言名字叫 Shelly,配套的学习网站是 shelly.dev[1],。

以画正方形为例,如果一步一步地画,代码如下:

fw 100
right 90
fw 100
right 90
fw 100
right 90
fw 100

其中 fw前行(forward)right右转

代码要做的事是显而易见的,经过4次前行和右转 90 度,一个长度为 100 的正方形就形成了。

代码的执行结果:

仔细观察上面代码,发现出现了4次相同的 前行右转。有没有简化的书写方式呢(避免重复)?

Shelly 不仅能使用简单的 移动转向,还支持 循环控制 ,所以上面的代码可以改写如下:

repeat 4 (
    fw 100
    right 90
)

代码仍然比较直观: 将括号内的语句重复执行 4 次。

编程语言的强大还在于它支持函数,使得重复的操作可以进一步封装在一个可复用的指令中。

当你想画2个或更多个正方形时,将上面的循环语句复制粘贴总归是不好的。而使用函数,可以像下面这样写:

# 定义正方形函数
let squre = repeat 4 (
    fw 100
    right 90
)

# 画正方形
squre

# 向下面移动一点
up
bk 110
down

# 再画一个正方形
squre

它的运行效果是这样的:

上面的 squre 即是我们定义的「正方形函数」,而下面的代码则是对它的调用。(up、bk、down的作用,请感兴趣的读者自行学习)。

你可能会说,不是所有正方形都是 100 个长度,上面的函数可复用性比较差。

是的, Shelly 的设计者也想到了这点,所以它还支持给函数传递参数,比如把长度传给函数。(请自行学习)

(其实 Shelly 内置了画正方形的函数 square,这也是为什么我上面的函数名叫 squre,防止和内置的冲突了。)


介绍就说到这里,下面给一些实际使用效果。

用 Shelly 画六边形
用 Shelly 画六边形
画风车
画风车
画长廊
画长廊
画螺纹
画螺纹

以及一个简单的圣诞树:

初看时,你可能会有畏难情绪,其实他们都是通过 移动、转向、循环一步一步完成的。有了这些基石,孩子的逻辑分解能力必会有所提高。

赶快学一学并把它教给自己的孩子吧!

参考资料

[1]

shelly.dev: https://shelly.dev/

- END -

尤慕

2021/03/27  阅读:59  主题:极简黑

作者介绍

尤慕