複製鏈接
請複製以下鏈接發送給好友

條件語句

鎖定
條件語句是用來判斷給定的條件是否滿足(表達式值是否為0),並根據判斷的結果(真或假)決定執行的語句,選擇結構就是用條件語句來實現的。 [1] 
條件語句可以給定一個判斷條件,並在程序執行過程中判斷該條件是否成立,根據判斷結果執行不同的操作,從而改變代碼的執行順序,實現更多的功能。VBA中的條件語句主要有If語句和Select Case語句兩種。 [2] 
寫程序時,常常需要指明兩條或更多的執行路徑,而在程序執行時,允許選擇其中一條路徑,或者説當給定條件成立時,則執行其中某語句。在高級語言中,一般都要有條件語句。
中文名
條件語句
外文名
Conditional statement
應    用
計算機編程

條件語句語句介紹

條件語句是一種根據條件執行不同代碼的語句,如果條件滿足則執行一段代碼,否則執行其他代碼。可將條件語句認為是有點像起因和結果。一種更好的類比方式可能是,使用一些父母可能會説的話,如下面的內容:
“如果你的房間是乾淨的,你會得到甜點。否則,你就得早點去睡覺。” [3] 
第一個起因是乾淨的房間,結果是可以得到甜點。第二個起因是不乾淨的房間,結果是必須早點上牀休息。
在腳本上,可能需要創建類似的語句。可能如下面的內容一樣:
“如果變量mymoney的值大於1000,那麼發送警告告知我的金融狀況沒問題。否則,發出警告,告知我需要更多錢!” [3] 

條件語句語句作用

以編寫腳本為例,在編寫腳本中,條件語句是非常有用的。與其按照腳本內容執行每一行代碼,不如只有當特定條件滿足時,才執行腳本中的某些代碼。甚至可將單個條件擴展為條件語句的集合,用於決定某些代碼是否執行。
使用條件語句,可以告訴JavaScript做到像下面的事情:
·如果變量youmame等於Jonh,那麼將“hello to John”輸出到頁面。否則輸出“hello to Unknow Surfer”並將內容加粗。
·如果變量mycar等於Corvette或Mustang,那麼向瀏覽器發出警告“Cool car”。如果變量mycar等於Covette,並且變量yourname等於Marty,那麼向瀏覽器發出警告“Marty is cool and drives a cool car”。否則,向瀏覽者發出警告“Unknown Surfer drives a car of some sort”。
我並不駕駛Corvette或者Mustang,所以請將我從很時髦的人羣中排除。而這些例子顯示瞭如何在執行操作之前通過檢查某些條件,達到更多的目的。這些類型的語句在腳本中稱為控制流 [3] 

條件語句語句分類

If語句
If語句是可以測試一個或多個條件的成立與否,並在指定條件成立或不成立時分別執行不同的代碼,其結構主要有以下4種。 [2] 
1.單行格式的If語句
單行格式的If語句可判斷一個或多個條件的成立與否,並在條件成立時執行一組代碼,如果條件不成立,則跳出當前語句繼續執行下一行代碼。單條件If語句僅在條件成立時執行特定操作,條件不成立時則跳出,其語法格式如下。
If condition Then statements
其中,condition為判斷條件,其最終結果為True或False(或者數值0和非0);statements為條件成立時執行的單條件或多條件語句,如果是多條件語句,各語句之間以英文冒號(:)分隔。單條件If語句執行流程如圖1所示。
圖1 圖1
 Sub Test()

    Dim a As Integer,b As Integer,c As Integer

    a=1024

    b=CInt(InputBox("請輸入除數的值:","輸入參數"))

    If b=0 Then MsgBox"除數不能為0",vblnformation,"錯誤": End

    c=a/b

    MsgBOX"1024除以"& b &"的結果是: " & c,64,"結果"

    End Sub

▲示例中代碼的説明
在以上代碼中,通過InputBox()函數接收用户輸入的值並將其轉換為Integer類型,通過單條件If語句判斷輸入的值是否為0,當值為0時通過對話框顯示錯誤信息,並結束程序運行。由於在條件成立時需要執行兩條語句,因此,Then關鍵字右側的兩條語句使用英文冒號分隔;當條件不成立時,直接執行If語句下一行代碼(即c=a/b),代碼運行結果如圖2所示。 [2] 
圖2 圖2
2.多行格式的If語句
在條件成立或不成立時都需要執行特定的操作,並且各項操作都包含有很多代碼,使用單行格式的I鼯句就顯得有些力不從心了,此時可使用多行(塊狀)格式的If語句。多行格式的If語句具有以下兩種語法格式。
If condition Then
 statements
End If
或者
If condition Then
  statements
Else
  elsestatements
End If
以上兩種格式中的condition參數和statements參數與單行格式的If語句中對應的參數作用相同,第二種語法格式中的elsestatements參數是包含在If語句中當條件不成立時執行的操作。第一種語法格式與單行格式的If語句作用相同,僅對條件成立時進行處理,但該結構比單行格式的結構更易於理解閲讀和後期維護。
Sub LoginO
    Dim User As String,Password As String
    User=InputBox(”輸入用户名:”,”登錄”)
    Password=InputBox(”輸入密碼:”,”登錄”)
    If User=”Admin”And Password=”admin”Then
         MsgBox”歡迎您”&User&”l”.vbOKOnly,”成功”
    Else
         MsgBox”用户名或密碼錯誤!”,vbRetryCancel,”失敗”
    EndIf
EndSub
▲示例中代碼的説明
在以上代碼中,通過InputBox()函數接收用户輸入的值,並判斷輸入值與系統保留值是否相同。如果相同,則打開“成功”對話框,如果不同,則顯示“失敗”對話框,代碼運行結果如圖3所示。 [2] 
圖3 圖3
3.多條件的lf語句
使用多條件If語句可以對多個單獨的條件進行判斷,並根據判斷結果執行不同的操作,If語句中對多個條件的判斷主要是通過ElseIf關鍵字來實現的,多條件的If語句的語法格式如下。
If condition Then
  statements
Elself condition-n Then
  elseifstatements
      ......
Else
  elsestatements
End If
其中,condition、statements、elsestatements參數與多行格式的If語句中的各對應參數相同,condition-n參數與condition參數的作用相同,表示同一個If語句中的第n個判斷條件。在多條件If語句中,代碼會從上到下依次測試condition和condition-n參數,當測試到一個condition成立時,即執行其緊臨Then後面的語句,完成後直接跳出If語句。多條件If語句執行的流程如圖4所示。
圖4 圖4
4.嵌套If語句
除了使用多條件If語句來判斷多個獨立條件外,還可以使用嵌套If語句來實現相似的目的。嵌套If語句就是在一個塊結構的If語句內部包含一個完整的If語句。
需要注意的是,無論嵌套多少If語句,每一個If...Then語句必須有一個對應的End If語句,否則會產生語法錯誤。
Select Case語句
Select Case語句可以根據一個條件表達式的值,選擇多組語句中的一組來執行,通常用於判斷用户的操作,並根據用户的不同操作執行不同的代碼。
Select Case語句的語法格式如下。
Select Case testexpression
    Case expressionlist-n
         statements-n
Case Else
    elsestatements
End Select
其中,testexpression為必選參數,表示參與測試的條件,可以是任意數值表達式或字符串表達式;expressionlist.n表示可能的testexpression列表,有幾個Case就需要幾個expressionlist;elsestatements是當所有expressionlist中都沒有testexoression的佰時執行的語句。
Sub Menu()
  Dim UserCh As Integer
  UserCh=CInt(InputBox(”請輸入您的選項(1~4):”,”選擇操作”,1“1”)
  Select Case UserCh
  Case l
    MsgBox”你選擇了1選項,正在為您查詢當前餘額……”,64,”處理中”
    Case 2
    MsgBox”你選擇了2選項,正在查詢您的當月費用……”,64,”處理中”
    Case 3
    MsgBox’t你選擇了3選項,正在為您查詢費用清單……”,64,”處理中”
    Case 4
    MsgBox”你選擇了4選項,感謝您使用本系統!”,64,”退出”
  Case Else
    MsgBox”請輸入正確的選項”,vbRetryCancel,”錯誤”
  End Select
End Sub
▲示例中代碼的説明
在以上代碼中,通過InputBox()函數接收用户輸入的值並將其轉換為Integer類 ,使用Select Case語句測試可能是4個值,根據用户輸入的數值不同顯示不同的對話框,當用户輸入的數值不在1~4範圍內時,顯示“錯誤”對話框。 [2] 

條件語句語句應用

以下通過一些實例來講述條件語句的應用。
例:輸入年份,判斷是否為閏年。
根據例3.3的分析和流程,其程序如下:
/*
程序名稱:ex3-21
建立日期:2015-8-20
程序功能:判斷閏年
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int year;
    scanf(”%d”.&year):
    if(year<=O)
    {
    printf(”數據輸入錯誤!\n”);
    exit(0):
    }
    if(year%4==O&year%100!=0//year%400==0)
    printf(”%d是閏年!\n”,year);
    else
    printf(“%d不是閏年!\n”,year)
    return 0;
}
程序運行結果:
①輸入2()13按Enter鍵
2013不是閏年!
②輸入2012按Enter鍵
2012是閏年!
③輸入100按Enter鍵
數據輸入錯誤! [4] 

條件語句注意問題

條件語句(IF/THEN語句)是算法語言中實現邏輯判斷的重要語句,它在程序設計中有着廣泛的應用。正確、合理地使用條件語句對於保證程序的可靠性、提高程序運行效率以及改善程序的邏輯結構都有重要意義.以下分三個方面談談在設計BASIC程序時,使用條件語句應注意的問題。 [5] 
1、實型量的計算誤差對邏輯判斷的影響
關係表達式中的實型量計算誤差有可能造成條件判斷的失誤,從而影響程序的可靠性。
2、為提高程序運行效率,應避免不必要的條件判斷
計算機進行邏輯判斷比一般的算術運算更費時間,減少不必要的條件判斷可以提高程序運行效率。
3、為改善程序的邏輯結構和增加易讀性,應儘量避免過多的If/then語句的使用(特別是與GOTO語句配合使用的情形)。 [5] 
參考資料
  • 1.    李含光,鄭關勝.《C語言程序設計教程(第2版)》:清華大學出版社,2015年
  • 2.    楊小麗編著.《EXCEL應用大全 全新升級版》:中國鐵道出版社,2016年
  • 3.    (美)John Pollock著;王肖峯譯, .《新手學JavaScript編程 第4版》:清華大學出版社,2014年
  • 4.    李含光,鄭關勝 .《C語言程序設計教程》:清華大學出版社,2015年
  • 5.    陳慶祥,正確合理地使用條件語句,《計算機應用研究》, 1988(4):55-58