课程F-变量2-变量和情感

学生们用事件、变量和条件创建程序。

  • Computer science
  • variables
  • functions
  • conditionals
Print lesson
  • 年龄 10+
  • 90 分钟
  • JavaScript Blocks

介绍

这节课延续了课程“变量和计数器”。 “变量和计数器”主要讲解存储数字的变量,然而这里我们将会在我们的变量中存储文本或字符串。 字符串是字母数字字符, 但我们不使用它们来进行数学运算。 相反,我们主要用这些来显示文字。 此外,在变量中存储文字有时有助于使事物变得更容易阅读。

变量和我们的情绪一样是多变的。 这节课要求我们改变字符串变量。 我们将这样做来让我们的小弟弟开心。 你可以继续阅读以学习更多关于与本课主题相关的知识,但是要记住,我们的重点是字符串变量以及如何在micro:bit中操作他们。

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

强烈鼓励老师和学生们首先完成以上的课程资源。

教学指南

打开

课堂活动

你将需要这些:

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

编写文本

basic.forever(() => {})

forever

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


for(let i = 0; i < 5; ++i) {
  basic.showNumber(i)
}
            

for

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


basic.showString("Hello!")
            

showString

在LED屏幕上显示字符串。


basic.showNumber(0)
            

showNumber

在LED屏幕上显示数字。


let item = 0
item = 0
            

setItem

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


function doSomething()  {
    basic.showString("Hello!")
}

doSomething()
            

函数

函数可以让你在程序中创建一部分可以重用的代码。

4个步骤

指导练习

我们将在网上给出micro:bit的教程或代码。接下来,去到:makecode.microbit.org

let Result = ""
let What_to_give = ""
let Morning_Mood = ""
function How_Does_Baby_Brother_Feel_Now()  {
    basic.showString(Morning_Mood)
    for (let i = 0; i < 3; i++) {
        basic.showLeds(`
            . . # . .
            . . # . .
            # # # # #
            . . # . .
            . . # . .
            `)
        basic.clearScreen()
        basic.pause(250)
    }
    basic.showString(What_to_give)
    for (let i = 0; i < 5; i++) {
        basic.showLeds(`
            . . . . .
            . # # # .
            . . . . .
            . # # # .
            . . . . .
               `)
        basic.clearScreen()
        basic.pause(100)
    }
    if (Result == "Happy") {
        basic.showIcon(IconNames.Happy)
    } else if (Result == "Sad") {
        basic.showIcon(IconNames.Sad)
    } else if (Result == "Confused") {
        basic.showIcon(IconNames.Confused)
    } else if (Result == "Angry") {
        basic.showIcon(IconNames.Angry)
    } else {
        basic.showIcon(IconNames.Meh)
    }
}
basic.forever(() => {
    Morning_Mood = "Sad"
    What_to_give = "Toy"
    Result = "Happy"
    How_Does_Baby_Brother_Feel_Now()
})

想象一下你有一个小弟弟。 每个早晨,他的心情都不一样。 你在照看他并试着处理他的情绪。 你并不能总是成功地安抚他,但是你一直在尝试着。 对于他所表现出来的每一种情绪,你需要给他一些东西。 然后,你希望这些东西能让他开心,但是却总是不起作用。

在我们的程序中,我们将会用字符串变量来显示这些东西。一个输出的示例可能是:

悲伤 + 玩具 = 快乐

在这里,我们的弟弟醒来后很伤心。然后,我们给了他一个玩具。之后,他就开心起来了。

我们在forever循环中开始我们的程序。一个叫做“早上的心情”的变量被设置为Sad(悲伤)。第一个示例是小弟弟醒来后很伤心。

接下来是一个叫做“What_to_give”(给予物)的变量。 因为弟弟很伤心,所以你试着给他一个玩具。 最后是一个叫做“Result”(结果)的变量被设置成Happy(开心)。 给你的弟弟一个玩具来让他开心吧!

调用函数“How_Does_Baby_Brother_Feel_Now”(小弟弟现在的心情)来显示我们的字符串变量。这些变量将会在屏幕上滚动显示。

点击链接进入到起始代码。底部其他的积木块将帮助你开始。

在此查看起始代码。

注释:代码底部未使用的积木块将会在挑战赛里面用到。 此外,这里还有一个大函数叫做“How_Does_Baby_Brother_Feel_Now”(小弟弟现在的心情)。 这节课不会讲述这个函数或者你不必理解它。 这只是有助于使用一种更有意义的方式来显示我们的输出。 如果你想要探索它,那么就去做吧。 除非你可以忽略它。

变量和情感挑战

在此查看起始代码。

挑战1

改变这三个变量的值 (Morning_Mood, What_to_give, Result) 为小弟弟创造新的情景。你的故事要有意义。

注意:除了(开心、伤心、疑惑、或者生气)之外的任何结果都会显示一个咩的面孔哦!

查看代码
let Result = ""
let What_to_give = ""
let Morning_Mood = ""
function How_Does_Baby_Brother_Feel_Now()  {
    basic.showString(Morning_Mood)
    for (let i = 0; i < 3; i++) {
        basic.showLeds(`
            . . # . .
            . . # . .
            # # # # #
            . . # . .
            . . # . .
            `)
        basic.clearScreen()
        basic.pause(250)
    }
    basic.showString(What_to_give)
    for (let i = 0; i < 5; i++) {
        basic.showLeds(`
            . . . . .
            . # # # .
            . . . . .
            . # # # .
            . . . . .
            `)
        basic.clearScreen()
        basic.pause(100)
    }
    if (Result == "Happy") {
        basic.showIcon(IconNames.Happy)
    } else if (Result == "Sad") {
        basic.showIcon(IconNames.Sad)
    } else if (Result == "Confused") {
        basic.showIcon(IconNames.Confused)
    } else if (Result == "Angry") {
        basic.showIcon(IconNames.Angry)
    } else {
        basic.showIcon(IconNames.Meh)
    }
}
basic.forever(() => {
    Morning_Mood = "Hungry"
    What_to_give = "Bottle"
    Result = "Full"
    How_Does_Baby_Brother_Feel_Now()
})

饥饿 + 瓶子 = 咩脸..。我猜你弟弟还不饿呢。

挑战2

这次是在晚上。 除了给你弟弟一些东西,他想做一个活动。 重命名这两个变量(Morning_Mood, What_to_give)。 你应该给它们重新取一个有意义的名称。 我们的情境改变了,因此变量需要新的名称来显示这一点。 接下来,再次改变3个变量的值来为夜间的小弟弟创造一个新的情境。 你的故事要有意义。

查看代码
let Result = ""
          let Activity_to_do = ""
          let Night_Mood = ""
          function How_Does_Baby_Brother_Feel_Now()  {
              basic.showString(Night_Mood)
              for (let i = 0; i < 3; i++) {
                  basic.showLeds(`
                      . . # . .
                      . . # . .
                      # # # # #
                      . . # . .
                      . . # . .
                      `)
                  basic.clearScreen()
                  basic.pause(250)
              }
              basic.showString(Activity_to_do)
              for (let i = 0; i < 5; i++) {
                  basic.showLeds(`
                      . . . . .
                      . # # # .
                      . . . . .
                      . # # # .
                      . . . . .
                      `)
                  basic.clearScreen()
                  basic.pause(100)
              }
              if (Result == "Happy") {
                  basic.showIcon(IconNames.Happy)
              } else if (Result == "Sad") {
                  basic.showIcon(IconNames.Sad)
              } else if (Result == "Confused") {
                  basic.showIcon(IconNames.Confused)
              } else if (Result == "Angry") {
                  basic.showIcon(IconNames.Angry)
              } else {
                  basic.showIcon(IconNames.Meh)
              }
          }
          basic.forever(() => {
              Night_Mood = "Bored"
              Activity_to_do = "Play Ball"
              Result = "Sad"
              How_Does_Baby_Brother_Feel_Now()
          })
          

从这个例子看来,小弟弟似乎不喜欢打球。 为了得到满分,我可能需要解释一下。因为这个小孩好像不喜欢打球,这似乎很奇怪。

挑战3

在forever循环中删除引用的函数“How_Does_Baby_Brother_Feel_Now”。 作为替代,连接显示字符串的代码积木块来显示你的输出。 通过连接积木块,我们将两个字符串变量放在一起,而不是使用那个大函数。

提示:用添加到程序底部的其他积木块。

查看代码
let Result = ""
let Activity_to_do = ""
let Night_Mood = ""

basic.forever(() => {
    Night_Mood = "Bored"
    Activity_to_do = "Play Ball"
    Result = "Sad"
    basic.showString("" + Night_Mood + Activity_to_do + Result)
})

注意: 在这一点上, 学生变量会有所不同, 所以代码可能会有点不同。重要的是结果。

独立练习

将两个词放在一起创作出一个更大的词。 这就是复合词。 用函数“How_Does_Baby_Brother_Feel_Now”来连接,或者一些其他的方式来结合两个文本变量。 试着给变量重新取一些有意义的名称,将你的两个词存储到其中。

示例-一些你可能会创作的词,例如:(play + ground = playground)或者(tree + house = treehouse)。用来给变量命名的名称可能是第一个词和第二个词。

注意:结果不一定是一个真正的复合词。如果你可以的话,就创作你自己的词(像“headfork”)吧。然后,尽情地告诉大家你的新词的含义或者它是怎么创造出来的。

问答

在活动和挑战上使用这些问题。

问题 1

我们用变量来干什么呢?使用变量的目的是什么?

显示答案

答案可能多种多样,但是变量是一个存取数据的地方。

问题 2

将文本变量放在一起的一种方法是什么?

显示答案

连接方式可以将两个或者多个文本(字符串)变量放在一起。

问题 3

下面的输出代码是什么?

set variable to "yes"
set variable to "no"
set variable to "maybe"
set variable to "oh... ok!"

show string variable
显示答案
哦...好的!
Selecting this opens external content from our support system, which adheres to their privacy policy.