網頁標題: if條件敘述 (基礎偏)

Warning: fopen(/home/crazy/www/learner/cpuroom/programmer/has_read.php): failed to open stream: Permission denied in /home/crazy/www/compose/reading.php on line 2077

Warning: fputs() expects parameter 1 to be resource, bool given in /home/crazy/www/compose/reading.php on line 2079

Warning: fclose() expects parameter 1 to be resource, bool given in /home/crazy/www/compose/reading.php on line 2080
 
﹗﹗﹗觀看留言:此文章已經有11則留言 ﹗﹗﹗


如果你玩過上一篇文章的程式碼:msgbox() 的回傳值,應該發現了 msgbox() 第一個參數真的很有玄機,它將在對話視窗�堬ㄔ秅ㄕP的按鈕,而這些按鈕各有不同的回傳值。要注意的是,這些按鈕上的「確定」、「取消」等等文字只是用來給使用者看的,電腦「看」不懂,如果要電腦根據使用者選擇的按鈕而執行不同的程序,必須利用它們的回傳值來做判斷。因此我們便可利用這個回傳值,寫一個條件敘述來決定程序的下一步流程為何。此篇文章就讓我們來把幾天前「播放陽光和小雨」那個檔案加以修改,除了讓該程序更盡善盡美一點之外,還順便學習澳託伊特的條件敘述的基本概念。澳託的條件敘述跟其他程式語言一樣,種類也很多,我們先來學習 if 敘述。

if 條件敘述的語法,用人類表達的方式來說就是「『如果』點點點『然後』做做做『結束如果』」。什麼意思啊?唉!程式寫多了,講起話來也變成機械人了。我們該用口語化的方式來講比較好,所以就是:「如果點點點的話就去做某件事情懂嗎」。這裡「懂嗎」代表他要交代你做的事情已經說完了,而這件事情你必須要在「點點點」的狀況發生時去做,如果那個狀況沒發生的話該怎麼辦?他沒說,就不管他了。於是我們就可以用澳託一點的語法來表達:

if 條件成立 then ; 條件敘述開始
 做某些工作
 ; 看多少工作要做,都寫在這裡
endif ; 條件敘述結束
; 注:(;)分號代表注解

上面的程式語法應該不難理解才對,autoit 腳本之所以好學,主要因為它很接近人類語言,只需要學過一丁點兒的英文,很快就能寫一隻程式。if 就是如果,then 就是然後,endif 就是「結束如果子句」,注意:英文可沒有 endif 這個單字呀。澳託為了告訴電腦 if 條件敘述的程序結束了,這才要加上 endif。許多時候當條件成立,要做的工作很多,沒有 endif,到底做到什麼時候才結束?電腦不被你搞暈了才怪,「阿你叫人家幫你做那麼多事情,究竟要做到什麼時候停止呀?累死人了!只好給你一個錯誤信息,不幫你做了啦!」於是因為程序碼的錯誤,這程序剩下的部份也就不會繼續運行。所以請記住,「如果」的條件敘述結束了,一定要再加上 endif 這個保留字。

第一個程式:播放陽光和小雨 shine.au3 的播放程序之所以不理想,主要在於該程式檔一開始執行就立即播放聲音,容易讓人嚇一跳,然後你也無法中途停止播放,真是討厭,除非你懂得透過工作管理員「結束工作」,否則只好把整個聲音聽完,播放程序才能結束。
幸好後來我們在
加入對話視窗--msgbox() 這篇文章裡,
shine2.au3 的 soundplay() 下一行加入了 msgbox() 對話視窗指令,
在此視窗內可以讓你按確定按鈕,
藉由關閉該窗口的方法順便結束播放程序。
此時也許你會有個疑問:
「為什麼關閉窗口可以結束播放程序呢?」
坦白說我也在思索這個問題,
那就一起來研究看看囉!

回顧一下「加入對話視窗--msgbox()」這篇文章, shine2.au3 檔案它只有兩行澳託敘述,
一開始的 soundplay() 是這麼寫的:

soundplay("http://crazy.molerat.net/mp3/gwo.mp3",0)

如果上面的敘述第二個參數用的是 1, 這個程序執行就很有問題,
因為你必須等到音樂播放完畢,
那時對話視窗才會出現,
然後你也才有機會按確定按鈕來結束程序。
「問題是阿人家歌都唱完了才要人家不用唱歌了,
那不是粉奇怪嗎?」
所以呀!
如果想要在播放音樂的同時順便彈出對話視窗,
soundplay() 的第二個參數要用 0,
如此一來當聲音播放的同時,
對話視窗也會彈出來,
這樣你就可以按確定按鈕來關閉視窗,
程序也算跑完,
播放的聲音也就跟著停止。
你也許發現了,
就算在對話視窗中寫的是「按確定鍵將繼續播放」,
按了「確定」之後仍會關閉視窗,然後結束程序。
因為電腦根本看不懂你在視窗�媦g什麼字,
程序結束只是關閉視窗的結果。
「為什麼關閉視窗,
播放程序也就跟著停止了呢?」
因為那時候我在這個檔案只寫兩行敘述呀!
做完第二行電腦就認為這個程式跑完了。
要是還有第三行內容
(大家可以自己玩看看),
澳託也許會在結束第二個敘述緊接著跑第三個敘述時,
音樂仍在繼續播放著。
在對於 autoit 還沒深入瞭解之前,
針對 shine2.au3,
我只想到或許改用下面這個程序進行會比較理想:

1. 開啟一個對話視窗告訴用戶「即將開始播放音屏,是否想要收聽?」
2. 假如用戶回答「是」的話,音屏才開始播放。

當然啦!也不一定非要等到音樂播完才能結束程序,還可以在第三行加入另一個對話窗口,用來停止播放程序:

3. 彈出對話窗口說 「按確定按鈕可以結束播放」

至於這個程式碼該怎樣撰寫? 嘿嘿!
當作是各位的家庭作業,
請試著用自己的表達方式來呈現吧!
重點在於你必須知道在 msgbox() 中,
代表「是」這個按鈕的回傳值為何?
因此就要設定一個變數,
用來儲存 msgbox() 的回傳值,
然後才可以用條件敘述來判斷該回傳值是否為「確定按鈕」?
如果是「確定」按鈕的話才播放聲音。


回 · 與我一起來學autoit 這一篇文章封面


本文張貼者:程咬金〔張貼時間:民國100年11月3日(星期四)13點16分 | 更新次數 #2 | 最後更新:民國100年11月4日(星期五)5點51分〕 | 寫信給程咬金

部落格首頁


學習的故鄉首頁
本站公告:〔您越需要我們,我們就越有創意〕 本站說明書:〔發現故鄉還有改進的地方,請來信告訴原丁們〕
觀察應用學習點數 :〔咱的故鄉有您的參與,會使我們有更大的發揮空間,展現更豐富精彩的學習畫面〕 〔期待藉由無障礙網頁設計,能讓視障小朋友更愛看書、更愛寫作且更愛學習〕:盲用電腦「心得分享」
〔為了讓我們有乾淨的學習環境,請勿任意在本站散播商業廣告與不合法文件或聯結〕:本站宣示