- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 20 章 循环
第 20 章 循环
计算机最擅长做的事情就是“重复” ——像⼉童⼀样不厌其烦地重复做⼀件事,⽽且重
复的速度很 ,可以在1毫秒内列出你的全部Facebook好友。
本章将学习如何⽤有限的⼏个块来编写可以重复执⾏的程序,⽽不必反复拷贝粘贴同
⼀段代码;还将学习与列表有关的操作,如给电话号码列表中的每个号码发送⼀条短
信,以及为列表项排序。通过学习,你将了解到如何⽤循环块来有效地简化程序。
控制程序的执⾏:分⽀及循环
在前⼏章中,我们学习了⽤⼀组事件处理程序来定义应⽤中的⾏为:事件以及对事件
做出响应的函数。在这些响应函数中,程序通常不是按照线性的顺序执⾏,有些程序
块只能在满⾜某些条件时才能执⾏。
重复块是程序的另⼀种⾮线性运⾏⽅式。就像if及ifelse块让程序产⽣分⽀⼀样,重复
块让程序循环执⾏,换句话说,在执⾏完⼀组指令后,重新跳回到这组指令的起点并
再次运⾏,如图20-1所⽰。在应⽤的运⾏过程中,内部的计数器会跟踪即将执⾏的下
⼀步操作,因此,对于整个事件处理程序来说,从头⾄尾的每⼀步操作都在程序计数
器的监控之下 (有条件地)完成。程序计数器随着这些重复执⾏的块循环,不断地重
复这些功能。
图 20-1 让程序循环执⾏的重复块
在App Inventor 中有两种类型的重复块:foreach及while .foreach ,其作⽤是对列表中的
每⼀项实施某些特定的操作,如,向电话号码列表中的每个号码发送⼀条短信。
块while的应⽤⽐foreach要普遍,while块中的程序块会⼀直重复运⾏,直到某个条件
不再满⾜。while块可⽤于数学公式的计算,如求n个连续⾃然数的和,或求n的阶乘,
此外,while也可以⽤于同时处理两个列表;foreach每次只能处理⼀个列表。
使⽤foreach对列表实施迭代
在第18章⾥,我们讨论了⼀个“随机拨号”应⽤。这种随机拨打朋友电话的⽅式有时能
拨通,但如果你有⼀个像我这样的朋友,这种呼叫却不总是能得到应答。可以采取另
⼀种⽅式,给所有列表中的朋友发短信说“想你” ,然后看谁最先回复你 (或许还有更
令⼈愉 的⽅式 !)。
这个应⽤可以通过点击⼀次按钮向多个朋友发送短信,最简单的⽅法是,先写好发给
⼀个⼈的代码块,然后拷贝粘贴并修改接收⼈的电话号码,如图20-2所⽰。
图 20-2 拷 并粘贴向不同号码发送短信的块
如果只有少量的块,⽤这种“强⼒”的拷贝粘贴⽅式也还说得过去,但是像朋友列表这
样的数据表会时常变化,⽽你不希望每次添加或删除⼀个电话号码,都要动⼿去修改
程序。
块foreach提供了⼀个更好的解决⽅案,可以定义⼀个包括所有电话号码的列表变量
phoneN mberList ,然后⽤foreach块将发送⼀次短信的块包围起来,从⽽实现群发功
能,如图20-3所⽰。
图 20-3 使⽤foreach块对列表中的每⼀项执⾏同⼀套指令
上述代码可以解读为:
对于phoneN mberList列表中的每⼀项 (电话号码),设置Texting对象的PhoneN mber
属性为列表中的项,并发送该条短信。
对于foreach块,⼀个必须的参数是⼀个列表,它所要处理的列表,将列表插⼊“in
list”参数插槽。此时,从phoneN mberList变量的初始化块中拖出“get global
phoneN mberList”块,并插⼊“in list”插槽,以便为即将发送的短信提供电话号码列
表。
foreach块的第⼀⾏使⽤了foreach ⾃带的占位符变量,在默认情况下,变量名为item ,
你可以修改它,也可以就⽤默认值,该变量代表了列表中正在被处理的当前项。
foreach 中的所有块都将对列表中的每⼀项执⾏同样的操作,其中的占位符变量 (例⼦
中的phoneN mber )始终保存的是当前正被处理的项。如果列表中有三项,则foreach
中包含的块将被执⾏三次,这些块可以说是从属于foreach块,或处于foreach块的内
部,这些内部块执⾏到最后⼀⾏时,我们所说的程序计数器将要循环回第⼀⾏。
循环过程详细分析
我们来详细地分析⼀下foreach块的运⾏机制,因为理解循环是编程的基础。当点击
TextGro pB tton时,触发事件处理程序,⾸先执⾏的是“set Texting 1.Message to”块,
要将短信内容设置为“想你...” ,这个块只执⾏⼀次。
然后开始执⾏foreach块。在foreach 内部块开始执⾏前,
文档评论(0)