新手课堂 - 透过王二的一生说“流程控制”(二)
上回 新手课堂 - 透过王二的一生说“流程控制”(一) 写到王二麻子的……
咳咳,是之前说了控制流程中的 For 循环、If 分支以及 Continue 继续,接下来继续介绍流程控制中的其他组件。
1.Try 异常
用来检测开始流程步骤中的错误,从而让异常流程步骤捕获异常信息并进行处理;开始流程步骤运行中没有出现错误,那么就不执行异常中的步骤。
随着年龄增长,王二脸上渐渐爬满了麻子,他心里却有了自己的想法。
原本乖巧听话的一个人开始变得叛逆起来,但这都不是事儿,少年青春期很正常。只是王二到底年轻气盛,却是做了不少傻事。
开始:先执行开始后链接的组件及其后续步骤,弹出第一个 "乖巧听话" 的消息框,接着执行下一个组件,此处内容中的文本未用引号括起(下图红色方框),抛出异常,后续流程步骤不再运行,直接进入异常模块。
王爸王妈发现儿子误入歧途,当即插手处理。针对孩子的叛逆,没有什么是王妈的一顿揍解决不了的,如果有,那就混合双打。
异常:出现错误,立即跳转至异常,针对错误做出相应处理。
最后,叛逆的少年果然成长了,尽管是经历了一番血与泪的教训。但无论是否出错,人都是要成长的,这是必须要经历的过程。
结束:无论有无异常,最后都执行结束后链接的流程步骤,此处弹出消息框”少年长大了“。
想到这,王二麻子不由感叹,当初自己不犯错的话,也就不会挨打了。不过谁的青春不曾放肆过呢?
如果开始后连接的步骤流程没有出错,自然就不会触发异常中的操作流程;但是在程序运行过程中,错误是难以避免的,程序设计的本身没有错误,但如果突然弹出一个窗口,或是网络延迟或中断,甚至运行过程中操控的软件崩溃呢?这都可能会让程序运行产生错误,为了让机器人继续自动处理,需要将这些异常信息进行捕获,然后做出对应的处理。所以说 Try 异常的处理很是重要。
2.While 循环
用于循环执行程序,即在先判读满足条件的情况下,则开始进入 while 循环执行某段程序,以处理需要重复处理的相同任务。不满足条件则不会进入 while 循环进行操作。
话说少年王二已经长大,成了青年王二麻子,开始了上班的社畜生活:每天起床上班,下班睡觉,两点一线,日复一日,没有间断。虽然辛苦了些,但好在报酬还不错,而且王二能吃苦。他打算先干个 10 年,先给家里盖个新房子,当然还得存点老婆本啊。可惜,王二上班的第二年却是除了点意外,休息了整整一年都没去工作,不过身强志坚的王二休整好后立马又回归了岗位;直到第 6 年,王二觉得在这样下去,虽然能赚到钱,而且也给家里盖个新房子,也存了些钱,但工作太忙,哪有空找女朋友?为了自己的终身大事,王二麻子毅然辞职,结束了这种周而复始的工作生活。
- 设置一个变量 year,值为 1,表示刚开始工作第一年;
- While 循环判断条件当 year 小于等于 10 时,则执行 while 循环内的步骤;此时 year = 1,满足条件;
- 循环内依次输出”起床洗漱”、“上班“、”午餐“,“下班晚餐”、“睡觉”,然后 year 的值增加 1,year =2;
- year =2,满足循环条件,使用 if 判断当 year 的值为 2 的时候,先使 year 的值增加 1,year =3,然后使用 Continue 继续组件跳出 while 的当前循环,后续的流程步骤不再执行;此处要注意先让 year 的值增加 1,否则,year 一直为 2,就会进入死循环;
- year=3 依旧满足循环条件,依次输出”起床洗漱”“、上班“、”午餐“,“下班晚餐”、“睡觉”,然后 year 的值增加 1。如此反复,直到 year=6,依旧符合循环条件,但执行到循环内的 Break 中断,直接跳出 While 循环,执行 While 循环外的流程步骤,弹出消息框“开始新生活”。
而事实上,While 循环多使用 True 作为条件,步骤每次走到这的时候都会进入该 while 循环,当遇到特定的情况时,使用 Break 组件跳出,以免死循环。
3. 序列
就是用于排版的工具,没有其他的作用。
4.Break 中断
上述 While 循环中,如果没有 Break 中断,那么循环在 year 自增到 11 不再满足循环条件时,循环才会停止。而Break 中断组件便是用来终止循环语句,跳出循环,而且 break 语句只能用在 while 和 for 循环中。
话又说回来,王二麻子自从开始了自己的新生活后,日子过得是蒸蒸日上。
现在王二麻子已是岁至不惑了,想着自己如今的滋润生活,抚摸着自己的便便大肚,满面油光的脸上不禁露出一个淡淡的笑容。
可是此刻人竟没有了呼吸。。。。却是青年时期打工落下的病根突然爆发了。
For 循环执行到 pd=’中年’的时候,If 分支条件 pd==‘中年’ 为真,执行 Break 中断,不再执行后续流程步骤以及下一个 pd =’老年’时的循环,而是直接跳出 For 循环。
5.Return 返回
就是将结果返回到调用的地方,并把程序的控制权一起返回。
王二麻子的故事完了,这里另外举个栗子你就应该懂了吧。
添加一个子流程 flow2,设置一个变量 loc_val = True(在变量模块中设置也是一样的),然后 Return 返回变量 loc_val。也就是说整个流程运行后,结果返回 loc_val。
在主流程中添加子流程 flow2, 返回值作为 If 分支的判断条件,真就输出“Yes”,假则输出“No”。流程 flow2 返回 loc_val 的值 True,输入 If 分支条件,自然执行真链接的步骤流程,此处输出 Yes。
当然,loc_val 的值为 False 的话,流程 flow2 返回值为 False,主流程则输出 No。