
4.2.1 While
While是条件循环活动,当流程中需要满足某种条件就循环执行某件事务时,就可以使用While活动。
While活动由Condition和Body两部分组成,如图4-43所示。其中Condition为必填项,为布尔表达式,Body里面是满足条件时循环执行的活动。
当流程执行到While活动时程序先执行Condition布尔表达式,如果等于True则执行循环执行循环体Body里面的流程或活动。执行完毕程序将返回到Condition布尔表达式,如果等于True则继续执行循环体Body里面的流程或活动,循环往复,直到Condition布尔表达值等于False时退出循环体,执行While活动之后的流程。
下面通过一个简单的案例来理解下While的用法。
【例4.5】计算1到100所有整数的和。
1)进入Studio界面,点击Process创建一个流程,命名为4_5_While,如图4-44所示。

图4-43 While活动

图4-44 新建流程
2)进入Main,在Activities面板搜索While,并将其拖入主窗口如图4-45所示。

图4-45 拖入While活动
3)选中While活动,在Variables面板中新建两个Int32类型的变量,LoopNumber初始值为1用于计数,TotalSum初始值为0用于求和,如图4-46所示。

图4-46 新建变量,并设置初始值
4)在While循环体内拖入一个Assign活动,设置TotalSum=TotalSum+LoopNumber,用于累计求和,然后将While的Condition条件改为LoopNumber<=100,如图4-47所示。
5)在第4步的Assign的下面再拖入一个Assign,设置LoopNumber=LoopNumber+1用于累计循环次数,当循环次数大于100时退出循环,如图4-48所示。

图4-47 设置While控制条件和累计求和算式

图4-48 设置LoopNumber自加1
6)在While活动的下面拖入一个Write Line,并将其Text属性值改为“"1到100所有整数的和等于"+TotalSum.ToString”,如图4-49所示。

图4-49 设置输出活动Write Line的属性
7)按Ctrl+F6快捷键执行程序,在Output面板中查看结果,如图4-50所示。

图4-50 执行结果
注意
通常情况下While的循环体内应该包含能改变Condition条件表达式的语句,例如LoopNumber=LoopNumber+1,以控制While循环次数,否则容易造成死循环。