新聞中心

        EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > LABVIEW的深入探索之內(nèi)外有別的條件結(jié)構(gòu)

        LABVIEW的深入探索之內(nèi)外有別的條件結(jié)構(gòu)

        作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò) 收藏
        條件結(jié)構(gòu)(CASE)是LV常用結(jié)構(gòu)之一,最為典型的條件結(jié)構(gòu)是含有錯(cuò)誤處理的條件結(jié)構(gòu),常常用于避免使用順序結(jié)構(gòu)。與C語(yǔ)言的條件結(jié)構(gòu)不同,對(duì)于顯示控件,所有的CASE分支必須對(duì)顯示控件傳遞數(shù)據(jù)(賦值)或者直接使用默認(rèn)值,不允許不輸出。

        在條件結(jié)構(gòu)中,處理顯示控件有兩種完全不同的方式,這兩種方式雖然表明上看差別不大,在具體編程中都可能使用過(guò),但是對(duì)于大型數(shù)據(jù)處理,比如大的數(shù)組,運(yùn)行效率差別極大,可能不經(jīng)意間造成程序運(yùn)行緩慢,且不易查錯(cuò)。

        本文引用地址:http://www.104case.com/article/201701/337240.htm

        方法一:條件結(jié)構(gòu)外處理顯示輸入控件和顯示控件。這種方法中,輸入控件和顯示控件均位于條件結(jié)構(gòu)分支之外。如下圖所示:

        方法2:條件結(jié)構(gòu)內(nèi)處理輸入控件和顯示控件控件。這種方法中,輸入控件和顯示控件位于條件結(jié)構(gòu)分支中,從程序框圖上看,似乎更為簡(jiǎn)潔,但卻是非常錯(cuò)誤的,如下圖所示。

        方法2中,錯(cuò)誤分支中沒(méi)有進(jìn)行任何處理,輸入控件和顯示控件位于無(wú)錯(cuò)誤分支中。

        OUT,VI和IN.VI實(shí)現(xiàn)的功能是完全相同的,但是運(yùn)行效率卻是天壤之別,數(shù)組越大,區(qū)別更為明顯。當(dāng)然不同的計(jì)算機(jī)上,運(yùn)行時(shí)間會(huì)有區(qū)別。下面是測(cè)試程序框圖。

        下面是測(cè)試結(jié)果,二者的運(yùn)行時(shí)間相差20000多倍。

        下面引入一個(gè)“頂層程序框圖”,頂層程序框圖常見(jiàn)于LV愛(ài)好者的文章中,LV的相關(guān)書(shū)籍中沒(méi)有這樣的概念。OUT.VI中,輸入控件位于左側(cè),顯示控件位于右側(cè),均位于所有結(jié)構(gòu)之外,所有結(jié)構(gòu)之外稱作“頂層程序框圖”,類似于C語(yǔ)言中的形參部分。

        頂層程序框圖中,運(yùn)行效率是極高的,這是因?yàn)樵谶M(jìn)入子VI之前,LV很容易可以斷定,緩存是可以重用的,因此不需要在循環(huán)中,每次復(fù)制數(shù)組。但是輸入控件和顯示控件位于條件分支內(nèi)部時(shí),LV可能無(wú)法判定緩存是可以重用的,因此采用的值復(fù)制的方法,這樣犧牲了效率,但是保證了正確的結(jié)果。

        方法二中,表面上看似乎更為合理,但卻是錯(cuò)誤的,因此可以得出結(jié)論,子VI中的輸入控件和顯示控件應(yīng)該位于頂層程序框圖中,不應(yīng)該位于任何結(jié)構(gòu)之中。



        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 邻水| 宜君县| 伊金霍洛旗| 扬中市| 沂水县| 邓州市| 兴化市| 隆尧县| 隆回县| 南和县| 疏附县| 苏尼特左旗| 手机| 柳州市| 洱源县| 沁水县| 镇江市| 休宁县| 鄂州市| 县级市| 庆阳市| 张家川| 长子县| 房山区| 华池县| 江永县| 临邑县| 全椒县| 顺义区| 峨眉山市| 湄潭县| 瑞昌市| 望都县| 灌阳县| 沙河市| 开封县| 凤山县| 南木林县| 黑山县| 平舆县| 高碑店市|