注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

chunwaihome 的博客

 
 
 

日志

 
 

conditional statements  

2010-03-04 22:29:34|  分类: Powerpro腳本學習 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在我們寫腳本程序的過程中總會需要根據某個條件或一組條件的成立情況來控制程序的流程,我們可能要判斷某個數值是否大於另外一個,又或者是判斷某個字符串裡是否含有指定的子串等等。

對系統而言所有的條件判斷只有 true (非零,真)或者 false (零,假)兩種可能結果。通常我們利用 ==、<>、 >=等 運算符 來對各種對像進行比較從而建立條件。

if條件敘述式

「if」條件敘述式可以讓我們測試條件(布林值)。如果該條件成立(布林值為真),則執行if區塊中的程式,其語法如下圖:


if / if()do ... else ... elseif ... endif(字面意思:如果(某個條件成立)…那麼(執行某些操作)…否則(執行另外一些不同的操作)

我們以學生在學校的考試成績作例子,來讓大家明白如何使用條件式語法。而學生的成績等級如下:

成績

 等級

 90-100分
 70-80分  良
 60-50分  好
 40-50分  一般
 <50分  差

  •  *If (expression) [without do] ........Statements

此語句用於判斷當某條件為真時執行某個或某些語句。你也可以將"If.....()....statement寫成單行式,並且在結束時無需寫"EndIf"。這也是Conditional statemments中最簡單的了,沒有任何elseif、else和endif。需要留意的是Expression必須用單括號括住,而且Statements只能是第一行命令

什麼是Statement?

在一篇文章中,最小的獨立單位是"句子",每一個句子都會表達出一些簡單的意思。同樣的,在腳本中也有最小的獨立單位,那就是敘述(statement),每一個敘述都會要求電腦做一件簡單的事情,每一個敘述原則上都單獨寫在一行。

例子:

Local s = inputcancel("輸入您的考試分數")

If (s<50)  win.debug("您的成績不及格")   Endif               ;在語句結束的位置是否加上Endif並不重要

當IF()後面只有一个語句時也可以寫成多行的形式,只是務必要寫上"EndIf,例如

Local s = inputcancel("輸入您的考試分數")

If (s<50)  

          win.debug("您的成績不及格")   

EndIf

執行此腳本後,顯示一窗口讓您輸入分數,如果輸入的分數小於50,就會彈出Debug窗口告訴您("您的成績不及格")。如果輸入的分數大於或等於50,不會出現任何結果

我們將上面的腳本作一些修改

Local s = 60

If (s<50)        ;其中小括弧「( )」中要擺放的是條件運算式(又稱為布林運算式,也就是可以得到布林值的運算式),根據布林值再決定區塊中的程式碼是否執行。因為S>60所以表示上語句是false或等於0

            win.debug("您的成績不及格")

            win.debug("需繼續努力")

執行腳本後,s<50是假的因此win.debug("您的成績不及格")語句沒有被執行,但win.debug("需繼續努力")語句還被執行了。這是為什麼呢?

因為在*If (expression) [without do]......Statements語句中只能偵測和執行它後面的第一句命令。

(condition)
    
statement1    ← condition 是 TRUE 有這反應
    statement2 

  在這例子, 若 condition 是 TRUE 就執行 statement1, 然後執行 statement2, 若是FALSE, 就直接執行 statement2。

  •  *If (expression) do ........Statements

語法:

If (expression) do
... statements ...
elseif (expression)
... statements ...
elseif (expression)
... statements ...
else
... statements ...
endif

如果我們將上面的例子在expression後面加上do, 大家看看會有什麼不同之處

Local s = 60

If (s<50) do

            win.debug("您的成績不及格")

            win.debug("需繼續努力")

EndIf                              ;EndIf在語句中是否添加並不重要

執行腳本後,s<50此語句是假的,執行命令後win.Debug沒有任何顯示,表示沒有任何命令被執行。在這裏很明顯,如果在IF()後面加上do,If()會控制一覽子的statements。而Endif在最後的位置是否加上去是不會影響結果的,但為了方便瀏覽腳本還建議大家加上去。

Note keyword do which signals that the if statement controls a block of statements.


  • If......ElseIf.....Else......Endif語句的嵌套與重複使用

因為不合格的學生也可以有不同的分數,所以我們想將不分格的分數再為細分,例如小過30分評為很差,大過30但小過50分則顯示"需繼續努力"。

Local s=inputcancel("輸入您的考試分數")

If(s>50)do      

            win.debug("您的成績及格")         

Else    

             If  (s<30)do

                     win.debug("您的成績實在太差了")

           Else

                    win.debug("需繼續努力")

             Endif

EndiF


Local s=inputcancel("輸入您的考試分數")

If(s<50)do                   ;我們可以用多重的"if"來做多重的條件限制

            If(s<30)do       ;第一個"if"條件成立後才會被執行

                     win.debug("您的成績實在太差了")       ;兩個"If"都成立後才執行

           Else

                    win.debug("需繼續努力")       

             Endif

Else                            ;您不可以將Else寫成ElseIf,因為ElseIf必須在同一行裏副加條件

win.debug("您的成績及格")   

EndiF 


同樣的,我們也可以多次使用"If.....ElseIf....Endif"語句來實現上述程序段的功能。
Local s=inputcancel("輸入您的考試分數")

If(s>50) do     

        win.debug("您的成績及格")              

ElseIf (s<30)

       win.debug("您的成績實在太差了")

ElseIf (s<40)

         win.debug("需繼續努力")

Else         ;Else後面是不可加Expression的,Else在語句中可被省略,但一旦出現的話,它一定要放在所有Elseif後面

      win.debug("學生成績輸入錯誤")

EndiF

 首先我們聲明一個變量s來代表學生的成績,隨后使用inputcancel要求用戶輸入學生的成績並將inputcancel的返回值敷值給s,緊接著的是判斷返回值是否大過50,如果是則執行else后的命令,否則執行嵌套裏的語句。

 注意事項


其實"IF"的條件式不一定要是一個運算式,也可以是一個變數(記得,單一變數也是合法的算式),例如:

範例1: if(a)                //若a為假(false),則結果為假,否則結果為真

範例2: if(!a)               //若a為假(false),則結果為真,否則結果為假

  评论这张
 
阅读(615)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017