vb程序設(shè)計(jì)教程課件_第1頁
vb程序設(shè)計(jì)教程課件_第2頁
vb程序設(shè)計(jì)教程課件_第3頁
vb程序設(shè)計(jì)教程課件_第4頁
vb程序設(shè)計(jì)教程課件_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

VisualBasic

程序設(shè)計(jì)教程

(第3版)

HIQHCREDUCATIONPRESS

向泠大孽封駕機(jī)多.基礎(chǔ)??乒?/p>

http://jsjjc.tongj

VB程序設(shè)計(jì)教程(第3版)果書目當(dāng)\

目錄

天、

1工

U

E早

VisualBasic程序設(shè)計(jì)概述

-

天2工、

U

E早

VB可視化編程基礎(chǔ)

-天、

3工

U

E早

VB語言基礎(chǔ)

-天、

4工

行早

章VB控制結(jié)構(gòu)

第5

章數(shù)組和自定義類型

第6

上、過程

7工

身早

上、用戶界面設(shè)計(jì)

8工

身早

分、數(shù)據(jù)文件

9工

身早

圖形操作

第10章數(shù)據(jù)庫應(yīng)用基礎(chǔ)

本書目塞卜

VB程序設(shè)計(jì)教程(第3版)

教學(xué)安排

早內(nèi)容學(xué)時(shí)實(shí)驗(yàn)與學(xué)時(shí)

第1章VisualBasic程序設(shè)計(jì)概述1實(shí)驗(yàn)11+1

第2章VB可視化編程基礎(chǔ)2實(shí)驗(yàn)22+2

第3章vb語言基礎(chǔ)3實(shí)驗(yàn)32+2

第4章VB控制結(jié)構(gòu)6實(shí)驗(yàn)42+2

第5章數(shù)組和自定義類型4實(shí)驗(yàn)52+2

第6章過程4實(shí)驗(yàn)61+1

第7章用戶界面設(shè)計(jì)4實(shí)驗(yàn)72+2

第8章數(shù)據(jù)文件4實(shí)驗(yàn)82+2

第9章圖形操作4實(shí)驗(yàn)92+2

合計(jì)16周48學(xué)時(shí)(32+16)+課外163216+16

*第10章數(shù)據(jù)庫應(yīng)用基礎(chǔ)8實(shí)驗(yàn)102+4

VB程序設(shè)計(jì)教程(第3版)忝書目用學(xué),、3

第4章VB控制結(jié)構(gòu)

4?1順序結(jié)構(gòu)

4?2選擇結(jié)構(gòu)

4?3循環(huán)結(jié)構(gòu)

4?4其它輔助控制語句

4?5綜合應(yīng)用

4?6程序調(diào)試

和目利收

VB程序設(shè)計(jì)教程(第3版)4

4.1順序結(jié)構(gòu)

VB具有結(jié)構(gòu)化程序設(shè)計(jì)的三種程序控制結(jié)構(gòu),

即順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),是程序設(shè)計(jì)

的基礎(chǔ)。

(1)順序結(jié)構(gòu)

各語句按出現(xiàn)的先后次序執(zhí)行

用傳統(tǒng)流程

圖表示為

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄5

(2)選擇結(jié)構(gòu)

根據(jù)條件決定執(zhí)行的語句

VB程序設(shè)計(jì)教程(第3版)本書目勢(shì)

(3)循環(huán)結(jié)構(gòu)

根據(jù)條件重復(fù)執(zhí)行語句(稱為循環(huán)體)

I、當(dāng)型循環(huán)結(jié)構(gòu)II、直到型循環(huán)結(jié)構(gòu)

VB程序設(shè)計(jì)教程(第3版)果書目錄

4.1順序結(jié)構(gòu)

?一般程序設(shè)計(jì)語言中順序結(jié)構(gòu)的語句主要:

賦值語句和輸入/輸出語句等。

?在VB中

賦值語句

輸入/輸出通過:

?文本框控件、標(biāo)簽控件、

?InputBox函數(shù)、MsgBox函數(shù)和過程

?Print方法等來實(shí)現(xiàn)。

VB程序設(shè)計(jì)教程(第3版)本書目勢(shì)

4.1.1賦值語句

形式:變量名=表達(dá)式

[對(duì)象名,]屬性名=表達(dá)式

功能:計(jì)算表達(dá)式的值,再將此值賦給變量或?qū)?/p>

象屬性。

給變量賦值和設(shè)定屬性是VB編程中常見的兩個(gè)

任務(wù)。例如:

n=n+11計(jì)數(shù)累加

Textl.Text='M,'清除文本框的內(nèi)容

Textl.Text="歡迎使用VB”

賦值語句注意點(diǎn)

⑥“二”符號(hào)有兩個(gè)意義

賦值號(hào)、關(guān)系運(yùn)算符等號(hào)

形式相同,系統(tǒng)會(huì)根據(jù)所處的位置判斷符號(hào)的意義

>賦值號(hào)左邊只能是變量,不能是常量、常數(shù)符號(hào)

表達(dá)式。下面均為錯(cuò)誤的賦值語句:

Now()=x+y'左邊是表達(dá)式(函數(shù))

5=sqr(s)+x+y,左邊是常量

VB程序設(shè)計(jì)教程(第3版)⑥本書目更Z章目、.\

4.1.2數(shù)據(jù)輸出和輸入

1.InputBox函數(shù)

打開一個(gè)對(duì)話框,等待用戶輸入,返回字符串

一類型的輸入值。

形式:InputBox(提示[,標(biāo)題兒默認(rèn)值][,x坐標(biāo)

位置兒丫坐標(biāo)位置])///

注意:提示項(xiàng)不能省略。\醯矗名/r^~i

若要多行提示,可在每行

行末加回車換行vbCrLfo/

例4.1利用InputBox輸入基本工資和營業(yè)額)按

營業(yè)額的5%提成,江基實(shí)發(fā)工資并顯示。

VB程序設(shè)計(jì)教程(第3版)

2.MsgBox函數(shù)和MsgBox過程

打開一個(gè)信息框,等待用戶選擇一個(gè)按按鈕。

MsgBox函數(shù)返回所選按鈕的值,

MsgBox過程不返回值

MsgBox函數(shù)形式:

變量[%]=MsgBox(提示[,按鈕兒標(biāo)題])

MsgBox過程形式:

MsgBox提示[,按鈕][,標(biāo)題]

按鈕項(xiàng)是一整型表達(dá)式,決定信息框按鈕的數(shù)

目和類型及出現(xiàn)在信息框上的圖標(biāo)形式。

VB程序設(shè)計(jì)教程(第3版)O本書目史八一章目'.

MsgBox按鈕設(shè)置

分組內(nèi)部常數(shù)值描述

VBOkOnly0確定按鈕

VBOkCancel1確定、取消按鈕

按鈕

VBAboutRetrylgnore2終止、重試、忽略按鈕

數(shù)目

VBYesNoCancel3是、否、取消按鈕

VBYesNo4是、否按鈕

VBRetryCancel5重試、取消按鈕

VBCritical16關(guān)鍵信息圖標(biāo)Q

圖標(biāo)VBQuestion32詢問信息圖標(biāo)卻

類型VBExclamation48警告信息圖標(biāo)Jy

VBInformation64信息圖標(biāo)專

默認(rèn)VBDefaultButtonl0第1個(gè)按鈕為默認(rèn)一

按鈕VBDefaultButton256第2個(gè)按鈕為默認(rèn)

VBDefaultButton3512第3個(gè)按鈕為默認(rèn)

VB程序設(shè)計(jì)教程(第3版)敘本書目史?7章目臬

MsgBox所選按鈕返回值

內(nèi)部常數(shù)返回值被單擊|噬登錄

的按鈕帳號(hào)123456

vbOk1確定密碼火火火火

vbCancel2取消

vbAbort3終止檢驗(yàn)密碼

vbRetry4重試

vblgnore5忽略

八密碼錯(cuò)誤

vbYes6是

vbNo7否匚割瑩□:取消

例列2編一賬號(hào)和密碼輸入的檢驗(yàn)程序,當(dāng)輸入不正

確,如賬號(hào)為非數(shù)字字符,密碼不正確等,顯示有關(guān)

信息,再輸入。

VB程序設(shè)計(jì)教程(第3版)忝書目錄章目錄

3.Print方法

作用:在對(duì)象上輸出信息。

對(duì)象.Print[Spc(77)|Tab(刀)][輸出列表][;

對(duì)象:窗體、圖形框或打印機(jī)。缺省為窗體。

Spc(n)函數(shù):從當(dāng)前位置起空刀個(gè)空格

Tab(n)函數(shù):從最左端開始計(jì)算的第n列

分號(hào):定位在上一個(gè)被顯示的字符之后

逗號(hào):定位在下一個(gè)打印區(qū)開始處(每區(qū)14列)

Print語句尾無分號(hào)或逗號(hào),輸出后換行

例4.3Print方法輸出圖形

利用String函數(shù)顯示重復(fù)字符

利田彳居環(huán)結(jié)物函數(shù)顯不

VB程序設(shè)計(jì)教程(第3版)本書目錄■午

4.Format格式輸出函數(shù)

形式:Format(表達(dá)式[,”格式字符串[)

常用數(shù)值格式化符及舉例

符號(hào)作用表達(dá)式格式字符串顯示結(jié)果

0用0填充不足的位置1234.567“00000.0000”01234.5670

#位置不足時(shí)不填充01234.567”#####.####"1234.567

千分位1234.567”##,##0.000”1,234.567

%數(shù)值乘以100,加百分號(hào)1234.567”####.##%”123456.7%

$在數(shù)字前強(qiáng)加$1234.567”$###.##"$1234.57

E+用指數(shù)表示1234.567n0.00E+00n1.23E-01

例4.4利用Format函數(shù)顯示數(shù)侑。

VB程序設(shè)計(jì)教程(第3版)忝書目用學(xué)16

4.2選擇結(jié)構(gòu)

?計(jì)算機(jī)要處理的問題往往是復(fù)雜多變的,

僅采用順序結(jié)構(gòu)是不夠的。

?必須利用選擇結(jié)構(gòu)等來解決實(shí)際應(yīng)用中的

各種問題。

?VB中主要通過If條件語句和Select情況語

句來實(shí)現(xiàn)。它們都是對(duì)條件進(jìn)行判斷,根據(jù)

判斷結(jié)果,選擇執(zhí)行不同的分支。

VB程序設(shè)計(jì)教程(第3版)本書目錄今、章目錄

4.2.1If條件語句

LIf…Then語句(單分支結(jié)構(gòu))

IfV表達(dá)式》Then

語句塊(可以是一句或多句語句

EndIf語句塊

或Ifv表達(dá)式)ThenV語句》

表達(dá)式:關(guān)系表達(dá)式、邏輯表達(dá)式,算術(shù)表達(dá)式。

表達(dá)式值按非零為True,零為FaIse進(jìn)行判斷。

該語句的作用是當(dāng)表達(dá)式的值為True,執(zhí)行Then后

面的語句塊,否則不做任何操作。

IF演示

VB程序設(shè)計(jì)教程(第3版)本書目錄今、章目錄18

單分支結(jié)構(gòu)

例:已知兩個(gè)數(shù)x和y,比較它們的大小,使得x

大于y。

Ifx<yThen

t=x

x=y

y=t

EndIf

或Ifx<yThent=x:x=y:y=t

簡單If形式無EndIf時(shí),只能是一句語句或語句間用

冒號(hào)分隔,而且必須在一行上書寫。

VB程序設(shè)計(jì)教程(第3版)19

雙分支結(jié)構(gòu)

2.If…Then…Else語句

If表達(dá)式Then―

語句塊1J—i一口

E]§e語句塊i語句塊2

語句塊2vv

EndIf

或If表達(dá)式Then語句1Else語句2

當(dāng)表達(dá)式的值為True時(shí),執(zhí)行Then后面的

語句塊1,否則執(zhí)行Else后面的語句塊2

VB程序設(shè)計(jì)教程(第3版)忝書目錄章目錄

雙分支結(jié)構(gòu)例

計(jì)算分段函數(shù)y」sinx+G7-0

Vcosx-x'+3xx=0

單分支y=cos(x)—x人3+3*x

結(jié)構(gòu)實(shí)現(xiàn)Ifx<>0Theny=sin(x)+sqrt(x^x+1)

Ifx<>0Then

雙分支y=sin(x)+sqr(x*x+1)

Else

結(jié)構(gòu)實(shí)現(xiàn)y=cos(x)—xA3+3*x

EndIf

VB程序設(shè)計(jì)教程(第3版)忝書目錄章目錄

多分支結(jié)構(gòu)

3?lf.??Then.??Elself語句

If表達(dá)式1Then

語句塊1

Elself

[Else

EndIf

作用:根據(jù)不同的表達(dá)式值確定執(zhí)行哪個(gè)語句塊

VB程序設(shè)計(jì)教程(第3版)忝書目錄章目錄

多分支結(jié)構(gòu)例

例4.7已知變量ch中存放了一個(gè)字符,判斷該字符是

字母字符、數(shù)字字符還是其他字符。

IfUCase(ch)>="A”AndUCase(ch)<=Then

MsgBox(ch+“是字母字符")’考慮大小寫字母

Elselfch>=110"Andch<="9"Then'數(shù)字字符

MsgBox(ch+”是數(shù)字字符”)

Else'除上述字符以外的字符

MsgBox(ch+”是其他字符”)

不管有幾個(gè)分支,依次判斷,當(dāng)某條件滿足,執(zhí)行相應(yīng)

的語句,其余分支不再執(zhí)行;若條件都不滿足,且有

Else子句,則執(zhí)行該語句塊,否則什么也不執(zhí)行。

Elself不能寫成日seIf

VB程序設(shè)計(jì)教程(第3版)殿》書目更Z章目臬

If語句的嵌套

If語句的嵌套是指If或日se后面的語句塊中又包含If語

If表達(dá)式1Then

If表達(dá)式2Then

■■■Ifx<yThent=x:x=y:y=t

EndIf

■■■Ify<zThen

EndIft=y:y=z:z=t

例已知x,y,z三個(gè)數(shù),Ifx<yThen

使得x>y>zt=x:x=y:y=t

用一個(gè)IF語句和一個(gè)嵌套EndIf

的IF語句實(shí)現(xiàn)EEnnddIIff

VB程序設(shè)計(jì)教程(第3版)

4-2-2SelectCas。語句

SelectCase變量或表達(dá)式

Case表達(dá)式列表1

語句塊1

Case表達(dá)式列表2

語句塊2表達(dá)式列表與變量或表達(dá)式的類型必

■■■須相同,是下面4種形式之一:

[CaseElse?表達(dá)式例:

語句塊n+1]?一組用逗號(hào)分隔的枚舉值2,4,6,8

EndSelect?表達(dá)式1To表達(dá)式260To100

?Is關(guān)系運(yùn)算符表達(dá)式Is<60

VB程序設(shè)計(jì)教程(第3版)本書目錄章目景

SelectCas。語句例

將例4.7改用SelectCase語句實(shí)現(xiàn):

SelectCasech

Case"a11To"z",To

MsgBox(ch+”是字母字符”)

Case"0"To"9"

MsgBox(ch+”是數(shù)字字符”)

CaseElse

MsgBox(ch+”是其他字符”)

EndSelect

多分支結(jié)構(gòu),用SelectCase語句比If…Then…Elself

語句直觀,程序可讀性強(qiáng)。但不是所有的多分支結(jié)構(gòu)

均可用SelectCase語句代替If…Then…Elself語句。

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄26

SelectCas。語句例

例4.9判斷坐標(biāo)點(diǎn)(x,y),落在哪個(gè)象限。

代碼一代碼二

Ifx>0Andy>0ThenSelectCasex,y

MsgBox("在第一象限”)Casex>0Axdy>0

Elselfx<0Andy>0ThenMsgBox("在第一象限”)

Casexv0Axdy>0

MsgBox("在第二象限“)

MsgBox("在第二象限”)

Elselfx<0Andy<0Then

Casex<0Andy<0

MucRcW〃在第二象陽Q

代碼二錯(cuò)誤:

1.SelectCase后不能出現(xiàn)多個(gè)變量

2.Case后不能出現(xiàn)變量及有關(guān)運(yùn)算符

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄

4.2.3條件函數(shù)

(1)Hf函數(shù)

Hf(表達(dá)式,表達(dá)式為真時(shí)的值,表達(dá)式為假時(shí)的值)

Hf函數(shù)是If...Then...Else結(jié)構(gòu)的簡潔表示

例如,將x,y中大的數(shù),放入Tmax變量中:

Tmax=llf(x>y,x,y)

該語句與如下語句等價(jià):

Ifx>yThenTmax=xElseTmax=y

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄28

4.2.3條件函數(shù)

(2)Choose函數(shù)DimnopAsInteger,opAsChar

Choose健Randomize()

根據(jù)表達(dá)式的任nop=lnt(Rnd()*4+1)

果整數(shù)表達(dá)式4°P=Choose(nop,"x,丁,.,,)

MsgBox("nop="&nop&"op="&op)

例才艮據(jù)Nop的值K

Op=Choose(Nop,5rL

例4.10根據(jù)當(dāng)前日期,顯示今日是星期幾。

t=Choose(Weekday(Now)「星期日”「星期一”「星期

二”「星期三”,“星期四”「星期五”「星期六”)

MsgBoxJ今天是:11&Now&t)

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄29

4.3循環(huán)結(jié)構(gòu)

?計(jì)算機(jī)最擅長的功能之一就是按規(guī)定的條件,

重復(fù)執(zhí)行某些操作。

?例如,按照人口某增長率,對(duì)人口增長統(tǒng)計(jì);

根據(jù)各課程的學(xué)分、績點(diǎn)和學(xué)生的成績,統(tǒng)計(jì)

每個(gè)學(xué)生的平均績點(diǎn)等。

?這類問題都可通過循環(huán)結(jié)構(gòu)來方便地實(shí)現(xiàn)。

VB中提供了主要兩類循環(huán)語句:

?For循環(huán)語句(一般已知循環(huán)次數(shù));

?Do條件型循環(huán)語句(一般未知循環(huán)次數(shù)).

VB程序設(shè)計(jì)教程(第3版)本書目錄今、章目錄

4.3.1For循環(huán)語品

Fori=1To100Step2

For循環(huán)語句用于控制循環(huán)2

For循環(huán)變量=初值ToZsum=sum+i

語句塊Nexti

[ExitFor]VMsgBox(sum)

語句塊

Next循環(huán)變量計(jì)算

循環(huán)變量必須為數(shù)值型。1?100的奇數(shù)和

循環(huán)次數(shù)=加(+憶+1)

「>0初值<終值=1時(shí),可省略

步長1<0初值,終值

j=0死循環(huán)

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄31

For循環(huán)語句

循環(huán)流程:

(1)循環(huán)變量被賦初值,它

僅被賦值一次。

(2)判斷循環(huán)變量是否在終

值內(nèi),如果是,執(zhí)行循環(huán)體;

如果否,結(jié)束循環(huán),執(zhí)行

Next的下一語句。

(3)循環(huán)變量加步長,轉(zhuǎn)Q),

繼續(xù)循環(huán)

例4.12將可打印的

ASCH碼制成表格輸出

VB程序設(shè)計(jì)教程(第3版)忝書目錄章目錄

4.3.2Do.“Loop循環(huán)語句

Do循環(huán)用于控制循環(huán)次數(shù)未知的循環(huán)結(jié)構(gòu)。

形式1:形式2:

Do{Wh"e|Unt"}v條件〉Do

語句塊語句塊

[ExitDo[ExitDo

語句塊]語句塊]

LoopLoop{While|Until}v條件,

形式1為先判斷后執(zhí)行,有可能一次也不執(zhí)行;

形式2為先執(zhí)行后判斷,至少執(zhí)行一次。

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄33

Do“.Loop流程

DoWhileLoop

VB程序設(shè)計(jì)教程(第3版)忝書目錄章目錄

循環(huán)例題

例4.13我國有13億人口,按人口年增長0.8%

計(jì)算,多少年后我國人口超過26億。

解此問題兩種方法,可根據(jù)公式:

26=13(1+0.008)n

log(2)

n二---------------------------------

log(1.008)

直接利用標(biāo)準(zhǔn)函數(shù)對(duì)數(shù)可求得,但求得的年數(shù)不

為整數(shù);也可利用循環(huán)求得。

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄

4.3,3循環(huán)的嵌套

在一個(gè)循環(huán)體內(nèi)又包含了一個(gè)完整的循環(huán)結(jié)構(gòu)

稱為循環(huán)的嵌套。循環(huán)嵌套對(duì)For循環(huán)語句和

Do…Loop語句均適用。

例4.14打印九九乘法表

國ForwlI-1同岡

九九乘法表

1X1=11X2=21X3=31X4=41X5=51X6=61X7=71X8=81X9=9

2X1=22X2=42X3=62X4=82X5=102X6=122X7=142X8=162X9=18

3X1=33X2=63X3=93X4=123X5=153X6=183X7=213X8=243X9=27

4X1=44X2=84X3=124X4=164X5=204X6二244X7=284X8=324X9=36

5X1=55X2=105X3=155X4=205X5=255X6=305X7=355X8=405X9=45

6X1=66X2=126X3=186X4=246X5=306X6=366X7=426X8=486X9=54

7X1=77X2=147X3=217X4=287X5=357X6=427X7=497X8=567X9=63

8X1=88X2=168X3=248X4=328X5=408X6=488X7=568X8=648X9=72

9X1=99X2=189X3=279X4=369X5=459X6=549X7=639X8=729X9=81

思考:打印上三角或下三角程序如何改動(dòng)?

VB程序設(shè)計(jì)教程(第3版)本書目錄章目景

4.4其他輔助控制語句

4.4.1GoTo語句

無條件地轉(zhuǎn)移到標(biāo)號(hào)或行號(hào)指定的那行語句。

GoTo{標(biāo)號(hào)|行號(hào)}

注意:標(biāo)號(hào)是字符序列,首字符必須為字母,標(biāo)號(hào)后

應(yīng)有冒號(hào);行號(hào)是一個(gè)數(shù)字序列;

例4.15判斷輸入的數(shù)是否為素?cái)?shù)

素?cái)?shù)就是除1和本身以外,不能被其他任何整數(shù)整除的

數(shù)。根據(jù)此定義,判別某數(shù)"是否為素?cái)?shù)最簡單的方法

就是依次用途2一療1去除,只要有一個(gè)數(shù)能整除勿,m就

不是素?cái)?shù);否則勿是素?cái)?shù)。

要求一定范圍內(nèi)的素?cái)?shù),只要將m作為外循環(huán)體變量。

VB程序設(shè)計(jì)教程(第3版)本書目錄今、章目錄

4.4.2退出和結(jié)束語句

1.Exit語句

VB中有多種形式的Exit語句,用于退出某種控

制結(jié)構(gòu)的執(zhí)行。Exit的形式如下:

ExitFor、ExitDo>

ExitSub>ExitFunction

2.End語句

獨(dú)立的End語句用于結(jié)束一個(gè)程序的運(yùn)行,它

可以放在任何事件過程中。

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄38

4.5綜合應(yīng)用

例416由計(jì)算機(jī)自動(dòng)產(chǎn)生四則運(yùn)算題,并能判

斷答案的正確性。

設(shè)計(jì)思路:

(1)通過隨機(jī)函數(shù)Rnd產(chǎn)生試題的操作數(shù)和運(yùn)算

符,運(yùn)算符+、?、義、?可對(duì)應(yīng)編號(hào)1~4。產(chǎn)

生表達(dá)式通過Form_Load事件過程。

(2)需要有一個(gè)全局無量保存四則運(yùn)算題的正確

答案,用戶答案可通過文本框輸入。

(3)本題主要將隨機(jī)函數(shù)、If語句、Select語句

綜合在一起使用。

VB程序設(shè)計(jì)教程(第3版)敘本書目史?7章目臬

綜合應(yīng)用■最大公約數(shù)

例4.17用輾轉(zhuǎn)相除法求兩自然數(shù)的最大公約數(shù)。

求最大公約數(shù)的算法思想:

輾轉(zhuǎn)相減法

(1)對(duì)于兩數(shù)陽,n,使得股>〃■m=m-nm>n

■n-n-mn>m

(2)陽除以〃得余數(shù)r■〃為公約數(shù)m-n

(3)若r=0,貝切為最大公約數(shù),DoWhilem<>nmn

Ifm>nThen146

結(jié)束;否則執(zhí)行(4)

m=m-n86

(4)/6小nJ,再重復(fù)執(zhí)行(2)Else26

n=n-m24

EndIf22

Loop

VB程序設(shè)計(jì)教程(第3版)卷書目錄彳章目.

綜合應(yīng)用■級(jí)數(shù)求和

例4.18求自然對(duì)數(shù)e的近似值,其誤差小于0.00001。

1111口1

近彳以公式6=1-1--+—+—+,,,+—+?,?=>一

1!2!3!?!仁!i

分析:本例涉及到程序設(shè)計(jì)中兩個(gè)重要運(yùn)算:

累加Z、連乘

累加:在原有和的基礎(chǔ)上再加一個(gè)數(shù);

連乘:在原有積的基礎(chǔ)上再乘以一個(gè)數(shù)。

該題先求",再將"/進(jìn)行累加,循環(huán)次數(shù)未知,

可先設(shè)置一個(gè)次數(shù)很大的值,然后在循環(huán)體內(nèi)判

斷是否到達(dá)精度,也可用DoWhile來實(shí)現(xiàn)。

VB程序設(shè)計(jì)教程(第3版)出本書目史?7章目臬

綜合應(yīng)用■試湊法

例4?19百元買百雞。假定小雞每只5角,公雞每只2元,

母雞每只3元,編程求解購雞方案。

分析:

(1)設(shè)母雞、公雞、小雞各為x、y>z,列出方程為:

jr+y+z=100

3JT+2J/+0.5N=100

三個(gè)未知數(shù),兩個(gè)方程,此題求若干個(gè)整數(shù)解。

(2)計(jì)算機(jī)求解此類問題,采用試湊法(也稱窮舉法)來

實(shí)現(xiàn),即將可能出現(xiàn)的各種情況一一羅列測(cè)試,判斷

是否滿足條件,采用循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。

VB程序設(shè)計(jì)教程(第3版)本書目錄今、章目錄42

綜合應(yīng)用■遞推法

遞推(迭代)法基本思想是把一個(gè)復(fù)雜的計(jì)算過程轉(zhuǎn)化為

簡單過程的多次重復(fù)。每次都從舊值的基礎(chǔ)上遞推出新

值,并由新值代替舊值。

例4.20小猴有桃若干,第一天吃掉一半多一個(gè);第二

天吃剩下桃子的一半多一個(gè);以后每天都吃尚存桃子的

一半多一個(gè),到第7天只剩一個(gè),問小猴原有桃多少?

分析:用后一天的數(shù)推出前一天的桃子數(shù)。設(shè)第〃天的

桃子為二,是前一天的桃子的二分之一減去1。

1

X

即:Xn=—-1也就是:n-\-+1)義2

2,

迭代法類似的應(yīng)用求高次方程的近似根。

VB程序設(shè)計(jì)教程(第3版)本書目錄今、章目錄43

4.6程序調(diào)試

?隨著程序的復(fù)雜性提高,程序中的錯(cuò)誤也

伴隨而來。

?對(duì)初學(xué)者,看到出現(xiàn)錯(cuò)誤不要害怕,關(guān)鍵

是如何改正錯(cuò)誤,失敗是成功之母。

?上機(jī)的目的,不光是為了驗(yàn)證你編寫的程

序的正確性,還要通過上機(jī)調(diào)試,學(xué)會(huì)查找

和糾正錯(cuò)誤的方法和能力。

?VB為調(diào)試程序提供了一組交互的、有效的

調(diào)試工具。

VB程序設(shè)計(jì)教程(第3版)本書目錄今、章目錄44

4.6-1錯(cuò)誤類型

語法錯(cuò)誤、運(yùn)行時(shí)錯(cuò)誤和邏輯錯(cuò)誤三類。

1、語法錯(cuò)誤

錯(cuò)誤的代碼顯示為紅色,

窗口上顯示出錯(cuò)的原因。

VB程序設(shè)計(jì)教程(第3版)忝書目用不、『章目錄

2、運(yùn)行錯(cuò)誤

指令代碼執(zhí)行了一非法操作引起的。例如,類

型不匹配、試圖打開一個(gè)不存在的文件等。程

序會(huì)自動(dòng)中斷,并給出有關(guān)的錯(cuò)誤信息。

序工程1-Foral(Code)匚~『口|底

Fora▼|[Load

OptionExplicit、-T

PrivateSubForm_Load()

Dima%,b%,c%,flagAsBoolean

Textl.FontSize:"四號(hào)"

EndSul

ZPJLU

VB程序設(shè)計(jì)教程(第3版)46

3、邏輯錯(cuò)誤

程序運(yùn)行后,得不到所期望的結(jié)果,這說明程

序存在邏輯錯(cuò)誤。

例如,運(yùn)算符使用不正確、語句的次序不對(duì)、

循環(huán)語句的起始、終值不正確等。

通常,邏輯錯(cuò)誤不會(huì)產(chǎn)生錯(cuò)誤提示信息,故錯(cuò)

誤較難排除,需要程序員仔細(xì)地閱讀分析程序,

并具有調(diào)試程序的經(jīng)驗(yàn)。

VB程序設(shè)計(jì)教程(第3版)本書目錄今、章目錄47

4.6.2調(diào)試和排錯(cuò)

VB的三種模式

1、設(shè)計(jì)模式(設(shè)計(jì))

可以進(jìn)行程序的界面設(shè)計(jì)、屬性設(shè)置、代碼編

寫等。

2、運(yùn)行模式(運(yùn)行)

執(zhí)行啟動(dòng)命令進(jìn)入運(yùn)行模式。在此階段,可以

查看程序代碼,但不能修改。

3、中斷模式(Break)

執(zhí)行中斷命令,進(jìn)入中斷模式。在中斷模式下

可以查看代碼、修改代碼、檢查數(shù)據(jù)。

VB程序設(shè)計(jì)教程(第3版)本書目錄今、章目錄48

調(diào)試和排錯(cuò)■插入斷點(diǎn)

VB程序設(shè)計(jì)教程(第3版)本書目晏,、^章目暴、.

本章小節(jié)

■結(jié)構(gòu)化程序設(shè)計(jì)三種結(jié)構(gòu)

順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

If■■■Then語句、SelectCase語句、For與

D。循環(huán)語句

■賦值語句與復(fù)合賦值語句

B數(shù)據(jù)輸出和輸入

lnputBox>MsgBox

■常用算法

素?cái)?shù)判定、級(jí)數(shù)求和、試湊法、迭代法解方程

VB程序設(shè)計(jì)教程(第3版)本書目

思考題

1.結(jié)構(gòu)化程序設(shè)計(jì)有哪三種基本結(jié)構(gòu)?

2.MseBox與InputBox有何區(qū)別?

3.多分支If語句與SelectCase語句有何區(qū)別?

4.如果事先不知道循環(huán)次數(shù),如何用

For…Next結(jié)構(gòu)實(shí)現(xiàn)循環(huán)?

5.語法錯(cuò)誤、運(yùn)行時(shí)錯(cuò)誤和邏輯錯(cuò)誤之間有何

區(qū)別?

VB程序設(shè)計(jì)教程(第3版)忝書目錄章目錄

第5章數(shù)組和自定義類型

5?1數(shù)組的概念

5?2數(shù)組的基本操作和排序

5?3列表框和組合框控件

5?4自定義類型及其數(shù)組

5?5綜合應(yīng)用

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄

.ng5,1數(shù)組的概念

1.引例

例5.1求100個(gè)學(xué)生的平均成績,并統(tǒng)計(jì)高于平均分的

人數(shù)。用簡單變量和循環(huán),求平均成績程序段如下:

aver=0

Fori=1To100

mark=lnputBox("輸入學(xué)生成績")

aver=aver+mark

Nexti

aver=aver/100

問題

(1)mark只能放一個(gè)堂生的成績,無法統(tǒng)計(jì)高于平均

分的人數(shù)。|mark

(2)若用簡單變量保存100個(gè)學(xué)生的成績,則需定義

100個(gè)變量和仲用100句輸入語句。由此引入了數(shù)組。

VB程序設(shè)計(jì)教程(第3版)O本書目數(shù)

用數(shù)組解決問題的程序如下:

Dimmark(99)AsIntegerv聲明數(shù)組mark

Dimaver!,overn%,i%

aver=0

Fori=0To99'輸入成績,求分?jǐn)?shù)和

mark(i)=lnputBox("輸入學(xué)生的成績”)

aver=aver+mark(i)

Nexti

aver=aver/100'求100人的平均分

overn=0

Fori=0To99'統(tǒng)計(jì)高于平均分的人數(shù)

Ifmark(i)>averThenovern=overn+1

Nexti

MsgBox(”平均分:"&aver&”高于平均分人數(shù):”&

overn)

mark(0)mark(1)mark(2)...mark(98)mark(99)

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄54

數(shù)組:不是一種數(shù)據(jù)類型,而是一組相同類

型的變量的集合。

作用:用一個(gè)數(shù)組名代表邏輯上相關(guān)的一

批數(shù)據(jù),用下標(biāo)表示該數(shù)組中的各個(gè)元素,

和循環(huán)語句結(jié)合使用,使得程序書寫簡潔。

使用:必須先聲明后使用

VB程序設(shè)計(jì)教程(第3版)本書目錄今、章目錄

56.2數(shù)組聲明

一維數(shù)組

Dim數(shù)組名([下標(biāo)下界To]上界)[As類型]

說明:下標(biāo)下界缺省為0,下標(biāo)上界為常數(shù)。

數(shù)組大小為:下標(biāo)上界?下標(biāo)下界+1。

作用:聲明了數(shù)組名、類型、維數(shù)、數(shù)組大小

在內(nèi)存分配一塊連續(xù)的區(qū)域。

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄56

例:Dimmark(99)AsInteger

聲明了一維定長整型數(shù)組mark,

共有100個(gè)元素,下標(biāo)范圍為0To99;

mark數(shù)組的各元素是mark(0),mark(1)

mark(99);

markji)親示由下標(biāo)i的值決定是哪一個(gè)元素。

mark藪組內(nèi)存分配如下:

mark(0)mark(1)mark(2)???mark(98)mark(99)

每個(gè)數(shù)組元素有一個(gè)唯一的順序號(hào),下標(biāo)不能超

出數(shù)組聲明時(shí)的上、

下界范圍,否則會(huì)產(chǎn)生“下標(biāo)越界”錯(cuò)誤。數(shù)組

元素的使用規(guī)則與同類型的簡單變量相同

VB程序設(shè)計(jì)教程(第3版)O本書目史八一章目'.

多維數(shù)組聲明

Dim數(shù)組名(([下標(biāo)1下界To]上界1,([下標(biāo)下界2To]

上界2…)[As類型]

下標(biāo)數(shù)決定了數(shù)組的維數(shù),數(shù)組的大小為每一維大小

的乘積。

例Dimx(2,4)AsLong

聲明了一個(gè)長整型的二維數(shù)組x;共占據(jù)3X5個(gè)長整

型變量的空間..

x(0,0)x(0,1)x(0,2)x(0,3)x(0,4)

x(1,0)x(1,1)x(1,2)x(1,3)x(1,4)

x(2,0)x(2,1)x(Z2)x(2,3)x(2,4)

VB程序設(shè)計(jì)教程(第3版)本書目受章目

5.1.3動(dòng)態(tài)數(shù)組及聲明

建立動(dòng)態(tài)數(shù)組要分兩步:

用Dim語句聲明數(shù)組,但不能指定數(shù)組大小

Dim數(shù)組名()As數(shù)據(jù)類型

用ReDim語句動(dòng)態(tài)地分配元素個(gè)數(shù)

ReDim數(shù)組名(下標(biāo)[,下標(biāo)2…])

例:Dims()AsSingle

SubForm_Load()

???

ReDims(4,8)

EndSub

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄59

定義動(dòng)態(tài)數(shù)組大小注意:

Dim是說明語句,可出現(xiàn)在程序的任何地

方,而ReDim是執(zhí)行語句,只能在過程中

在過程中可多次使用ReDim語句來改變數(shù)

組的大小,但不能改變維數(shù)和類型

?可在ReDim后加Preserve參數(shù)用來保留

數(shù)組中的數(shù)據(jù),若使用Preserve參數(shù)后,只

能改變最后一維的大小。

例5.2編一個(gè)程序,顯示有n個(gè)數(shù)的非波那契數(shù)

序列

VB程序設(shè)計(jì)教程(第3版)出本書目史?7章目臬

5.2數(shù)組的基本操作

1、數(shù)組的輸入

通過TextBox控件或InputBox函數(shù)輸入

Dims(3,4)ASInteger

Fori=0To3

Forj=0To4

s(IJ)=InputBox("輸入,,&i&“「&j&11元素”)

Nextj

Nexti

VB程序設(shè)計(jì)教程(第3版)本書目錄補(bǔ)一章目錄

2、數(shù)組的輸出

例5.3形成5x5的方陣,分別輸出方陣中各元素、上

三角和下三角元素

BFOXMI0回區(qū))

1產(chǎn)0生方陣數(shù)據(jù)34|顯示o上三1角數(shù)2組3元釘4|顯0示下三角數(shù)組元素

5678967895ir

l*

101112A13A14A12XI31410A1*1

116112

5171819Xe8195*1

20212223242420011718

^A222324

方陣規(guī)律:第一行的元素為04,以后每一行是前一

行對(duì)應(yīng)元素增加5

上三角規(guī)律:每一行的起始列與行號(hào)相同,只要控制

內(nèi)循環(huán)的初值

用Tab函數(shù)或Space定位控制輸出的空格,

VB程序設(shè)計(jì)教程(第3版)

3、求數(shù)組和、最值、位置

例5.4求一維數(shù)組中各元素之和、最小數(shù)組元素,

并將最小值數(shù)組元素與數(shù)組中第一個(gè)元素交換

?:?求元素

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論