2021-3-8 22:55:17 [显示全部楼层]
597浏览
查看: 597|回复: 0

[Technovation] 【Technovation官方中文教程】 编程10 - 循环

[复制链接]
本帖最后由 szjuliet 于 2021-3-8 22:55 编辑

教程地址:https://bit.ly/TGirlsCN-Coding10
返回教程目录:https://mc.dfrobot.com.cn/thread-308465-1-1.html



编程10:循环
  
使用循环,这不仅是在代码复杂性课题中获取更多积分的一种方式,还有助于您学习应用程序函数、用户体验与设计。
  
  
本节课中,您将……
  
●    学习循环;
  
●    创建一款可用于生日聚会的应用程序。
  

  
关键术语与概念
  
  
●    循环 – 用于指令计算机连续数次执行某项操作(代码块)的一种方式。
  
●    for 循环 – 按一定次数重复运行一个代码块。
  
●    for Each循环 – 列表中一个项目对应重复运行代码块一次。
  
●    While循环 – 重复运行代码块,直到条件不再为真。
  

  
灵感 – 循环
  
  
本节课中,您将学习循环。循环是用于指令计算机连续数次执行某操作的一种方式。事实上,计算机擅长快速执行重复操作。
  
  
设想您需要按照要求连续书写自己的名字100次。这可能不仅需要您投入大量时间,还可能多次出错。但对于计算机而言,这堪称是一项完美的任务,可以毋庸置疑地快速完成,且不出现任何错误。您可以使用循环,利用计算机的这一特点。循环就是会重复运行的代码块。
  
  
循环包含两种类型,即“while 循环”与“for 循环”。While 循环一直重复运行代码块,直到条件不再为真。For 循环则按特定次数重复运行代码块。此外,您将学习for each 循环for 循环的其中一种类型,代表列表中的每项对应重复运行代码块一次。那我们就来逐一详细地学习吧!
  
  
For循环
  
  
For 循环将按一定次数重复运行代码块。其名称由来于您可以按照意愿,指令所开发的应用程序持续重复运行代码的次数。您可以将循环看作是指令应用程序“重复持续该操作17次”或“持续重复该操作5次”。
  
  
For 循环采用被称为计数器的变量,计数代码已重复运行的次数。通过设置计数器的开始与结束值,您就能控制循环重复的次数。此外,您要设置代码每重复运行一次,计数器的增加值。大多数情况下,您应设置循环每重复一次,计数器增加1。
  
使用App Inventor和Thunkable编写的循环如下所示:
  
  
   
App Inventor
   
Thunkable
   
image001.png
   
image003.png
  
  
  
number”所在的方框代表的就是计数器。虽然此刻,计数器表示的是number,但您也可以更改它。Number从1开始,将在等于5时停止。循环中的代码每重复运行1次,number增加1。因此,该循环所包含的代码将最多重复运行5次。此刻,由于do文本框中的内容为空,因此该循环不执行任何操作。我们通过一个例子来学习吧!
  
  
   
App Inventor
   
Thunkable
   
image005.png
   
image007.png
  
  
  
我们没有对循环中number 变量的值做任何修改,但在do文本框中添加了一些代码。循环每运行一次,应用程序将向用户发出一条内容为“hello”的提示信息。因此,用户会收到5次提示。应用程序利用该循环运行的方式如下所示:
  
image009.png
  
  
若希望向用户发送内容为“hello”的提示信息5次,可以使用该循环。不过,因为使用5个连续的提示代码块发送“hello”的提示信息也不难,因此,该循环对此情形的优势并不明显。但若希望向用户发送100次内容为“hello”的提示信息呢,该怎么办?这时,使用循环就比编写100个连续的代码块容易得多了。
  
  
让循环发挥作用的另一种方式,是在代码中使用计数器变量。事实上,循环每次运行都对应计数器变量不同的值,这非常实用。举例如下:
  
  
   
App Inventor
   
Thunkable
   
image011.png
   
image013.png
  
  
  
在该for 循环中,我们将变量number 添加到文本“hello”之后,从而在代码中用到了number这一变量。number每增加1,应用程序将运行一次,并发送不同的提示信息。应用程序当前采用该循环的运行方式如下所示:
  
  
image015.png
  
for each 循环
  
  
您可以在App Inventor和Thunkable中使用的另一种for循环实用类型如下所示:
  
  
   
App Inventor
   
Thunkable
   
image017.png
   
image019.png
  
  
  
该示例中,计数器变量名为item。同时,已设定按照列表中的项目数字重复该循环。任何时候,只要您需要按照列表执行操作,这些循环都非常有用。让我们假设您有一张数字列表,您希望对列表中的每个数字求和,并将结果存储为名为合计的变量。使用for each 循环执行该操作的方法如下所示:
  
  
   
App Inventor
   
Thunkable
image021.png image023.png
   
image025.png
  
  
  
循环每运行一次,numberList中的一个项目就会加总到变量sum中。列表中的每个数字都加总后,循环将自动停止。循环运行过程如下所示:
  
  
  
●    列表中有一个项目,开始循环。
  
○    全局合计 = 0 + 44
  
●    项目仍在循环中,重复循环。
  
○    全局合计 = 44 + 7
  
●    项目仍在循环中,重复循环。
  
○    全局合计 = 51 + 16
  
●    循环中没有余留项目,退出循环。
  
○   设定标签1文本为67
  
  
注意:您可能注意到本示例中的计数器变量与您在代码5: 变量 中学习的局部变量类似,种类众多。与局部变量一样,您只能在循环中使用计数器变量。
  
  
While循环
  
  
While循环指条件不再为真前一直持续运行的循环。其得名由来于只要条件为真,代码就会持续重复运行。您可以在需要指令所开发应用程序“当该条件具备,则重复该操作”,或“当该条件尚未变更,则重复该操作”时,使用该循环。
  
思考以下两个示例:
  
  
   
您将要举办一场聚会,希望全部宾客离场前,不断播放音乐。那么,您可以采用如下循环满足聚会要求:
   
●      当(现场宾客人数>0时)
   
●      执行:持续播放音乐
   
若还希望当聚会时间超过午夜后,停止播放音乐,该怎么办呢?您可以运用逻辑运算符,编程依据多重条件,用while循环终止音乐播放循环。现在,您可以采用如下循环满足聚会要求:
   
●      当(现场宾客人数>0)与(时间<午夜)时
   
●      执行:持续播放音乐
   
●      
   
此例中,只要全部宾客离场或聚会时间超过午夜,就会停止播放音乐。
   
  
  
为了使用while 循环,您需要设置用于循环开始且为真的条件。若开始条件为假,循环将不会运行。循环每次重复运行前,都会检查开始条件,以确保其始终为真。
  
  
SunMarch-202103077839..png
  
使用App Inventor编写的while 循环如下所示:
  
  
  
   
App Inventor
   
Thunkable
   
image029.png
   
image031.png
  
  
  
运行while 循环可能出错!若选择的条件在任何情况下均为真,那么任何情况下,您的循环都不会终止运行。这被称为无限循环。举例如下:
  
  
   
App Inventor
   
Thunkable
   
image033.png
   
image035.png
  
  
  
由于1始终等于1,任何情况下,该条件均为真。因此,在App Inventor中运行该代码时,我们的手机会出现死机,从而无法执行任何操作。此外,您可能收到内容为App Inventor Companion 应用程序已停止运行的信息。若正在编码,您将举步维艰!重启companion 应用程序后重试吧!
  

  
活动 - 您多少岁?
  
  
您参加过多少次生日聚会并听到生日歌播放……1次、2次、3次还是……?若从未听过,点击以下链接即可听到!
    
事实上,完整播放这首歌需要一些时间,尤其当寿星与视频中的祖父一样,年满98岁时。不过,我们可以在播放程序中使用循环,从而大幅提升播放速度。设想我们可以创建一款应用程序。寿星将年龄输入程序,程序就会播放生日歌!
  
在该活动中,您将创建一款可以用于生日聚会的应用程序。
  
您需要使用for循环
  
   
App Inventor
   
Thunkable
   
image037.png
   
image039.png
  
  
  
for循环计数的起数为1,止数为用户在文本框中输入的数字。循环每运行一次,计数器增加1。到这一步,代码就快要完成了。不过,程序还没有报告每次计数的年龄。因此,您还需要确定如何让该代码块每次报告计数的年龄。
    
陷入困境了吗?提示如下:
  
  
   
App Inventor
   
Thunkable
   
年龄是一个变量,将鼠标悬停在该变量上方,就能抓取代码块。
   
image041.png
   
   
年龄是一个变量,您可以从变量抽屉中找出该变量。 image043.png
  
  
  
  
App  Inventor延迟代码块含义
  
这款应用程序包含有名为延迟的一个子程序。
  
image045.png
  
运行延迟代码块,应用程序就有时间先报告一条信息后,再执行下一操作。尝试从您的for循环中删除该代码块,您会看到应用程序停止运行。其原因在于,应用程序运行该循环过快,因而没有时间用于每次报告年龄。
  
所以事实上,延迟代码块的作用是什么呢?
  
image047.png
  
该代码块调用名为延迟的一个子程序。您最初是在代码5:变量的计数应用程序中看到子程序的。子程序指具有名称,可供您重复用于不同环境的代码块。
  
延迟子程序首先创建一个名为TimeDelay的变量。Clock1.System Time表示当前秒数。然后,我们在当前秒数的基础上加1秒,从而获得未来1秒的时间,使变量TimeDelay等于与未来相距1秒的时间。
  
接下来,我们使用while 循环。while循环中的条件用于指令应用程序在当前时间与未来间隔不足1秒时,不执行任何操作。该条件保持为真一秒后,时钟恢复计时,for循环继续计数。运行该循环,应用程序就会等待1秒钟。
  

  
举一反三
  
  
本节课,您学习了for 循环while循环 for each 循环。此外,您创建了用到了两类不同循环的应用程序!
  
●    您认为能如何将循环用于所开发应用程序的最终版?
  
●    由此,您可能就如何构建应用程序的部分功能而萌生任何想法吗?
  

  
其他资源 - Hangman教程
  
  
App Inventor - Hangman教程(高级)
  
您希望练习使用循环编写更多代码块吗?您可以尝试学习Technovation校友詹妮弗•约翰编写的该教程。
    



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail