條件語句介紹
條件語句是一種根據條件執行不同代碼的語句,如果條件滿足則執行一段代碼,否則執行其他代碼。可將條件語句認為是有點像起因和結果。一種更好的類比方式可能是,使用一些父母可能會說的話,如下面的內容:
“如果你的房間是乾淨的,你會得到甜點。否則,你就得早點去睡覺。”
第一個起因是乾淨的房間,結果是可以得到甜點。第二個起因是不乾淨的房間,結果是必須早點上床休息。
在腳本上,可能需要創建類似的語句。可能如下面的內容一樣:
“如果變數mymoney的值大於1000,那么傳送警告告知我的金融狀況沒問題。否則,發出警告,告知我需要更多錢!”
條件語句作用
以編寫腳本為例,在編寫腳本中,條件語句是非常有用的。與其按照腳本內容執行每一行代碼,不如只有當特定條件滿足時,才執行腳本中的某些代碼。甚至可將單個條件擴展為條件語句的集合,用於決定某些代碼是否執行。
使用條件語句,可以告訴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,所以請將我從很時髦的人群中排除。而這些例子顯示了如何在執行操作之前通過檢查某些條件,達到更多的目的。這些類型的語句在腳本中稱為
控制流。
分類
If語句
If語句是可以測試一個或多個條件的成立與否,並在指定條件成立或不成立時分別執行不同的代碼,其結構主要有以下4種。
1.單行格式的If語句
單行格式的If語句可判斷一個或多個條件的成立與否,並在條件成立時執行一組代碼,如果條件不成立,則跳出當前語句繼續執行下一行代碼。單條件If語句僅在條件成立時執行特定操作,條件不成立時則跳出,其語法格式如下。
If condition Then statements
其中,condition為判斷條件,其最終結果為True或False(或者數值0和非0);statements為條件成立時執行的單條件或多條件語句,如果是多條件語句,各語句之間以英文冒號(:)分隔。單條件If語句執行流程如圖29.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),代碼運行結果如圖29-2所示。
2.多行格式的If語句
在條件成立或不成立時都需要執行特定的操作,並且各項操作都包含有很多代碼,使用單行格式的I鼯句就顯得有些力不從心了,此時可使用多行(塊狀)格式的If語句。多行格式的If語句具有以下兩種語法格式。
If condition Then statementsEnd If
或者
If condition Then statementsElse elsestatementsEnd 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,”失敗” EndIfEndSub
▲示例中代碼的說明
在以上代碼中,通過InputBox()函式接收用戶輸入的值,並判斷輸入值與系統保留值是否相同。如果相同,則打開“成功”對話框,如果不同,則顯示“失敗”對話框,代碼運行結果如圖29-3所示。
3.多條件的lf語句
使用多條件If語句可以對多個單獨的條件進行判斷,並根據判斷結果執行不同的操作,If語句中對多個條件的判斷主要是通過ElseIf關鍵字來實現的,多條件的If語句的語法格式如下。
If condition Then statementsElself condition-n Then elseifstatements ......Else elsestatementsEnd If
其中,condition、statements、elsestatements參數與多行格式的If語句中的各對應參數相同,condition-n參數與condition參數的作用相同,表示同一個If語句中的第n個判斷條件。在多條件If語句中,代碼會從上到下依次測試condition和condition-n參數,當測試到一個condition成立時,即執行其緊臨Then後面的語句,完成後直接跳出If語句。多條件If語句執行的流程如圖29-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-nCase Else elsestatementsEnd 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 SelectEnd Sub
▲示例中代碼的說明
在以上代碼中,通過InputBox()函式接收用戶輸入的值並將其轉換為Integer類 ,使用Select Case語句測試可能是4個值,根據用戶輸入的數值不同顯示不同的對話框,當用戶輸入的數值不在1~4範圍內時,顯示“錯誤”對話框。
條件語句套用
以下通過一些實例來講述條件語句的套用。
例:輸入年份,判斷是否為閏年。
根據例3.3的分析和圖3-4所示的流程,其程式如下:
/*
程式名稱: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鍵
數據輸入錯誤!
使用注意問題
條件語句(IF/THEN語句)是算法語言中實現邏輯判斷的重要語句,它在程式設計中有著廣泛的套用。正確、合理地使用條件語句對於保證程式的可靠性、提高程式運行效率以及改善程式的邏輯結構都有重要意義.以下分三個方面談談在設計BASIC程式時,使用條件語句應注意的問題。
1、實型量的計算誤差對邏輯判斷的影響
關係表達式中的實型量計算誤差有可能造成條件判斷的失誤,從而影響程式的可靠性。
2、為提高程式運行效率,應避免不必要的條件判斷
計算機進行邏輯判斷比一般的算術運算更費時間,減少不必要的條件判斷可以提高程式運行效率。
3、為改善程式的邏輯結構和增加易讀性,應儘量避免過多的If/then語句的使用(特別是與
GOTO語句配合使用的情形)。