摘要:Visual Basic語言符合結(jié)構(gòu)化程序設(shè)計(jì)原則,程序代碼由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)組成,這三種程序結(jié)構(gòu)統(tǒng)稱為控制結(jié)構(gòu)。控制結(jié)構(gòu)是編寫程序代碼的基礎(chǔ)。本文論述了控制結(jié)構(gòu)的幾個(gè)應(yīng)用實(shí)例。
關(guān)鍵詞:VB;控制結(jié)構(gòu);程序設(shè)計(jì)
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)20-30256-03
Control Structure Application Example in VB
QU Shen-ming, XIE Yuan
(Computing Center of Henan University, Kaifeng 475004, China)
Abstract: Visual Basic language conforms to the structurization programming principle, the procedure code is composed by the sequence structure, the choice structure and the recurrent structure, these three kind of program structure is called as the control structure. The control structure is the basis for writting program code. This paper discusses several examples of the control structure.
Key words: Visual Basic; Control Structure; Program Design
1 引言
Visual Basic采用可視化編程技術(shù)、面向?qū)ο蟮氖录?qū)動(dòng)編程機(jī)制,可以快速開發(fā)數(shù)據(jù)庫、多媒體和網(wǎng)絡(luò)應(yīng)用程序,是目前廣泛使用的程序設(shè)計(jì)語言之一。
Visual Basic語言符合結(jié)構(gòu)化程序設(shè)計(jì)[1]原則,程序代碼由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)組成,這三種程序結(jié)構(gòu)統(tǒng)稱為控制結(jié)構(gòu)。控制結(jié)構(gòu)是編寫程序代碼的基礎(chǔ)。順序結(jié)構(gòu)是一種最簡單、最常用的程序結(jié)構(gòu),選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)都要用到順序結(jié)構(gòu)。順序結(jié)構(gòu)中的語句按先后順序執(zhí)行,每個(gè)語句執(zhí)行一次。在實(shí)際應(yīng)用中,常常需要對給定的條件進(jìn)行分析、比較和判斷,并根據(jù)判斷結(jié)果采取不同的操作。在Visual Basic中,這樣的問題通過選擇結(jié)構(gòu)來解決,選擇結(jié)構(gòu)可以控制程序的執(zhí)行流程。在實(shí)際應(yīng)用中,也會(huì)經(jīng)常遇到一些操作并不復(fù)雜,但需要反復(fù)多次處理的問題。使用循環(huán)結(jié)構(gòu)的程序,可以解決這類問題。所謂循環(huán)結(jié)構(gòu),就是當(dāng)滿足設(shè)定的循環(huán)條件時(shí),重復(fù)執(zhí)行一個(gè)語句序列。本文介紹幾個(gè)實(shí)例[2,3],說明如何使用選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)解決實(shí)際問題。
2 應(yīng)用實(shí)例
2.1 輸出設(shè)計(jì)
例1:在窗體上輸出“九九乘法表”,顯示結(jié)果如圖1所示。
程序代碼如下:
Private Sub Form_Click()
Print Tab(40); \"九九乘法表\"
Print Tab(40); \"__________\"
For i = 1 To 9
For j = 1 To i
k = i \"×\" j \"=\" i*j
Print Tab(j*8); k;
Next j
Next i
End Sub
代碼中用到了For…Next循環(huán)嵌套,關(guān)于For…Next循環(huán)語句,幾點(diǎn)說明如下:
(1)循環(huán)變量是一個(gè)數(shù)值變量,初值、終值和步長是數(shù)值表達(dá)式;
(2)Next子句中的循環(huán)變量與For子句中的循環(huán)變量必須是同一個(gè)變量;
(3)For…Next循環(huán)用于循環(huán)次數(shù)已知的情況,循環(huán)次數(shù)=((終值-初值)/步長+1)。
初學(xué)VB者設(shè)計(jì)程序代碼時(shí)常犯如下錯(cuò)誤:
(1)初值和終值寫成非數(shù)值表達(dá)式;
(2)Next子句中的循環(huán)變量與For子句中的循環(huán)變量不是同一個(gè)變量。
例2:編寫程序,顯示圖2所示的“數(shù)字金字塔”。
圖2 數(shù)字金字塔
程序代碼如下:
Private Sub Form_Click()
For i = 1 To 9
For j = 1 To 30-3*i
Print \" \";
Next j
For k = 1 To i
Print k;
Next k
For k = i-1 To 1 Step-1
Print k;
Next k
Next i
End Sub
2.2 數(shù)列求和
例3:求斐波那切(Fibonacci)數(shù)列的前20個(gè)數(shù)(1、1、2、3、5、8、13…)。
f1=1 (n=1)
f2=1 (n=1)
fn=fn-2+fn-1 (n≥1)
程序代碼如下:
Private Sub Form_Click()
Dim fl As Long, f2 As Long
f1 = 1
f2 = 1
For i = 1 To 10
Print f1, f2,
If i Mod 2 = 0 Then Print
f1 = f1+f2
f2 = f2+f1
Next i
End Sub
上例循環(huán)結(jié)構(gòu)中使用了順序結(jié)構(gòu)和選擇結(jié)構(gòu)。
2.3 數(shù)據(jù)查找
例4:先產(chǎn)生一個(gè)有序數(shù)組,在數(shù)組中查找從鍵盤輸入的數(shù)據(jù)。輸入能被5整除的數(shù),找到后輸出數(shù)組下標(biāo)和要查找的數(shù);如果不能被5整除,則輸出“數(shù)據(jù)未找到!”的信息。
程序代碼如下:
Private Sub Form_Click()
Dim S(1 To 1000) As Integer
For i = 1 To 1000
S(i) = i*5
Next i
Top = LBound(S)
Bottom = UBound(S)
K = InputBox(\"輸入要查找的數(shù)據(jù)K!\")
Do Until Top > Bottom
Middle = (Top+Bottom)\\2
If K = S(Middle) Then
Print \"第\" Middle \"個(gè)元素是:\" K
Exit Do
ElseIf K < S(Middle) Then
Bottom = Middle - 1
Else
Top = Middle + 1
End If
Loop
If Top > Bottom Then Print \"數(shù)據(jù)未找到!\"
End Sub
在實(shí)際應(yīng)用中,數(shù)據(jù)查找是常見的問題。本例中將循環(huán)結(jié)構(gòu)語句、多分支選擇結(jié)構(gòu)語句和數(shù)組聯(lián)合使用解決了數(shù)據(jù)查找問題。
2.4 求解代數(shù)方程組
例5:百元買百雞問題。用100元買100只雞,公雞每只5元,母雞每只3元,小雞每3只1元,求公雞、母雞和小雞的個(gè)數(shù)。
設(shè)公雞數(shù)為x,母雞數(shù)為y,小雞數(shù)為z,可建立代數(shù)方程組如下:
x+y+z=100
5x+3y+z/3=100
讓x、y、z都從0到100變化,需要使用三重循環(huán),循環(huán)次數(shù)101×101*101≈100萬次。為了減少循環(huán)次數(shù),假設(shè)100元全部買公雞,只能買20只;100元錢全部買母雞,只能買33只。讓x從0~20變化,y從0~33變化,而z=100-x-y,兩重循環(huán)就可以解決問題。
程序代碼如下:
Private Sub Form_click()
For x = 0 To 20
For y = 0 To 33
z = 100-x-y
If 5*x+3*y+z/3 = 100 Then
Print \"公雞\"; x, \"母雞\"; y, \"小雞\"; z
End If
Next y
Next x
End Sub
3 結(jié)束語
文中論述了控制結(jié)構(gòu)的幾個(gè)應(yīng)用實(shí)例,旨在起舉一反三的作用,熟練掌握了VB中的控制結(jié)構(gòu),就可以編寫較為復(fù)雜的程序。控制結(jié)構(gòu)的應(yīng)用還有待進(jìn)一步探討。
參考文獻(xiàn):
[1] 劉炳文,楊明福,陳定中.全國計(jì)算機(jī)等級考試二級教程——Visual Basic語言設(shè)計(jì)[M]. 修訂版. 高等教育出版社,2002:155-175.
[2] 畢廣吉.Visual Basic基礎(chǔ)與課件制作[M].電子工業(yè)出版社,2002:50-55.
[3] 申石磊,張東生.Visual Basic程序設(shè)計(jì)[M].中國科學(xué)技術(shù)出版社,2007:82-109.
注:“本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。”