- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 18 章 程序中的决策:条件块
第 18 章 程序中的决策:条件块
即使是像⼜袋⾥的⼿机这样⼩型的电脑,也可以在短短⼏秒钟内完成超过数 次的操
作。更令⼈惊奇的是,它们可以基于内存中的数据以及程序员编写的逻辑进⾏决策。
这种决策能⼒在⼈们所思考的⼈⼯智能问题中是极为关键的要素,当然也是创建有趣
的智能应⽤的重要组成部分。本章将探索如何在应⽤中编写判断选择逻辑。
正如我们在第14章所讨论的,应⽤的⾏为由⼀系列的事件处理程序所定义。每个事件
处理程序针对某个特定事件进⾏响应,并实现特定的功能。然⽽,这种响应的过程未
必是按线性顺序来实现各项功能,有些功能只能在⼀定条件下才能执⾏。像游戏类的
应⽤可能就会判断分数是否已经达到了100 ,⽽位置感知类的应⽤可能会问“某个⼿机
是否在某个建筑物的范围之内” 。你的应⽤也可以询问类似的问题,然后根据答案,
继续执⾏不同的程序分⽀。
如图18-1,当事件 (Event 1)发⽣时,⽆论如何A功能都会被执⾏;然后进⾏⼀个检
测判断:如果检测结果为真,则执⾏B 1分⽀;如果结果为假,则执⾏B2分⽀;⽆论执
⾏哪个分⽀,该事件处理程序的其余部分 (C )都将被执⾏。
由于像图18-1这样的决策图看起来像⼀棵树,因此通常会将这种根据判断结果⽽选择
执⾏的⼀段程序称为“分⽀” 。在这种情况下,你会说, “如果测试结果为真,则执⾏
包含B 1的分⽀。”
图 18-1 事件处理程序中,根据条件测试的结果执⾏不同分⽀
⽤if ifelse进⾏条件测试
App Inventor提供了两类条件块 (如图18-2 ):if块和ifelse块。可以从Control抽屉⾥拖
出⼀个if块,然后点击上⾯的蓝⾊图标,弹出可扩充的块,可以根据需要添加任意多
个“else”分⽀。
图 18-2 条件块if ifelse
可以将任何逻辑表达式 (Boolean )插⼊到if右侧的测试插槽中。逻辑表达式是⼀个⽤
数学等式,它的返回值要么是真 (true ),要么是假 (false )。如图18-3 ,逻辑表达式
使⽤关系运算符 (蓝⾊)以及逻辑运算符 (绿⾊),对属性值或变量值进⾏检测。
图 18-3 ⽤于条件判断的关系 逻辑运算符
⽆论是if块还是ifelse块,只有“if”后⾯的测试结果为真时,将执⾏“then”右侧插槽中的
块。对于if块,如果测试结果为假,程序将跳出if块,继续执⾏if后⾯的块;⽽对于
ifelse块,如果测试结果为假,将执⾏“else”右侧插槽中的块。
因此,对于⼀个游戏来说,可能会插⼊⼀个与成绩有关的逻辑表达式,如图18-4所
⽰。
图 18-4 ⽤于测试成绩值的逻辑表达式
在本例中,如果成绩到达100 ,则播放⼀个声⾳⽂件。注意,如果测试结果为假,不
执⾏任何块。如果需要在测试结果为假时执⾏某些操作,可以使⽤ifelse块。
编写⼀段⼆选⼀的决策程序
考虑这样⼀个应⽤,⽆聊的时候也许会⽤到它:在⼿机上点击⼀个按钮,就可以随机
地拨打⼀个朋友的电话。如图18-5 ,使⽤⼀个rando integer (随机整数)块来⽣成⼀
个数字,然后⽤ifelse对⽣成的数字进⾏判断,来决定即将拨打的电话号码。
图 18-5 ⽤ifelse块判断随机⽣成的整数来选择要拨打的号码
在这个例⼦中,rando integer 的参数为1和2 ,意味着将以相等的⼏率产⽣1或2 ,所产
⽣的随机数保存在变量rando Nu 中。
⼀旦取得了变量rando Nu 的值,在ifelse块中将变量值与1进⾏⽐较:如果
rando Nu 的值为1,程序将执⾏第⼀个分⽀ (then ),将电话号码设置为“ 111-
1111” ;如果变量值不为1,测试结果为假,程序执⾏第⼆个分⽀ (else ),电话号码
被设置为“222-2222” 。⽆论测试结果如何,程序都将拔打电话,因为是在整个ifelse块
的下⾯调⽤了MakePhoneCall过程。
多重条件判断
许多情况下不只是双重选择,即,可选择的结果不仅仅是两个。例如,也许你希望可
以给更多的朋友随机拨打电话,因此就需要在原来的else分⽀中,再加⼊⼀个ifelse ,
如图18-6所⽰。
图 18-6 外层条件判断的else分⽀中加⼊另⼀个ifelse条件判断
在这些块中,如果第⼀个检测条件结果为真,程序将执⾏第⼀个“then”分⽀并拨打号
码“ 111-1111” ;如果第⼀个测试结果为假,则执⾏外层的else分⽀,此时将⽴即进⾏另
⼀个测
文档评论(0)