首页 理论教育使用While循环实现特定功能

使用While循环实现特定功能

【摘要】:While循环可以反复执行循环体的程序,直至到达某个边界条件。图2-34 While循环示意图图2-35 While循环示意图While循环位于结构选板。松开鼠标时,While循环的边框将包围选中部分。只需将对像拖放到While循环内部即可为其添加程序框图对象。因此,While循环的控制量应该在循环内产生。图2-37为合理使用While循环的方法。但这并不能保证While循环真正的合理运行。解决这个问题的简单办法就是在While循环中插入延时节点。

While循环可以反复执行循环体的程序,直至到达某个边界条件。While循环的框图是一个大小可变的方框,用于执行框中的程序,直到条件端子接收到的布尔值为FALSE/TRUE。

该循环有如下特点:

1)计数从0开始(i=0)。

2)先执行循环体,而后i+1,如果循环只执行一次,那么循环输出值i=0。

3)循环至少要运行一次。

图2-34中,循环变量“i”是一个输出接线端,表示已完成的循环次数。右键单击条件端子,可以选择循环停止的条件,包括“真(T)时继续”和“真(T)时停止”,如图2-35所示。

978-7-111-49442-3-Chapter02-53.jpg

图2-34 While循环示意图

978-7-111-49442-3-Chapter02-54.jpg

图2-35 While循环示意图

While循环位于结构选板。从选板中选择While循环,用鼠标拖出一个矩形,将程序框图中需要重复执行操作的部分框入该矩形。松开鼠标时,While循环的边框将包围选中部分。只需将对像拖放到While循环内部即可为其添加程序框图对象。While循环执行其中的代码,直到条件接线端(输入端)接收到某一特定的布尔值。

While循环的数据流运行机制是这样的:当程序执行到While循环时,首先检查While边框上的所有数值作为初始值(如果存在的话),然后执行循环体内的程序代码,此时如果循环外的数据发生变化,将不会影响到循环的内部。执行完毕后查看条件端子的布尔值(设定为真时停止),如果该数值为真(T)则退出循环;如果该值为假(F)则继续进行循环,然后再次查看条件端,直到该值为真(T)时才停止循环。依据While循环的数据流运行机制,可以看出,对于While循环而言,它至少会执行一次。

如图2-36所示,通过实际运行,会看到While循环要么执行一次(开关=真(T)),要么就无限期执行下去(开关=假(F))。因为依据数据流的工作原理,所有输入While循环的数据必须在执行循环前传输,而循环的输出数据只有循环结束后才能够输出。

所以当开关为真(T)时,While循环只执行一次,当开关为假(F)时,While将会无限期地运行下去。这时的循环实质是死循环,设计中一定要避免这样的情况发生。因此,While循环的控制量应该在循环内产生。图2-37为合理使用While循环的方法。

978-7-111-49442-3-Chapter02-55.jpg

图2-36 无限循环

978-7-111-49442-3-Chapter02-56.jpg

图2-37 控制while循环

实际上,图2-37解决了While循环合理运行时的逻辑关系。但这并不能保证While循环真正的合理运行。因为在图2-37中,While循环将以最高的循环速度进行,这将会占用了大量的CPU资源,甚至会使得其他程序运行受阻。解决这个问题的简单办法就是在While循环中插入延时节点。参见图2-38。

如果While循环中的程序代码执行时间足够长的话(相当一定的延时时间),也可以不插入定时节点。还有一个解决方法为使用定时While循环。

978-7-111-49442-3-Chapter02-57.jpg

图2-38 合理的控制While循环的方法