第四章選擇結構程式設計

2021-03-03 23:15:50 字數 4323 閱讀 2752

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 備註 關係運算 算術運算 賦值運算優先順序.算術 關係運算...