2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

LabVIEW學(xué)習(xí)筆記(三)——程序結(jié)構(gòu)

 彎丘 2019-12-15

前言:

       任何計(jì)算機(jī)語言都離不開程序結(jié)構(gòu),LabVIEW 作為一種圖形化的高級(jí)程序幵發(fā)語言也不例外。LabVIEW 中的程序結(jié)構(gòu)包括if-else循環(huán),while循環(huán)結(jié)構(gòu),使能結(jié)構(gòu),公式節(jié)點(diǎn)和數(shù)學(xué)腳本節(jié)點(diǎn)等, 因此通過LabVIEW可以非常方便快速地實(shí)現(xiàn)任何復(fù)雜的程序結(jié)構(gòu)。在LabVIEW 中,無論是循環(huán)結(jié)構(gòu)、Case 結(jié)構(gòu)還是條件式節(jié)點(diǎn),它們都表現(xiàn)為一個(gè)方框包圍起來的圖形代碼。這個(gè)方框就類似于C語言中的兩個(gè)花括號(hào) 

一、while循環(huán)

       如果我們需要讓循環(huán)在滿足某種條件時(shí)退出或繼續(xù)運(yùn)行,這時(shí)候就需要借助于 While 循環(huán)。它是 LabVIEW 中最經(jīng)常使用的一種程序結(jié)構(gòu)。

      下面我們利用 while 循環(huán)寫一段最簡單的代碼:用戶輸入一個(gè)整數(shù),while循環(huán)計(jì)算出 1 到 該數(shù)值的累加和,該段代碼如下所示:

        在上述代碼中使用了反饋節(jié)點(diǎn),因?yàn)槭褂?反饋節(jié)點(diǎn)可以讓程序更簡潔, 就是直接將輸出與輸入連接起來,這時(shí)就會(huì)自動(dòng)出現(xiàn)一個(gè)反饋節(jié)點(diǎn)的符號(hào)。

        其中  是循環(huán)終止條件的輸入端子,默認(rèn)情況下為 Stop if true,即當(dāng)輸 入布爾條件為 True 時(shí)終止循環(huán),為 False 時(shí)繼續(xù)運(yùn)行。如果右擊該端子,該端子變?yōu)?/span>,這表示當(dāng)輸入布爾條件為 True 時(shí)繼續(xù)運(yùn)行,為 False 時(shí)終止循環(huán)。這兩種情況是互 為相反的邏輯。具體采用哪一種,則主要由程序的可讀性決定。此外,While循環(huán)體與外部代碼交換數(shù)據(jù)的方式和For循環(huán)是一樣的,可以參考 For 循環(huán)。

       如果以索引方式輸入數(shù)組的話,While循環(huán)的次數(shù)并不會(huì)由數(shù)組大小控制,它仍由布爾值控制。當(dāng)循環(huán)次數(shù)超過數(shù)組大小時(shí),將以數(shù)組最后一個(gè)元素作為輸入。我們編寫代碼如下所示:

運(yùn)行程序后,前面板顯示:

       LabVIEW 在執(zhí)行While循環(huán)時(shí),如果用戶沒有給它設(shè)定循環(huán)時(shí)間間隔,那么它將以CPU的極限速度運(yùn)行。按下Ctrl+Alt+Delete 快捷鍵打幵任務(wù)管理器,可以看到它幾乎將CPU全部利用, 正常情況這樣做比較危險(xiǎn),因?yàn)檫@樣可能會(huì)導(dǎo)致整個(gè) LabVIEW 程序看去跟“死 掉” 一樣。
        在很多情況下我們沒有必要讓 While 
循環(huán) 以大的速度運(yùn)行,所以最好給 While 循環(huán) 加上時(shí)間間隔。有兩種方法:一種是在每個(gè)循環(huán)中添加一個(gè)等待時(shí)間,只有在等待完畢后才運(yùn)行下一個(gè)循環(huán)。 另一種方法是使用定時(shí)循環(huán)(Timed Loop)。

       因此,在寫 While 程序時(shí)千萬別忘了加上一個(gè)定時(shí)器,即:

、For 循環(huán)

       For 循環(huán)用于將某段程序循環(huán)執(zhí)行指定的次數(shù)。可以通過兩種方法指定循環(huán)次數(shù),種是直接給定,一種是通過輸入數(shù)組的大小給定。它在 函數(shù)面板中的位置如下圖所示:

           如果輸入 For 循環(huán)體的數(shù)據(jù)為數(shù)組的話,有兩種情況:一種是將整個(gè)數(shù)組一次性輸入循環(huán)體, 另一種是讓數(shù)組元素逐個(gè)地輸入,并以數(shù)組大小確定循環(huán)次數(shù)。同理,輸出也一樣,可以一次性將整個(gè)數(shù)組輸出;也可以將元素逐個(gè)輸出,最后再將所有輸出元素組合為同一個(gè)數(shù)組輸出。

         一般來說,如果直接將數(shù)組與內(nèi)部數(shù)據(jù)連接,它默認(rèn)就是自動(dòng)索引,即數(shù)組元素一個(gè)個(gè)地輸入,輸出也是一樣的。一般情況下,用戶不再需要指定運(yùn)行的次數(shù),它會(huì)自動(dòng)根據(jù)數(shù)組大小執(zhí)行。 當(dāng)然如果用戶硬要指定,那么它按照最小的執(zhí)行次數(shù)執(zhí)行。即如果數(shù)組有5個(gè)元素,而用戶指定循環(huán)次數(shù)為10,則實(shí)際循環(huán)次數(shù)為5。索引方式下輸入和輸出一維數(shù)組如下圖所示:

程序框圖:

前面板:

顯然,雖然沒有指定 for 循環(huán)中 N值 的大小,該循環(huán)執(zhí)行了5次就終止了。因此,它會(huì)自動(dòng)根據(jù)數(shù)組大小決定執(zhí)行次數(shù)。

       如何利用 for 循環(huán)來產(chǎn)生二維數(shù)組或多維數(shù)組,方法很簡單,如下圖所示:

對(duì)應(yīng)的前面板如下所示:

改變循環(huán)次數(shù):

、事件結(jié)構(gòu)

        Labview 提供了事件結(jié)構(gòu),即僅當(dāng) “事件” 發(fā)生時(shí),程序才作相應(yīng)的響應(yīng)。 通過事件結(jié)構(gòu),程序可以變得很簡單,并降低CPU利用率。當(dāng)多個(gè)事件發(fā)生時(shí)會(huì)形成事件隊(duì)列, 直到每個(gè)事件對(duì)應(yīng)的代碼都被執(zhí)行為止,因此不會(huì)有事件被漏掉的情況。

        注意:事件結(jié)構(gòu)必須放在 While 循環(huán)中,否則沒有意義,因?yàn)楫?dāng)一個(gè)事件完成后,程序 需要去等下一個(gè)事件的發(fā)生。我們來看一段代碼:

接下來我們?cè)谶x擇器標(biāo)簽處右鍵鼠標(biāo),添加事件分支:

添加 “取消按鈕” 對(duì)應(yīng)的事件:

添加  “確定按鈕” 對(duì)應(yīng)的事件:

添加  “ 旋鈕” 對(duì)應(yīng)的事件:

然后我們可以運(yùn)行代碼,在前面板看到結(jié)果如下:

旋轉(zhuǎn) 旋鈕:


 

四、條件結(jié)構(gòu)

            這一節(jié)我們通過一個(gè)例子來學(xué)習(xí)條件結(jié)構(gòu):利用條件結(jié)構(gòu)和循環(huán)結(jié)構(gòu)寫一個(gè)跑馬燈,即要求 5 個(gè)燈從左到右不停的輪流點(diǎn)亮,閃爍間隔由滑動(dòng)條調(diào)節(jié),我們新建一個(gè)空白 VI ,然后編寫代碼:

       在while循環(huán)中放一個(gè)時(shí)延函數(shù),延時(shí)時(shí)間由滑動(dòng)條控制,這個(gè)延時(shí)時(shí)間就是跑馬燈的閃爍間隔。然后從循環(huán)次數(shù) i 引出,除以 5 取余數(shù)加1 作為條件使能結(jié)構(gòu)的輸入。最后依次設(shè)置每個(gè)分支:

當(dāng)輸入為3時(shí)的分支執(zhí)行的代碼:

輸入為4時(shí)對(duì)應(yīng)的分支:

輸入為5時(shí)對(duì)應(yīng)的分支:

我們看看對(duì)應(yīng)的前面板:

接下來,我們運(yùn)行程序:

注意: 當(dāng)條件使能結(jié)構(gòu)有多個(gè)分支時(shí),必須設(shè)置默認(rèn)分支,否則程序無法執(zhí)行,如下:

五、公式節(jié)點(diǎn)

        公式節(jié)點(diǎn)是一種程序結(jié)構(gòu),通過公式節(jié)點(diǎn),用戶不僅可以實(shí)現(xiàn)復(fù)雜的數(shù)學(xué)公式,還能通過文本編程寫一些基本的邏輯語句,如if...else...、case, while循環(huán)之類的語句。可以這么說,公式節(jié)點(diǎn)基木上彌補(bǔ)了圖形化幵發(fā)語言相對(duì)于文木語言的缺陷。公式節(jié)點(diǎn)的語法與C語言基本相同。

       接下來我們來利用公式節(jié)點(diǎn)進(jìn)行編程:

我們添加公式節(jié)點(diǎn)函數(shù),在方框的邊框上右鍵鼠標(biāo),添加2個(gè)輸入和3個(gè)輸出,然后編程算法代碼:

       顯然,公式節(jié)點(diǎn)不僅能實(shí)現(xiàn)一個(gè)公式,還能同時(shí)實(shí)現(xiàn)多個(gè)公式,只需要增加輸入輸出端子就可以了。而且,語法規(guī)則完全遵循C語言。

      運(yùn)行程序可以看到:

更改 a 和 b 的值:

六、實(shí)踐——溫度監(jiān)測(cè)系統(tǒng)

        最后,我們來做一個(gè)溫度監(jiān)測(cè)系統(tǒng),該系統(tǒng)底層數(shù)據(jù)是由隨機(jī)數(shù)發(fā)生器產(chǎn)生的20?40 之間的隨機(jī)數(shù),其代碼如下所示:

設(shè)置華氏和攝氏兩種示模式,選擇華式溫度時(shí):

選擇攝氏溫度時(shí):

       然后設(shè)定溫度上限,當(dāng)溫度超限時(shí),Alarm Counter加1,這里采用了移位寄存器。LabVIEW 提供了移位寄存器,把上一次循環(huán)產(chǎn)生的結(jié)果 “移動(dòng)” 到下一次循環(huán)的輸入。添加移位寄存器的方法如下圖所示:

    右擊 For 循環(huán)的邊框,選擇 添加移位寄存器 選 項(xiàng),在右擊點(diǎn)和另外一側(cè)就會(huì)出現(xiàn)一個(gè)小黑框,把它與需要連接的數(shù)據(jù)連接即可。

      由于存儲(chǔ)在移位寄存器中的數(shù)據(jù)值直到關(guān)閉VI時(shí)才從內(nèi)存中消除。如果沒有初始化移位寄存器,就會(huì)導(dǎo)致在關(guān)閉VI之前前后 兩次運(yùn)行該 VI 的結(jié)果截然不同。由于這種情況難于預(yù)測(cè),因而可能會(huì)使VI的運(yùn)行結(jié)果難以捉摸, 因此,任何情況下都別忘了初始化移位寄存器。

    接下來分析整個(gè)程序,最外層用 While 循環(huán)來控制整個(gè)系統(tǒng)的運(yùn)行:

        當(dāng)用戶單擊 “幵始采集” 按鈕后,系統(tǒng)幵始采集數(shù)據(jù),執(zhí)行 case循環(huán)中的 true分支對(duì)應(yīng)的程序,在該分支中,用層疊順序結(jié)構(gòu)來實(shí)現(xiàn)“初始化”,“運(yùn)行”,“結(jié)束”這3個(gè)順序執(zhí)行狀態(tài):

我們執(zhí)行程序,可以看到前面板如下:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多