4.1 選擇結構程式設計的概念
在實際工作中,常常需要根據某個條件是否成立,來決定下一步應該做什麼工作。編寫程式讓計算機工作,同樣存在這種情況。在這種情況下,程式不再按照**的書寫順序來執行各語句行的語句,而是根據給定的條件來選擇,執行哪些語句行,不執行哪些語句行。
選擇結構程式也稱為分支構造程式,即程式執行到選擇結構時,有兩條以上的可供選擇的程式執行分支。選擇結構的特點是:根據所給定的選擇條件為真(即條件成立)與否,來決定從各實際可能的不同操作分支中,選擇執行某一分支的相應操作,並且任何情況下均有「無論分支多寡,必擇其一;縱然眾多,僅選其一」的特徵。
visual basic 中實現選擇結構的語句主要:
◇if...then
◇if...then...else
◇select case
4.2 條件表示式
在使用選擇結構語句時,要用條件表示式來描述選擇條件。條件表示式一般分為兩類:關係表示式和邏輯表示式。
條件表示式的取值為邏輯值(也稱為布林值):真(true)或假(flase)。在vb中,true轉換為數值等於-1,false轉換為數值等於0。
條件表示式也可以是數值表示式,其值等於非0為true,其值等於0為flase。
4.2.1 關係表示式
在程式中,表示相等、不等、大於、小於的運算子稱為關係運算子或比較運算子,用關係運算子把兩個表示式連線起來就構成關係表示式。在vb中使用的關係運算子共有6種,如表4-1所示。
表4-1 關係運算子
說明:①關係運算子的兩側可以是數值表示式、字元型表示式或日期型表示式,也可以是常量、變數或函式。
②關係表示式正確編譯的條件是:關係運算子兩側表示式的資料型別相同或可以自動轉換為相同。先計算各表示式的值,然後進行關係比較,若關係成立,則返回true(-1),否則返回false(0)。
③關係表示式中,比較的兩個運算元型別不同,比較的方式不同:
如果比較的兩個運算元是數值型,則按其值的大小比較;
如果比較的兩個運算元是日期型資料,將日期看成「yyyymmdd」(年4位、月2位、日2位)的8位整數,按數值的大小比較;
如果比較的兩個運算元是字元型,則按字元的ascii碼值從左到右一一比較,一旦出現不同的字元便停止比較,其中ascii碼值大的字元所在的字串大,常見字元值的大小如下:
"空格"<"0"<…<"9"<"a"<…<"z"<"a"<…<"z"<"任何漢字"
例如:在圖4-1的立即視窗中給出了數值、字元和日期不同資料型別的關係表示式計算的結果。
④帶小數點的單精度數和雙精度數不能進行相等比較,因計算機上進行浮點運算總是有誤差。
⑤各關係運算子的優先順序相同,運算時按其出現的順序從左到右執行。
圖4-1 不同資料型別的比較
4.2.2 邏輯表示式
邏輯表示式也稱為布林表示式,是用邏輯運算子(也稱為布林運算子)連線若干關係表示式或邏輯值而構成的式子。例如,數學中的不等式:0≤x<10,在vb程式中用關係表示式和邏輯表示式等價寫為:
x>=0 and x<3。
vb提供的邏輯運算子有:and、or、not、xor、eqv、imp等6種,其中最常和的是and、or和not,其次是xor,如表4-2所示。邏輯運算子中,只有not是單目運算子(只有乙個數參加運算),其餘都是雙目運算子(有兩個數參加運算)。
表4-2 邏輯運算子
說明:①邏輯運算子兩側都是數值資料,則將數值資料轉換為二進位制的補碼數,1表示真,0表示假,進行按位邏輯運算,結果為乙個十進位制數。
例如,在圖4-2的立即視窗中,給出了表示式為數值的邏輯運算的結果。
若把各表示式中數值轉換為8位二進位制補碼數,最高為符號位,0表示正數,1表示負數,則圖4-2中:
(10 and 7)相當於(00001010 and 00000111),結果為00000010,即十進位制數的2
(10 or 7)相當於(00001010 or 00000111),結果為00001111,即十進位制數的15
(10 xor 7)相當於(00001010 xor 00000111),結果為00001101,即十進位制數的13
(not 7)相當於(not 00000111),結果為11111000,即十進位制數的-8
圖4-2 數值的邏輯運算
②如果在乙個表示式中含有算術運算、字串運算、關係運算和邏輯運算,則首先作算術運算,其次作字串運算,再作關係運算,最後作邏輯運算(參見表4-3)。而在邏輯運算中,各運算子的優先順序由高到低的關係是:not→and→or和xor(or和xor同級)。
在程式設計中,較常使用的是算術運算、關係運算和邏輯運算的混合表示式,如圖4-3的立即視窗。
圖4-3 邏輯運算舉例
4.2.3 運算子的優先順序
在程式設計實現中,常在乙個表示式中進行多種不同的運算操作,vb給種運算操作都規定有固定的求值順序,這個求值順序就是運算子的優先順序。各種運算子的優先順序如表4-3所示。
表4-3 運算子的優先順序
說明:⑴同級運算按照它們從左到右出現的順序進行計算。
⑵可以用括號改變優先順序,強令表示式的某些部分優先執行。
⑶括號內的運算總是先優於括號外的運算,在括號內,運算子的優先順序不變。
例4-1 設變數x=4,y=-1,a=7.5,b=-6.2,求表示式x+y>a+b and not y分析:可以用括號來說明表示式實際的運算順序:
x+y>a+b and not y(a+b)) and (not(y建立乙個工程,為窗體編寫乙個click事件過程:
private sub form_click()
x = 4: y = -1: a = 7.5: b = -6.2
print "x + y > a + b and not y < b="; x + y > a + b and not y < b
print "((x+y)>(a+b))and (not(y (a + b)) and (not (y < b))
end sub
執行程式後,單擊窗體,在窗體上顯示的結果如圖4-4所示,說明vb程式在執行時,是嚴格按規定的優先順序來執行各種運算操作的。
圖4-4 例4-1程式的運**況
4.3 條件語句
條件語句也可簡稱為if語句,是在vb中實現雙分支選擇結構程式最常用的語句,程式根據條件表示式的取值不同,而執行不同的操作。
4.3.1 if…then語句
在vb中,if…then語句有兩種語法格式。
⑴單行結構格式
if 條件表示式 then 語句
⑵塊結構格式
if 條件表示式 then
語句塊end if
說明:①這裡的「條件表示式」可以是邏輯表示式、關係表示式或數值表示式,如果以數值表示式作條件,visual basic將這個值解釋為true或false:乙個為零的數值為false,而任何非零數值都被看作true。
②當程式執行到該語句時,首先計算條件表示式的值,若條件表示式的值為true,則執行then後面的語句或語句塊,否則(條件表示式的值為false)直接執行下一語句(單行結構)或「end if」後的下一條語句(塊結構)。
4.3.2 if…then…else語句
if…then…else語句也有兩種語法格式。
⑴單行結構格式
if 條件表示式 then 語句1 else 語句2
⑵塊結構格式
if 條件表示式 then
語句塊1
else
語句塊2
end if
說明:首先計算條件表示式的值,如果值為true,執行then後面的語句1或語句塊1;如果值為fale,執行else後面的語句2或語句塊2。在執行then或else之後的語句或語句塊之後,會從一行語句或end if之後的語句繼續執行。
例4-2 判斷某個年份是閏年的根據是年份數滿足下述條件之一:
⑴能被4整除,但不能被100整除的年份都是閏年。
⑵能被400整數的年份是閏年。
試編寫乙個程式,提示使用者輸入一年份,然後顯示輸出該年份是否為閏年。
分析:用變數x表示年份,判斷x滿足條件⑴的邏輯表示式為x mod 4=0 and x mod 100<>0,判斷x滿足條件⑵邏輯表示式為x mod 400=0,這樣判斷x滿足閏年年份的條件可以寫為:
x mod 4=0 and x mod 100<>0 or x mod 400=0
根據分析畫出流程式圖4-5所示。為了方便文字的書寫,這裡把第二章介紹的n-s圖便通了一下。
圖4-5 判斷閏年的流程圖
程式設計步驟如下:
⑴建立乙個工程,在窗體上新增乙個命令按鈕***mand1。
圖4-6 例4-2程式的運**況
⑵編寫程式**。
首先編寫窗體的load事件過程,設定控制項的屬性:
private sub form_load()
form1.caption = "是閏年嗎?"
***mand1.caption = "判斷閏年"
第四章選擇結構程式設計
選擇結構是結構化程式設計的三種基本結構之一。c語言用關係運算或邏輯運算來判斷條件是否能夠得到滿足,並根據計算的結果決定程式的不同流程,實現選擇結構的程式設計。4.1 關係運算和邏輯運算 4.1.1 邏輯值及其在c語言中的表示 關係運算和邏輯運算的運算結果都是乙個邏輯值,邏輯值只有兩個值,即 真 和 ...
第四章選擇結構程式設計
4.2 case語句 case語句是由乙個表示式和眾多可選擇的操作序列組成。執行時,根據表示式的求值結果,在眾多的分支中選取乙個分支執行。其形式為 case 表示式 of 常量1 語句1 常量2 語句2 常量n 語句n else 語句 n 1 可選項 end 表示式只能是順序型別 除了實型以外的簡單...
c第四章選擇結構
第四章選擇結構程式設計 一關係運算和邏輯值.1 關係運算.1 關係運算子 2 關係運算的概念 關係運算實際比較運算,其值只有兩種真值或者假值.3 關係表示式 用關係運算子和括號將表示式聯接起來符合c語言語法規定稱為關係表示式.7 3 9 4 備註 關係運算 算術運算 賦值運算優先順序.算術 關係運算...