课程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
显示答案
哦...好的!