第 21 篇 定义过程.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 21 章 定义过程 像App Inventor这类的编程语⾔通常会提供⼀组基本的内置功能,对于app inventor来 说,就是⼀组基本块。编程语⾔还提供⼀ 功能扩展的⽅法,即,向语⾔中添加新的 ⼦程序 (块)。 【在计算机科学中,⼦程序 (英语:Subroutine , procedure , function , routine , method , subprogram ),是⼀个⼤型程序中的某⼀部份代码,由⼀个或多个语 句块组成。它负责完成某项特定任务,⽽且与其他代码相⽐,具备相对的独⽴性。 ——译者注】在App Inventor 中,通过定义过程 (procedure ),即,命名⼀些顺序执⾏ 的块,来实现功能的扩展。应⽤中可以像调⽤App Inventor 中的预定义块⼀样,调⽤这 些过程。本章中你将看到,创建这样抽象的过程的能⼒对于解决复杂问题是⾮常重要 的,这是创建真正好应⽤的基⽯。 当家长对孩⼦说“睡觉前去刷⽛”时,他们的实际含义是“从架⼦上拿起⽛刷⽛膏,向⽛ 刷上挤⼀点⽛膏,在每颗⽛齿上刷10秒钟 (哈哈 !)” ,等等。“刷⽛”就是⼀ 抽象: 为⼀系列的低级指令起⼀个公认的名称。此处,家长要求孩⼦完成他们已经认可了 的“刷⽛”的⼀系列指令。 你也可以在编程中创建这样的有名字的⼀系列指令,有些编程语⾔称之为函数 (function )或⼦程序 (subprogram ),在App Inventor 中,被称为过程 (procedure )。过程就是⼀组顺序执⾏的有名字的块,在应⽤中可以随时随地调⽤ 它。 图2 1-1就是⼀个过程的例⼦,它的功能是以英⾥为单位,计算两个G S坐标之间的距 离。 图 21-1 计算两点间距离的过程 不必急于探究这个过程中的内部构件,只要知道对于你所使⽤的编程语⾔来说,这样 的过程扩展了它的功能。如果每个家长每天晚上都要向他的孩⼦解释“刷⽛”的步骤, 那么这个孩⼦到了五年级可能还是不会刷⽛。说“刷⽛”是⼀ 更有效的⽅式,⽽且每 个⼈都会在睡觉之前去刷⽛。 同样的道理,在设计或编写⼀个⼤型应⽤时,⼀旦定义好了distanceBetween oints这个 过程,你就会忽略它的内部实现细节,⽽只是简单地使⽤ (或调⽤)它的名字。这 抽象能⼒对于解决⼤型问题来说是⾄关重要的,可以将⼤型的软件项⽬分解成若⼲个 便于管理的代码块。 过程还可以有助于减少错误,因为它们可以省去很多冗余的代码:只要在⼀处定义了 过程,应⽤中就可以随处调⽤它。因此,假如应⽤中要计算你的当前位置与其他10个 点之间的最近距离,你不必拷贝粘贴10次图2 1-1中的块,相反,你只需要定义这个过 程,并在需要时调⽤它即可。此外,那 拷贝粘贴块的⽅法还⾮常容易引⼊错误,因 为⼀旦你想修改程序,就必须找到所有的拷贝,并逐个以相同的⽅式修改它们。想象 ⼀下,你试图在⼀个有1000⾏或块的代码中,找到5-10个曾经粘贴过的代码块 !与其 被迫地拷贝粘贴这写块,不如⽤过程在⼀处将代码块封装起来。 最后,过程将有助于建⽴代码库,让这些代码在其他应⽤中可以被重⽤。即便是创建 ⼀个⾮常具体的应⽤,有经验的程序员总会在必要时设法考虑重⽤其他应⽤中的部分 代码。有些程序员从未创建过应⽤,他们只是专注与创建可重⽤的代码库,以便其他 程序员以此来创建他们⾃⼰的应⽤。 消除冗余 看⼀下图2 1-2 中的代码块,能否发现其中的冗余。 图 21-2 随⼿记应⽤中的冗余代码 这⾥的冗余代码指与foreach块有关 (实际上是整个foreach块以及它上⾯的set NotesLabel .Text to块),例⼦中的三个foreach 的作⽤都是显⽰笔记列表,只是使⽤的 场合有所不同:当添加新项、删除某⼀项,以及应⽤启动从数据库加载列表时。 作为⼀个有经验的程序员,⼀旦看到这样的代码,脑⼦⾥会⽴即敲响警钟,甚⾄不必 等到开始拷贝粘贴第⼀段程序中的代码,他们知道最好是将这些冗余的代码封装在⼀ 个过程⾥,这样既保证程序有很好的可读性,也可以使后来的修改变得容易。 因此,有经验的程序员会创建⼀个过程,将冗余代码块放在其中,并在原来使⽤冗余 代码的地⽅调⽤这⼀过程。应⽤的执⾏结果完全⼀样,但更易于维护,也让其他程序 员更容易地加以利⽤。这 代码 (块)的重新整理的过程成为重构。 定义过程 我们来创建⼀个过程,实现图2 1-2 中那些冗余代码的功能。在App Inventor 中,

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档