课程E-循环2-嵌套循环和计分板

这节课介绍了一个复杂的循环和迭代的示例。

  • Computer science
  • looping
Print lesson
  • 年龄 9+
  • 65+ 分钟
  • JavaScript Blocks

介绍

这节课介绍了一个复杂的循环和迭代的示例。 建议你在尝试这节课程之前先把这个系列关于循环的第一节课“循环和动画”学完。 如果学生感到学习吃力,那么他们可能需要先回顾一下那节课。

当“循环和动画”只有一个循环时,这节课有一个嵌套的循环和一个简单的循环。

在这节课中,我们将尝试做一个计分板。我们的计分板会通过点亮LED灯来显示得分。因此,如果4颗LED灯被点亮,则得分是4。

老师们可能需要考虑这节关于嵌套循环课程的以下几点:

  1. 让学生们追踪外循环处于哪个数值或迭代中,以及内循环在做什么。 当老师运行代码的时候,他们可以用纸和铅笔或者按钮或者其他什么东西记录。 记住循环的起始值是0,因此这毫无疑问会让学生们在开始的时候感到困惑。
  2. 嵌套循环有很多种解释。 其中一个相关的解释是数学中的十位数。 如果你用这个数学例子来举例的话,那么十位数将是外循环,个位数将是内循环。 外循环的每个迭代将会有10个1。 如有需要,请参考这个例子
  3. 
    basic.forever(() => {
        for (let Tens = 0; Tens <= 9; Tens++) {
            for (let Ones = 0; Ones <= 9; Ones++) {
                if (Ones + 1 < 10) {
                    basic.showNumber(Ones + 1)
                }
            }
            basic.clearScreen()
            basic.pause(500)
            basic.showNumber(Tens + 1)
            basic.showString(" Tens")
        }
    })
          
  4. 试着也用现实生活中的例子来解释,例如:刷牙。 大多数人一天刷三次牙。 外循环可能是天数,内循环肯能是在某一天你刷牙的次数。 外循环可能会经历7次,内循环可能会经历3次。
  5. 这些挑战和问答题将引导学生找到一个方向的答案。 例如:一个问题可能会让你用右侧的LED灯来显示得分。 但是,如果你忽略了这一点,那么你肯能至少有两种方法在我们的计分板上显示正确的得分。 左侧或者顶部区域可能是显示得分的最显眼的地方。 你可能希望通过改变得分显示的位置来考考学生们,让他们寻找其他方法获得所需的分数。 这就是独立练习里面的要求,所以这样做可以帮助他们提前做好准备。 最终目标是让学生们体验这些循环是如何相互作用。 还有比这(对同一个问题给出多个答案)更好的方法吗?
  6. 你可能想通过显示你将要得分的东西来真正进入主题。 组织一次真正的竞赛,让学生们自己制作分数和他们的竞争对手对比。 然后,他们就能够创作出一个故事,告诉大家比赛中发生了什么或者他们游戏的得分。

我们的micro:bit课程是根据Code.org CS 基础课程知识应用而量身定做的。 在学生们开始这些课程之前,我们鼓励学生们首先完成所有的CS基础知识。 学生们应该熟悉Code.org CS基础课程中的循环。

背景知识

强烈鼓励学生们优先完成以下操作:

强烈鼓励老师优先完成以下操作:

教学指南

打开

课堂活动

你将需要这些:

  • 1块micro:bit
  • 1根USB线
  • 1个AAA电池组(可选)
  • 2节AAA电池(可选)

编写文本

for (let index = 0; index <= 4; index++) {}

for

按规定次数运行部分程序。

basic.forever(() => {})

forever

在后台持续运行一部分程序。


let item = 0
item = 0
            

setItem

用一个等号让一个变量存储你指定的数字或字符串。

led.plot(0, 0)

绘制

在LED屏幕上点亮指定的LED灯。

4个步骤

指导练习

我们将在网上提供micro:bit教程或代码示例。接下来,去到https://makecode.microbit.org

let Column = 0
let Row = 0
Row = 1
Column = 4
basic.forever(() => {
    for (let RowCounter = 0; RowCounter <= Row; RowCounter++) {
        for (let ColumnCounter = 0; ColumnCounter <= Column; ColumnCounter++) {
            led.plot(ColumnCounter, RowCounter)
        }
    }
})

这段代码中有两个循环。

这两个循环组成了一个嵌套循环。这意味着这段代码中有一个循环,而循环中又有另外一个循环。

外循环显示了LED的行数。在当前的状态下,代码会经过2次。(0, -1)

最后,这里有一个内循环,代表了LED的列数。在当前状态下,代码将会点亮每排的5颗LED灯。(0, -4)

我们的任务是取得一些成绩。 你选择主题,我们来获取得分。 它可能是任意一种比赛,你可以挑选一个学生们最喜欢的主题让活动变得更加有趣。 比如说:冲浪比赛、棒球比赛、狗狗比赛,或者甚至是一个烘培比赛。 Micro:bit将会是计分板。 每个得分将会通过被点亮的LED灯显示出来。

在此查看完成后的代码。

挑战

挑战1

将得分变成9分。试着尽可能地将你的分数显示在micro:bit的左边。

查看代码

let Column = 0
let Row = 0
Row = 2
Column = 2
basic.forever(() => {
    for (let RowCounter = 0; RowCounter <= Row; RowCounter++) {
        for (let ColumnCounter = 0; ColumnCounter <= Column; ColumnCounter++) {
            led.plot(ColumnCounter, RowCounter)
        }
    }
})
          

在此查看完成后的代码。

挑战2

将得分变成15分。试着尽可能地将你的分数显示在micro:bit的左边。

查看代码

let Column = 0
let Row = 0
Row = 4
Column = 2
basic.forever(() => {
    for (let RowCounter = 0; RowCounter <= Row; RowCounter++) {
        for (let ColumnCounter = 0; ColumnCounter <= Column; ColumnCounter++) {
            led.plot(ColumnCounter, RowCounter)
        }
    }
})
          

在此查看完成后的代码。

挑战3

将得分变成16分。

查看代码

let Column = 0
let Row = 0
Row = 3
Column = 3
basic.forever(() => {
    for (let RowCounter = 0; RowCounter <= Row; RowCounter++) {
        for (let ColumnCounter = 0; ColumnCounter <= Column; ColumnCounter++) {
            led.plot(ColumnCounter, RowCounter)
        }
    }
})
          

在此查看完成后的代码。

挑战4

显示最佳得分25分。试着尽可能地将你的分数显示在micro:bit的左边。

查看代码

let Column = 0
let Row = 0
Row = 4
Column = 4
basic.forever(() => {
    for (let RowCounter = 0; RowCounter <= Row; RowCounter++) {
        for (let ColumnCounter = 0; ColumnCounter <= Column; ColumnCounter++) {
            led.plot(ColumnCounter, RowCounter)
        }
    }
})
          

在此查看完成后的代码。

独立练习

在开始之前,选择一个目标分数,并将它告诉老师。 试着用两种不同的发放来显示这个数字。 你可能需要写下你的解决方案直到你找到了两种方法,然后叫老师过来看看你的作品。 将它变成两种事物或者两个人之间的竞赛,并创作一个故事来验证得分。

问答

问题 1

现实生活中有哪些情景可以用到嵌套循环?

显示答案

答案是多种多样的。例如:一首歌。词是外循环,曲是内循环。先唱词然后再唱曲...不断重复。

问题 2

显示一个奇数容易吗?

显示答案

容易。有几种方法。其中一种是只显示第一排或者是第一列。那这个奇数就会是5。

问题 3

为什么要使用循环呢?

显示答案

循环用于重复程序中的某个特定位置的代码。

Selecting this opens external content from our support system, which adheres to their privacy policy.