几天前,我写了一篇文章“有无方法消除CASE结构”。

http://www.eefocus.com/csxcs366/blog/11-02/204823_17fb2.html

在这篇文章中,对于多段范围内的数的判定问题,提出了统一的处理方法,但是这并不是说对于判定数的范围问题,不宜使用条件结构。

三段范围的判定是最为常见的,比如给定一个X值,判定X<10.5, 10.5<=x<=30.6,x>30.6.。对于两段或者三段范围的问题,使用条件结构是很适合的。

判断2段范围需要一个条件结构,判断三段范围需要两个条件结构,三段范围条件结构如下图所示:

Picture
从上图可以看出,2层条件结构已经非常复杂了,所以实际应用中,很少看到三层以上的嵌套条件结构。对于需要多层嵌套条件结构,需要尽量转换到一个条件结构的多个分支中。

下面我将讨论对于三段范围,替代上述2层嵌套CASE结构的方法:

1、利用“选择”函数

选择函数类似于C语言中的三元操作符,替代2层条件的程序框图如下图所示:

Picture
使用选择结构与IF ELSE结构非常类似,结构非常清晰,但是由于三元操作符条件所限,无法处理更多的信息,从功能上看,不如条件结构。

2、利用布尔数组替代嵌套CASE

这篇文章详细介绍了这种方法。

Picture
3、双精度数转换为整数后,利用CASE结构

我们知道,LABVIEW中的case结构是非常强大的,其条件选择可以接受多种数据类型,比如布尔、整数、枚举、下拉列表、单选按钮、TAB、字符串等等,但是无法直接使用双精度数。

下面就是我今天要谈及的Nugget,记得我过去写过比较双精度数是否相等的问题,使用的方法就是放大双精度数,然后圆整,下面的例子对双精度数放大100倍后,然后利用CASE结构。

Picture




Leave a Reply.