算法基礎(chǔ)及VB的基本語句課件_第1頁
算法基礎(chǔ)及VB的基本語句課件_第2頁
算法基礎(chǔ)及VB的基本語句課件_第3頁
算法基礎(chǔ)及VB的基本語句課件_第4頁
算法基礎(chǔ)及VB的基本語句課件_第5頁
已閱讀5頁,還剩121頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

算法基礎(chǔ)及VB的基本語句

第4章算法及程序設(shè)計(jì)基礎(chǔ)賦值語句及InputBox、MsgBox函數(shù)

分支結(jié)構(gòu)與分支結(jié)構(gòu)語句循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句程序示例PointstoRemember11/16/2022VisualBasicProgramming算法基礎(chǔ)及VB的基本語句第4章算法及程序設(shè)計(jì)基礎(chǔ)11/算法及程序設(shè)計(jì)基礎(chǔ) 設(shè)計(jì)程序前,根據(jù)實(shí)際問題的特點(diǎn)和需求,同時(shí)考慮到計(jì)算機(jī)的工作特性,確定解決該問題所需要的方法和步驟稱為“算法設(shè)計(jì)”。

算法的概念算法示例算法的特征算法的描述基本算法結(jié)構(gòu)4.111/16/2022VisualBasicProgramming算法及程序設(shè)計(jì)基礎(chǔ) 設(shè)計(jì)程序前,根據(jù)實(shí)際問題的特點(diǎn)和需求算法的概念廣義而言,算法就是解決某個(gè)問題或處理某件事的方法和步驟。狹義而言,算法是專指用計(jì)算機(jī)解決某一問題的方法和步驟。計(jì)算機(jī)算法可以分為兩大類:一類是數(shù)值計(jì)算算法;另一類是非數(shù)值計(jì)算算法。研究解決各種特定類型問題的算法已成為一個(gè)稱為“計(jì)算方法”的專門學(xué)科。對(duì)于同一問題的求解,往往可以設(shè)計(jì)出多種不同的算法。一般而言,評(píng)價(jià)一個(gè)算法的好壞優(yōu)劣,主要看算法是否正確、運(yùn)行的效率及占用系統(tǒng)資源的多少等。11/16/2022VisualBasicProgramming算法的概念廣義而言,算法就是解決某個(gè)問題或處理某件事的方法和算法示例算法1算法211/16/2022VisualBasicProgramming算法示例算法111/11/2022VisualBasic算法1求兩個(gè)自然數(shù)的最大公約數(shù)的算法

S1.輸入兩個(gè)自然數(shù)M、N;S2.求M除以N的余數(shù)R;S3.使M=N,即用N代換M;S4.使N=R,即用R代換N;S5.若R≠0,則重復(fù)執(zhí)行S2、S3、S4(循環(huán)),否則轉(zhuǎn)S6;S6.輸出M,M即為M和N的最大公約數(shù)。本算法是由古希臘數(shù)學(xué)家歐幾里德提出的,所以又稱為“歐幾里德算法”。算法中的S1、S2、S3…叫作算法步驟,每個(gè)算法步驟明確規(guī)定所要進(jìn)行的操作及處理對(duì)象的特性(M、N為自然數(shù))。歐幾里德算法是求兩個(gè)自然數(shù)最大公約數(shù)的經(jīng)典算法。11/16/2022VisualBasicProgramming算法1求兩個(gè)自然數(shù)的最大公約數(shù)的算法S1.輸入兩個(gè)自然數(shù)M算法2在N個(gè)字符數(shù)據(jù)集合中,查找有無 特定的字符串存在

S1.輸入字符數(shù)據(jù)的個(gè)數(shù)N和要查找的數(shù)據(jù)S;S2.使I=1,I用于計(jì)數(shù);S3.從字符數(shù)據(jù)集合中讀取一個(gè)數(shù)據(jù)X;S4.若X=S,輸出“找到S”的信息,算法結(jié)束,否則轉(zhuǎn)S5;S5.使I=I+1,計(jì)數(shù)器計(jì)數(shù);S6.若I≤N;則重復(fù)執(zhí)行S3、S4、S5(循環(huán));否則轉(zhuǎn)S7;S7.輸出“找不到S”信息,算法結(jié)束。本算法也稱為“順序查找算法”,也是在處理非數(shù)值信息時(shí)最常用的一種算法。11/16/2022VisualBasicProgramming算法2在N個(gè)字符數(shù)據(jù)集合中,查找有無 特定算法的特征從上述算法的示例可以看出,作為算法,應(yīng)具備以下特征:1)確定性--算法的每個(gè)步驟都應(yīng)確切無誤,沒有歧義性。2)可行性--算法的每個(gè)步驟都必須是計(jì)算機(jī)能夠有效執(zhí)行、可以實(shí)現(xiàn)的,并可得到確定的結(jié)果。3)有窮性--一個(gè)算法包含的步驟必須是有限的,并在一個(gè)合理的時(shí)間限度內(nèi)可以執(zhí)行完畢。4)輸入性--執(zhí)行算法時(shí)可以有多個(gè)輸入,但也可以沒有輸入(0個(gè)輸入)。5)輸出性--一個(gè)算法必須有1個(gè)或多個(gè)輸出。11/16/2022VisualBasicProgramming算法的特征從上述算法的示例可以看出,作為算法,應(yīng)具備以下特征算法的描述算法可以采用多種方式來表示。比如使用人們的自然語言像英語、漢語等來描述;使用某種代碼符號(hào)來描述或者使用特定的圖形來描述等等。由于圖形的描述方法既形象,又直觀,所以得到廣泛的應(yīng)用。用于描述算法的圖形使用較多的是所謂的流程框圖,簡(jiǎn)稱流程圖。它是使用規(guī)定的圖形符號(hào)來描述算法的。流程圖使用的圖形符號(hào)見表4-1。圖4-1和圖4-2分別是上一節(jié)兩個(gè)算法示例的流程圖。圖框內(nèi)的文字用于說明具體的操作內(nèi)容。顯而易見,使用流程圖比使用自然語言描述算法優(yōu)越地多。

11/16/2022VisualBasicProgramming算法的描述算法可以采用多種方式來表示。比如使用人們的自然語言圖形符號(hào)名稱代表的操作輸入/輸出數(shù)據(jù)的輸入與輸出處理各種形式的數(shù)據(jù)處理判斷判斷選擇,根據(jù)條件滿足與否選擇不同路徑起止流程的起點(diǎn)與終點(diǎn)特定過程一個(gè)定義過的過程流程線連接各個(gè)圖框,表示執(zhí)行順序連接點(diǎn)表示與流程圖其他部分相連接11/16/2022VisualBasicProgramming圖形符號(hào)名稱代表的操作輸入/輸出數(shù)據(jù)的輸入與輸出處理各種形式11/16/2022VisualBasicProgramming11/11/2022VisualBasicProgram基本算法結(jié)構(gòu)“結(jié)構(gòu)化程序設(shè)計(jì)方法”的核心是規(guī)定了算法的三種基本結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

三種基本結(jié)構(gòu)的共同特點(diǎn)是:

1)只有單一的入口和單一的出口;2)結(jié)構(gòu)中的每個(gè)部分都有執(zhí)行到的可能;3)結(jié)構(gòu)內(nèi)不存在永不終止的死循環(huán)。11/16/2022VisualBasicProgramming基本算法結(jié)構(gòu)“結(jié)構(gòu)化程序設(shè)計(jì)方法”的核心是規(guī)定了算法的三種基順序結(jié)構(gòu)11/16/2022VisualBasicProgramming順序結(jié)構(gòu)11/11/2022VisualBasicPro分支結(jié)構(gòu)11/16/2022VisualBasicProgramming分支結(jié)構(gòu)11/11/2022VisualBasicPro循環(huán)結(jié)構(gòu)11/16/2022VisualBasicProgramming循環(huán)結(jié)構(gòu)11/11/2022VisualBasicPro賦值語句及InputBox、MsgBox函數(shù)

賦值語句InputBox函數(shù)MsgBox函數(shù)4.211/16/2022VisualBasicProgramming賦值語句及InputBox、MsgBox函數(shù)賦值語句4.2賦值語句賦值語句的形式不同數(shù)據(jù)類型數(shù)據(jù)的賦值圖4-4一個(gè)說明不同數(shù)據(jù)類型數(shù)據(jù)賦值方式的簡(jiǎn)單程序示例

4.2.111/16/2022VisualBasicProgramming賦值語句賦值語句的形式4.2.111/11/2022Visu賦值語句的形式賦值語句的一般形式是:

其中var表示某個(gè)變量名或?qū)傩悦.?dāng)系統(tǒng)執(zhí)行一個(gè)賦值語句時(shí),將先求出賦值操作符”=”右邊表達(dá)式的值,然后再把該值保存到”=”左邊的變量中。這就是所謂的“賦值”。

使用賦值語句可使變量或某個(gè)對(duì)象的某屬性獲得一個(gè)新值。示例

使用賦值語句還可以獲取一個(gè)對(duì)象返回的當(dāng)前屬性值。例如:var=pety

var=<表達(dá)式>11/16/2022VisualBasicProgramming賦值語句的形式賦值語句的一般形式是:var=<表達(dá)式>賦值語句示例x="Thisisaflower"number%=72Lable1.Text="Filenameis:"Text.Font.Size=12'改變字號(hào)Y=(a+b)/211/16/2022VisualBasicProgramming賦值語句示例x="Thisisaflower"11不同數(shù)據(jù)類型數(shù)據(jù)的賦值變量類型

表達(dá)式類型

系統(tǒng)處理

數(shù)值

數(shù)值

系統(tǒng)先求出表達(dá)式的值,在將其轉(zhuǎn)換為變量類型后再賦值

字符

數(shù)值

系統(tǒng)將把表達(dá)式的值轉(zhuǎn)換為字符型賦給變量

邏輯

數(shù)值

所有的非0值,系統(tǒng)都轉(zhuǎn)換為True賦給變量,0則轉(zhuǎn)換為False賦給變量

整型

邏輯值Ture變量的值將為-1;把邏輯值False賦給整型變量,變量的值為0字符

邏輯值Ture變量的值將為True;把邏輯值False賦給字符變量,變量的值為False數(shù)值

字符

系統(tǒng)將給出數(shù)據(jù)類型不匹配的錯(cuò)誤提示,并停止執(zhí)行

11/16/2022VisualBasicProgramming不同數(shù)據(jù)類型數(shù)據(jù)的賦值變量類型表達(dá)式類型系統(tǒng)處理數(shù)值圖4-4一個(gè)簡(jiǎn)單程序示例

11/16/2022VisualBasicProgramming圖4-4一個(gè)簡(jiǎn)單程序示例11/11/2022VisuInputBox函數(shù)InputBox函數(shù)用來接受用戶通過鍵盤輸入的數(shù)據(jù)。InputBox函數(shù)使用的形式是:

式中,v可以是變體變量或字符串型變量,也可以是數(shù)值型變量。

在調(diào)用InputBox函數(shù)時(shí),屏幕上將產(chǎn)生一個(gè)帶有提示信息的對(duì)話框,用戶輸入數(shù)據(jù)后按回車鍵,即可把輸入的數(shù)據(jù)賦給變量;按Esc鍵或單擊“Cancel”按鈕,則返回0值或空串。

InputBox函數(shù)應(yīng)用示例

4.2.2v=InputBox(Prompt[,title][,defsult][,x,y][,helpfile,context])11/16/2022VisualBasicProgrammingInputBox函數(shù)InputBox函數(shù)用來接受用戶通過鍵盤InputBox函數(shù)的各個(gè)參數(shù)的意義

Prompt:提示用的文字信息;title:對(duì)話框標(biāo)題(字符型),缺省時(shí),為空白;default:顯示在用戶編輯框中的缺省值,缺省時(shí),返回空值;x,y:對(duì)話框在屏幕上顯示時(shí)的位置,單位是特維,(x,y)是對(duì)話框左上角點(diǎn)的坐標(biāo);helpfile,context:幫助文件名及幫助主題號(hào)。有本選項(xiàng)時(shí),在對(duì)話框中自動(dòng)增加一個(gè)幫助按鈕。11/16/2022VisualBasicProgrammingInputBox函數(shù)的各個(gè)參數(shù)的意義Prompt:提示用的InputBox函數(shù)應(yīng)用示例PrivateSubCmd1_Click()DimN_studentAsStringN_student=InputBox("請(qǐng)輸入你的學(xué)號(hào):","程序示例",230001)IfLeft(N_student,2)="23"ThenPrint"你是工程系的學(xué)生!"ElsePrint"你不是工程系的學(xué)生!"EndIfEndSub11/16/2022VisualBasicProgrammingInputBox函數(shù)應(yīng)用示例PrivateSubCmd111/16/2022VisualBasicProgramming11/11/2022VisualBasicProgramMsgBox函數(shù)MsgBox函數(shù)用于向用戶發(fā)布提示信息,并要求用戶作出必要的響應(yīng)。MsgBox函數(shù)的形式是:

MsgBox函數(shù)根據(jù)用戶選擇單擊的按鈕而返回不同的值:如表4-3MsgBox函數(shù)有以下幾種使用方法

4.2.3MsgBox(Prompt[,button][,title][,helpfile,context])11/16/2022VisualBasicProgrammingMsgBox函數(shù)MsgBox函數(shù)用于向用戶發(fā)布提示信息,并要式中各個(gè)參數(shù)的意義

Prompt:提示用的文字信息;

button:這是一個(gè)由4個(gè)數(shù)值常量組成的式子,形式為c1+c2+c3+c4,用于決定信息框中按鈕的個(gè)數(shù)和類型以及出現(xiàn)在信息框中的圖標(biāo)類型,各個(gè)參量的可選值及其功能如表4-2(a)、表4-2(b)、表4-2(c)、表4-2(d)(0值為缺省值)

title:信息框標(biāo)題(字符型),缺省時(shí),為空白;

helpfile,context:幫助文件名及幫助主題號(hào)。有本選項(xiàng)時(shí),在信息框中自動(dòng)增加一個(gè)幫助按鈕。

11/16/2022VisualBasicProgramming式中各個(gè)參數(shù)的意義Prompt:提示用的文字信息;11/表4-2(a)

c1的取值內(nèi)置常量名意義0VbOkOnly只顯示“確定”按鈕1VbOkCancel顯示“確定”和“取消”按鈕2VbAbortRetryIgnore顯示“終止”,“重試”和“忽略”按鈕3VbYesNoCancel顯示“是”,“否”和“取消”按鈕4VbYesNo顯示“是”和“否”按鈕5VbRetryCancel顯示“重試”和“取消”按鈕11/16/2022VisualBasicProgramming表4-2(a)c1的取值內(nèi)置常量名意義0VbOkOnly只表4-2(b)c2的取值內(nèi)置常量名意義16VbCritical顯示關(guān)鍵信息圖標(biāo)32VbQuestion顯示警示疑問圖標(biāo)48VbExclamation顯示警告信息圖標(biāo)64VbInformation顯示通知信息圖標(biāo)11/16/2022VisualBasicProgramming表4-2(b)c2的取值內(nèi)置常量名意義16VbCritica表4-2(c)c3的取值內(nèi)置常量名意義0vbDefaultButton1第一個(gè)按鈕為缺省按鈕256vbDefaultButton2第二個(gè)按鈕為缺省按鈕512vbDefaultButton3第三個(gè)按鈕為缺省按鈕11/16/2022VisualBasicProgramming表4-2(c)c3的取值內(nèi)置常量名意義0vbDefaultB表4-2(d)c4的取值內(nèi)置常量名意義0vbApplicationModel應(yīng)用程序模式,用戶在當(dāng)前應(yīng)用程序繼續(xù)執(zhí)行之前,必須對(duì)信息框做出響應(yīng);信息框位于最前面4096VbSystemModel系統(tǒng)模式,所有應(yīng)用程序均掛起,直到用戶響應(yīng)該信息框?yàn)橹?1/16/2022VisualBasicProgramming表4-2(d)c4的取值內(nèi)置常量名意義0vbApplicat表4-3按鈕名內(nèi)置常量取值OK(確定)vbOK1Cancel(取消)vbCancel2Abort(終止)vbAbort3Retry(重試)vbRetry4Ignore(忽略)vbIgnore5Yes(是)vbYes6No(否)vbNo711/16/2022VisualBasicProgramming表4-3按鈕名內(nèi)置常量取值OK(確定)vbOK1CancelMsgBox函數(shù)的幾種使用方法MsgBox函數(shù)有以下幾種使用方法:使用賦值語句。如:ans=MsgBox(“非法數(shù)據(jù)!”,48,”提示信息”)使用Print方法。例如:PrintMsgBox(“非法數(shù)據(jù)!”,48,”提示信息”)也可以把它等同為一個(gè)方法使用。如:MsgBox“非法數(shù)據(jù)!”,48,”提示信息”三種方法在執(zhí)行時(shí)都可以獲得如圖所示畫面。但第二、三種用法將得不到用戶點(diǎn)擊不同按鈕的返回值(或沒有返回值)。

11/16/2022VisualBasicProgrammingMsgBox函數(shù)的幾種使用方法MsgBox函數(shù)有以下幾種使用分支結(jié)構(gòu)與分支結(jié)構(gòu)語句 分支結(jié)構(gòu)是程序的基本算法結(jié)構(gòu)之一。VB提供了實(shí)現(xiàn)分支結(jié)構(gòu)的相關(guān)語句。

If-Then-Else-EndIf結(jié)構(gòu)語句Select-Case-EndSelect結(jié)構(gòu)語句4.311/16/2022VisualBasicProgramming分支結(jié)構(gòu)與分支結(jié)構(gòu)語句 分支結(jié)構(gòu)是程序的基本算法結(jié)構(gòu)之If-Then-Else-EndIf結(jié)構(gòu)語句該結(jié)構(gòu)語句的一般形式該結(jié)構(gòu)的變形1該結(jié)構(gòu)的變形2[例4-1]已知三角形三個(gè)邊的長(zhǎng)度,設(shè)計(jì)求此三角形面積的程序

[例4-2]一個(gè)有多個(gè)分支的示例程序

4.3.111/16/2022VisualBasicProgrammingIf-Then-Else-EndIf結(jié)構(gòu)語句該結(jié)構(gòu)語句的If結(jié)構(gòu)語句的一般形式IfeThen[A組語句]Else[B組語句]EndIf11/16/2022VisualBasicProgrammingIf結(jié)構(gòu)語句的一般形式IfeThen11/11/2022If結(jié)構(gòu)的變形1IfeThenA組語句EndifIfeThen<語句>11/16/2022VisualBasicProgrammingIf結(jié)構(gòu)的變形1IfeThenIfIf結(jié)構(gòu)的變形2Ife1ThenA1組語句ElseIfe2ThenA2組語句...Endif11/16/2022VisualBasicProgrammingIf結(jié)構(gòu)的變形2Ife1Then11/11/2022Vi當(dāng)a+b>c且a+c>b且b+c>a時(shí),三角形存在,其面積式中:p=(a+b+c)/2[例4-1]已知三角形三個(gè)邊的長(zhǎng)度,設(shè)計(jì)求此三角形面積的程序算法流程圖程序代碼11/16/2022VisualBasicProgramming當(dāng)a+b>c且a+c>b且b+c>a時(shí),三角形存在[例4-1]算法流程圖11/16/2022VisualBasicProgramming[例4-1]算法流程圖11/11/2022VisualB[例4-2]一個(gè)有多個(gè)分支的示例程序程序代碼11/16/2022VisualBasicProgramming[例4-2]一個(gè)有多個(gè)分支的示例程序程序代碼11/11/20[例4-2]程序代碼PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)Ifx<1ThenText2.Text=“這是小于1的數(shù)”ElseIfx<=10ThenText2.Text=“這是1到10之間的數(shù)”ElseText2.Text=”這是大于10的數(shù)”EndIfEndSub11/16/2022VisualBasicProgramming[例4-2]程序代碼PrivateSubCommanSelect-Case-EndSelect結(jié)構(gòu)語句本結(jié)構(gòu)語句提供了實(shí)現(xiàn)多分支結(jié)構(gòu)的另一種方法。它的一般形式是:

例4-2的程序代碼也可使用本結(jié)構(gòu)語句實(shí)現(xiàn)

4.3.2SelectCaseeCasec1A組語句Casec2B組語句...CaseElsen組語句EndSelecte稱為測(cè)試表達(dá)式,可以是算術(shù)表達(dá)式或字符表達(dá)式;c1,c2,...是測(cè)試項(xiàng)(1)具體取值:如:3、5、7.2等(當(dāng)測(cè)試表達(dá)式是算術(shù)表達(dá)式時(shí));(2)連續(xù)的數(shù)據(jù)范圍:如:8To20;BToH等;(3)滿足某個(gè)判決條件:如:Is>20;Is<="P"等。11/16/2022VisualBasicProgrammingSelect-Case-EndSelect結(jié)構(gòu)語句本結(jié)構(gòu)例4-2的程序代碼使用本結(jié)構(gòu)語句實(shí)現(xiàn)PrivateSubCommand1_Click()DimxAsIntegerx=Val(text1.Text)SelectCasexCaseIs<1Text2.text="這是小于1的數(shù)"Case1To10Text2.Text="這是1到10之間的數(shù)"CaseElseText2.Text="這是大于10的數(shù)"EndSelectEndSub11/16/2022VisualBasicProgramming例4-2的程序代碼使用本結(jié)構(gòu)語句實(shí)現(xiàn)PrivateSub循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句 循環(huán)結(jié)構(gòu)也是程序的基本算法結(jié)構(gòu)。所謂循環(huán),就是重復(fù)地執(zhí)行某些操作。

當(dāng)型循環(huán)和直到型循的不同執(zhí)行方式Do-Loop循環(huán)結(jié)構(gòu)語句For-Next循環(huán)結(jié)構(gòu)語句循環(huán)嵌套4.411/16/2022VisualBasicProgramming循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句 循環(huán)結(jié)構(gòu)也是程序的基本算法結(jié)構(gòu)當(dāng)型循環(huán)和直到型循的不同執(zhí)行方式當(dāng)型循環(huán)的不同執(zhí)行方式直到型循環(huán)的不同執(zhí)行方式11/16/2022VisualBasicProgramming當(dāng)型循環(huán)和直到型循的不同執(zhí)行方式當(dāng)型循環(huán)的不同執(zhí)行方式11/Do-Loop循環(huán)結(jié)構(gòu)語句Do-Loop循環(huán)結(jié)構(gòu)語句的四種形式

ExitDo語句

[例4-3]求兩個(gè)自然數(shù)的最大公約數(shù)程序

4.4.11.DoWhilee2.Do......[ExitDo][ExitDo]......LoopLoopWhilee

3.DoUntile4.Do......[ExitDo][ExitDo]......LoopLoopUntile11/16/2022VisualBasicProgrammingDo-Loop循環(huán)結(jié)構(gòu)語句Do-Loop循環(huán)結(jié)構(gòu)語句的四種形ExitDo語句循環(huán)體中,可以包括一條或多條ExitDo語句,如果程序執(zhí)行到ExitDo語句時(shí),就會(huì)直接退出循環(huán),轉(zhuǎn)而執(zhí)行Loop語句的下一條語句。ExitDo語句最常用的形式是與If-Then語句相結(jié)合,即: IfeThenExitDo在執(zhí)行循環(huán)體時(shí),如果條件e被滿足,則執(zhí)行ExitDo語句直接退出循環(huán)。

11/16/2022VisualBasicProgrammingExitDo語句循環(huán)體中,可以包括一條或多條ExitDo[例4-3]求兩個(gè)自然數(shù)的最大公約數(shù)程序本問題的算法采用歐幾里德算法求解由于輸入的數(shù)據(jù)M和N要求是自然數(shù),所以在程序中應(yīng)加入對(duì)數(shù)據(jù)的合法性進(jìn)行檢驗(yàn)的部分;考慮到程序的應(yīng)用范圍,數(shù)據(jù)類型可選用長(zhǎng)整型。

本例中使用了求余(數(shù))運(yùn)算符Mod。使用Mod運(yùn)算符時(shí),切記應(yīng)在它的前后各加一個(gè)空格

程序代碼

11/16/2022VisualBasicProgramming[例4-3]求兩個(gè)自然數(shù)的最大公約數(shù)程序本問題的算法采用歐For-Next循環(huán)結(jié)構(gòu)語句如果事先已知循環(huán)次數(shù),則可使用For-Next循環(huán)結(jié)構(gòu)語句。它的一般形式是:

For-Next循環(huán)結(jié)構(gòu)語句的執(zhí)行方式注意[例4-4]

[例4-5]

4.4.2Forv=e1Toe2[Stepe3]...[ExitFor]...Nextv式中,v是循環(huán)控制變量,應(yīng)為整型或單精度型;e1、e2和e3是控制循環(huán)的參數(shù)。e1為初值、e2為終值、e3為步長(zhǎng)。當(dāng)e3=1時(shí),stepe3部分可省略。11/16/2022VisualBasicProgrammingFor-Next循環(huán)結(jié)構(gòu)語句如果事先已知循環(huán)次數(shù),則可使用FFor-Next循環(huán)結(jié)構(gòu)語句的執(zhí)行方式計(jì)算e1、e2和e3的值;給v賦初值;判v的值是否超過e2,即當(dāng)e3>0時(shí),判v>e2否;當(dāng)e3<0時(shí),判v<e2否,如果未超過,則執(zhí)行循環(huán)體;如果超過了,則退出循環(huán)。執(zhí)行Next語句,v增加一個(gè)步長(zhǎng),即執(zhí)行v=v+e3;轉(zhuǎn)而執(zhí)行判別操作。

11/16/2022VisualBasicProgrammingFor-Next循環(huán)結(jié)構(gòu)語句的執(zhí)行方式計(jì)算e1、e2和e3的注意循環(huán)參數(shù)e1、e2和e3中包含的變量如果在循環(huán)體內(nèi)被改變,不會(huì)影響循環(huán)的執(zhí)行次數(shù);但循環(huán)控制變量若在循環(huán)體內(nèi)被重新賦值,則循環(huán)次數(shù)有可能發(fā)生變化。

十進(jìn)制整數(shù)可準(zhǔn)確轉(zhuǎn)換為二進(jìn)制數(shù)形式,而帶小數(shù)點(diǎn)的十進(jìn)制數(shù)在轉(zhuǎn)換為單(雙)精度數(shù)時(shí)則多半存在數(shù)制轉(zhuǎn)換誤差。若使用非整型數(shù)做循環(huán)控制變量和循環(huán)參數(shù),那么循環(huán)次數(shù)就有可能發(fā)生意想不到的變化。11/16/2022VisualBasicProgramming注意循環(huán)參數(shù)e1、e2和e3中包含的變量如果在循環(huán)體內(nèi)被改變[例4-4]求1到10這十個(gè)數(shù)的和與連乘積

求若干個(gè)數(shù)之和或連乘積,可采用“累加”或“累乘”法。累加法是設(shè)置一個(gè)存放和數(shù)的變量,稱為“累加器”,初始值為0,累加過程通過循環(huán)實(shí)現(xiàn);累乘的算法設(shè)置的是“累乘器”,初始值為1,在循環(huán)體內(nèi),乘數(shù)應(yīng)與累乘器相乘。在求乘積時(shí),應(yīng)注意乘積的大小,設(shè)置適當(dāng)?shù)臄?shù)據(jù)類型。程序代碼

11/16/2022VisualBasicProgramming[例4-4]求1到10這十個(gè)數(shù)的和與連乘積求若干個(gè)數(shù)之和或[例4-5]大寫字母逆序輸出的程序從一個(gè)字符串中找出符合要求的字符是采取對(duì)字符串的每一個(gè)字符逐個(gè)篩選的方法實(shí)現(xiàn)的,本例利用Mid函數(shù)可以從字符串中提取出單個(gè)字符,利用循環(huán)控制處理過程,循環(huán)的終值使用Len函數(shù);對(duì)于符合要求的字符采用連接運(yùn)算組成新字符串;逆序輸出則是通過從后往前逐個(gè)提取字符再連接。

程序代碼11/16/2022VisualBasicProgramming[例4-5]大寫字母逆序輸出的程序從一個(gè)字符串中找出符合要循環(huán)嵌套無論是Do-Loop循環(huán),還是For-Next循環(huán),都可以在大循環(huán)中套小循環(huán)。必須注意:小循環(huán)一定要完整地被包含在大循環(huán)之內(nèi),而不得相互交叉。

PrivateSubForm_Click()Fori=1To9Forj=1To9Printi;"*";j;"=";i*j;NextjPrintNextiEndSub

執(zhí)行本程序,窗體上將顯示九九乘法表

[例4-6]一個(gè)模擬搖獎(jiǎng)的程序

4.4.311/16/2022VisualBasicProgramming循環(huán)嵌套無論是Do-Loop循環(huán),還是For-Next循環(huán),[例4-6]一個(gè)模擬搖獎(jiǎng)的程序設(shè)有100個(gè)人中簽,要從中找出中獎(jiǎng)人。由機(jī)器自動(dòng)隨機(jī)產(chǎn)生1000個(gè)1~100間的數(shù)據(jù),第1000個(gè)隨機(jī)數(shù)據(jù)即為中獎(jiǎng)人的號(hào)碼。

問題的關(guān)鍵是如何產(chǎn)生1~100之間的隨機(jī)整數(shù)。VB提供了一個(gè)可以產(chǎn)生0~1之間均勻分布的隨機(jī)數(shù)的隨機(jī)函數(shù)Rnd(x)。為了生成某個(gè)范圍內(nèi)的隨機(jī)整數(shù),可用以下公式:

Int((ub-lb+1)*Rnd+lb)

這里,ub、lb分別是隨機(jī)整數(shù)范圍的上下限。程序代碼11/16/2022VisualBasicProgramming[例4-6]一個(gè)模擬搖獎(jiǎng)的程序設(shè)有100個(gè)人中簽,要從中找出隨機(jī)函數(shù)Rnd(x)其中,可選的x參數(shù)是Single或任何有效的數(shù)值表達(dá)式

如果使用參數(shù)且參數(shù)x<0,則得到相同的隨機(jī)數(shù);參數(shù)x>0,則得到隨機(jī)序列的下一個(gè)隨機(jī)數(shù);參數(shù)x=0,則返回上一次生成的隨機(jī)數(shù)。不使用x的結(jié)果與x>0相同。對(duì)最初給定的種子都會(huì)生成相同的數(shù)列,因?yàn)槊恳淮握{(diào)用

Rnd

函數(shù)都用數(shù)列中的前一個(gè)數(shù)作為下一個(gè)數(shù)的種子。

調(diào)用

Rnd

之前,可先使用無參數(shù)的

Randomize

語句初始化隨機(jī)數(shù)生成器,該生成器具有從系統(tǒng)計(jì)時(shí)器獲得到的種子。

11/16/2022VisualBasicProgramming隨機(jī)函數(shù)Rnd(x)其中,可選的x參數(shù)是Single程序示例[例4-7]一個(gè)簡(jiǎn)易函數(shù)計(jì)算器程序

[例4-8]個(gè)人收入調(diào)節(jié)稅應(yīng)用程序

[例4-9]利用牛頓迭代法求方程根[例4-10]原碼轉(zhuǎn)換成反碼的程序

4.511/16/2022VisualBasicProgramming程序示例[例4-7]一個(gè)簡(jiǎn)易函數(shù)計(jì)算器程序4.511/11[例4-7]一個(gè)簡(jiǎn)易函數(shù)計(jì)算器程序?yàn)榱吮WC“計(jì)算器”在各種操作狀況下都正常工作,程序需要考慮在用戶沒有在文本框中輸入數(shù)據(jù)或輸入的數(shù)據(jù)超出函數(shù)的定義域時(shí)的出錯(cuò)處理。

程序中使用的IsNumeric(s)函數(shù)用于檢測(cè)自變量s是否是一個(gè)可轉(zhuǎn)換成數(shù)值的數(shù)字串,如果是,則返回邏輯值True,否則返回False。

程序代碼

11/16/2022VisualBasicProgramming[例4-7]一個(gè)簡(jiǎn)易函數(shù)計(jì)算器程序?yàn)榱吮WC“計(jì)算器”在各種操[例4-8]個(gè)人收入調(diào)節(jié)稅應(yīng)用程序

按月收入額計(jì)個(gè)人收入調(diào)節(jié)稅的計(jì)稅公式式中,pay為納稅人的月收入。程序代碼11/16/2022VisualBasicProgramming[例4-8]個(gè)人收入調(diào)節(jié)稅應(yīng)用程序按月收入額計(jì)個(gè)人收入調(diào)節(jié)[例4-9]利用牛頓迭代法求方程根利用牛頓迭代法求方程xex-1=0在x0=0.5附近的一個(gè)根,要求精確到10-7

牛頓迭代法算法說明

程序代碼

11/16/2022VisualBasicProgramming[例4-9]利用牛頓迭代法求方程根利用牛頓迭代法求方程xex牛頓迭代法算法說明牛頓迭代法是求解一元超越方程的常用算法。設(shè)要求解的方程為f(x)=0,并已知一個(gè)不夠精確的初始根x0,則有:

上式稱為牛頓迭代公式。式中,f’(x)是f(x)的導(dǎo)函數(shù)。利用迭代公式,可以依次求出x1、x2、x3、…,當(dāng)|xn+1–xn|≤ε時(shí)的xn+1即為要求的根。

xn+1=xn-f(xn)/f’(xn)n=0,1,2,3…11/16/2022VisualBasicProgramming牛頓迭代法算法說明牛頓迭代法是求解一元超越方程的常用算法。設(shè)[例4-10]原碼轉(zhuǎn)換成反碼的程序Mid函數(shù)的功能除可提取字符串的指定位置的字符之外。也可以如同一個(gè)變量一樣用在賦值語句中,其功能是用指定的字符替換字符串中指定位置的內(nèi)容。本示例使用了Mid函數(shù)的這一功能。程序代碼

11/16/2022VisualBasicProgramming[例4-10]原碼轉(zhuǎn)換成反碼的程序Mid函數(shù)的功能除可提取PointstoRemember11/16/2022VisualBasicProgrammingPointstoRemember11/11/2022Vi算法基礎(chǔ)及VB的基本語句

第4章算法及程序設(shè)計(jì)基礎(chǔ)賦值語句及InputBox、MsgBox函數(shù)

分支結(jié)構(gòu)與分支結(jié)構(gòu)語句循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句程序示例PointstoRemember11/16/2022VisualBasicProgramming算法基礎(chǔ)及VB的基本語句第4章算法及程序設(shè)計(jì)基礎(chǔ)11/算法及程序設(shè)計(jì)基礎(chǔ) 設(shè)計(jì)程序前,根據(jù)實(shí)際問題的特點(diǎn)和需求,同時(shí)考慮到計(jì)算機(jī)的工作特性,確定解決該問題所需要的方法和步驟稱為“算法設(shè)計(jì)”。

算法的概念算法示例算法的特征算法的描述基本算法結(jié)構(gòu)4.111/16/2022VisualBasicProgramming算法及程序設(shè)計(jì)基礎(chǔ) 設(shè)計(jì)程序前,根據(jù)實(shí)際問題的特點(diǎn)和需求算法的概念廣義而言,算法就是解決某個(gè)問題或處理某件事的方法和步驟。狹義而言,算法是專指用計(jì)算機(jī)解決某一問題的方法和步驟。計(jì)算機(jī)算法可以分為兩大類:一類是數(shù)值計(jì)算算法;另一類是非數(shù)值計(jì)算算法。研究解決各種特定類型問題的算法已成為一個(gè)稱為“計(jì)算方法”的專門學(xué)科。對(duì)于同一問題的求解,往往可以設(shè)計(jì)出多種不同的算法。一般而言,評(píng)價(jià)一個(gè)算法的好壞優(yōu)劣,主要看算法是否正確、運(yùn)行的效率及占用系統(tǒng)資源的多少等。11/16/2022VisualBasicProgramming算法的概念廣義而言,算法就是解決某個(gè)問題或處理某件事的方法和算法示例算法1算法211/16/2022VisualBasicProgramming算法示例算法111/11/2022VisualBasic算法1求兩個(gè)自然數(shù)的最大公約數(shù)的算法

S1.輸入兩個(gè)自然數(shù)M、N;S2.求M除以N的余數(shù)R;S3.使M=N,即用N代換M;S4.使N=R,即用R代換N;S5.若R≠0,則重復(fù)執(zhí)行S2、S3、S4(循環(huán)),否則轉(zhuǎn)S6;S6.輸出M,M即為M和N的最大公約數(shù)。本算法是由古希臘數(shù)學(xué)家歐幾里德提出的,所以又稱為“歐幾里德算法”。算法中的S1、S2、S3…叫作算法步驟,每個(gè)算法步驟明確規(guī)定所要進(jìn)行的操作及處理對(duì)象的特性(M、N為自然數(shù))。歐幾里德算法是求兩個(gè)自然數(shù)最大公約數(shù)的經(jīng)典算法。11/16/2022VisualBasicProgramming算法1求兩個(gè)自然數(shù)的最大公約數(shù)的算法S1.輸入兩個(gè)自然數(shù)M算法2在N個(gè)字符數(shù)據(jù)集合中,查找有無 特定的字符串存在

S1.輸入字符數(shù)據(jù)的個(gè)數(shù)N和要查找的數(shù)據(jù)S;S2.使I=1,I用于計(jì)數(shù);S3.從字符數(shù)據(jù)集合中讀取一個(gè)數(shù)據(jù)X;S4.若X=S,輸出“找到S”的信息,算法結(jié)束,否則轉(zhuǎn)S5;S5.使I=I+1,計(jì)數(shù)器計(jì)數(shù);S6.若I≤N;則重復(fù)執(zhí)行S3、S4、S5(循環(huán));否則轉(zhuǎn)S7;S7.輸出“找不到S”信息,算法結(jié)束。本算法也稱為“順序查找算法”,也是在處理非數(shù)值信息時(shí)最常用的一種算法。11/16/2022VisualBasicProgramming算法2在N個(gè)字符數(shù)據(jù)集合中,查找有無 特定算法的特征從上述算法的示例可以看出,作為算法,應(yīng)具備以下特征:1)確定性--算法的每個(gè)步驟都應(yīng)確切無誤,沒有歧義性。2)可行性--算法的每個(gè)步驟都必須是計(jì)算機(jī)能夠有效執(zhí)行、可以實(shí)現(xiàn)的,并可得到確定的結(jié)果。3)有窮性--一個(gè)算法包含的步驟必須是有限的,并在一個(gè)合理的時(shí)間限度內(nèi)可以執(zhí)行完畢。4)輸入性--執(zhí)行算法時(shí)可以有多個(gè)輸入,但也可以沒有輸入(0個(gè)輸入)。5)輸出性--一個(gè)算法必須有1個(gè)或多個(gè)輸出。11/16/2022VisualBasicProgramming算法的特征從上述算法的示例可以看出,作為算法,應(yīng)具備以下特征算法的描述算法可以采用多種方式來表示。比如使用人們的自然語言像英語、漢語等來描述;使用某種代碼符號(hào)來描述或者使用特定的圖形來描述等等。由于圖形的描述方法既形象,又直觀,所以得到廣泛的應(yīng)用。用于描述算法的圖形使用較多的是所謂的流程框圖,簡(jiǎn)稱流程圖。它是使用規(guī)定的圖形符號(hào)來描述算法的。流程圖使用的圖形符號(hào)見表4-1。圖4-1和圖4-2分別是上一節(jié)兩個(gè)算法示例的流程圖。圖框內(nèi)的文字用于說明具體的操作內(nèi)容。顯而易見,使用流程圖比使用自然語言描述算法優(yōu)越地多。

11/16/2022VisualBasicProgramming算法的描述算法可以采用多種方式來表示。比如使用人們的自然語言圖形符號(hào)名稱代表的操作輸入/輸出數(shù)據(jù)的輸入與輸出處理各種形式的數(shù)據(jù)處理判斷判斷選擇,根據(jù)條件滿足與否選擇不同路徑起止流程的起點(diǎn)與終點(diǎn)特定過程一個(gè)定義過的過程流程線連接各個(gè)圖框,表示執(zhí)行順序連接點(diǎn)表示與流程圖其他部分相連接11/16/2022VisualBasicProgramming圖形符號(hào)名稱代表的操作輸入/輸出數(shù)據(jù)的輸入與輸出處理各種形式11/16/2022VisualBasicProgramming11/11/2022VisualBasicProgram基本算法結(jié)構(gòu)“結(jié)構(gòu)化程序設(shè)計(jì)方法”的核心是規(guī)定了算法的三種基本結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

三種基本結(jié)構(gòu)的共同特點(diǎn)是:

1)只有單一的入口和單一的出口;2)結(jié)構(gòu)中的每個(gè)部分都有執(zhí)行到的可能;3)結(jié)構(gòu)內(nèi)不存在永不終止的死循環(huán)。11/16/2022VisualBasicProgramming基本算法結(jié)構(gòu)“結(jié)構(gòu)化程序設(shè)計(jì)方法”的核心是規(guī)定了算法的三種基順序結(jié)構(gòu)11/16/2022VisualBasicProgramming順序結(jié)構(gòu)11/11/2022VisualBasicPro分支結(jié)構(gòu)11/16/2022VisualBasicProgramming分支結(jié)構(gòu)11/11/2022VisualBasicPro循環(huán)結(jié)構(gòu)11/16/2022VisualBasicProgramming循環(huán)結(jié)構(gòu)11/11/2022VisualBasicPro賦值語句及InputBox、MsgBox函數(shù)

賦值語句InputBox函數(shù)MsgBox函數(shù)4.211/16/2022VisualBasicProgramming賦值語句及InputBox、MsgBox函數(shù)賦值語句4.2賦值語句賦值語句的形式不同數(shù)據(jù)類型數(shù)據(jù)的賦值圖4-4一個(gè)說明不同數(shù)據(jù)類型數(shù)據(jù)賦值方式的簡(jiǎn)單程序示例

4.2.111/16/2022VisualBasicProgramming賦值語句賦值語句的形式4.2.111/11/2022Visu賦值語句的形式賦值語句的一般形式是:

其中var表示某個(gè)變量名或?qū)傩悦?。?dāng)系統(tǒng)執(zhí)行一個(gè)賦值語句時(shí),將先求出賦值操作符”=”右邊表達(dá)式的值,然后再把該值保存到”=”左邊的變量中。這就是所謂的“賦值”。

使用賦值語句可使變量或某個(gè)對(duì)象的某屬性獲得一個(gè)新值。示例

使用賦值語句還可以獲取一個(gè)對(duì)象返回的當(dāng)前屬性值。例如:var=pety

var=<表達(dá)式>11/16/2022VisualBasicProgramming賦值語句的形式賦值語句的一般形式是:var=<表達(dá)式>賦值語句示例x="Thisisaflower"number%=72Lable1.Text="Filenameis:"Text.Font.Size=12'改變字號(hào)Y=(a+b)/211/16/2022VisualBasicProgramming賦值語句示例x="Thisisaflower"11不同數(shù)據(jù)類型數(shù)據(jù)的賦值變量類型

表達(dá)式類型

系統(tǒng)處理

數(shù)值

數(shù)值

系統(tǒng)先求出表達(dá)式的值,在將其轉(zhuǎn)換為變量類型后再賦值

字符

數(shù)值

系統(tǒng)將把表達(dá)式的值轉(zhuǎn)換為字符型賦給變量

邏輯

數(shù)值

所有的非0值,系統(tǒng)都轉(zhuǎn)換為True賦給變量,0則轉(zhuǎn)換為False賦給變量

整型

邏輯值Ture變量的值將為-1;把邏輯值False賦給整型變量,變量的值為0字符

邏輯值Ture變量的值將為True;把邏輯值False賦給字符變量,變量的值為False數(shù)值

字符

系統(tǒng)將給出數(shù)據(jù)類型不匹配的錯(cuò)誤提示,并停止執(zhí)行

11/16/2022VisualBasicProgramming不同數(shù)據(jù)類型數(shù)據(jù)的賦值變量類型表達(dá)式類型系統(tǒng)處理數(shù)值圖4-4一個(gè)簡(jiǎn)單程序示例

11/16/2022VisualBasicProgramming圖4-4一個(gè)簡(jiǎn)單程序示例11/11/2022VisuInputBox函數(shù)InputBox函數(shù)用來接受用戶通過鍵盤輸入的數(shù)據(jù)。InputBox函數(shù)使用的形式是:

式中,v可以是變體變量或字符串型變量,也可以是數(shù)值型變量。

在調(diào)用InputBox函數(shù)時(shí),屏幕上將產(chǎn)生一個(gè)帶有提示信息的對(duì)話框,用戶輸入數(shù)據(jù)后按回車鍵,即可把輸入的數(shù)據(jù)賦給變量;按Esc鍵或單擊“Cancel”按鈕,則返回0值或空串。

InputBox函數(shù)應(yīng)用示例

4.2.2v=InputBox(Prompt[,title][,defsult][,x,y][,helpfile,context])11/16/2022VisualBasicProgrammingInputBox函數(shù)InputBox函數(shù)用來接受用戶通過鍵盤InputBox函數(shù)的各個(gè)參數(shù)的意義

Prompt:提示用的文字信息;title:對(duì)話框標(biāo)題(字符型),缺省時(shí),為空白;default:顯示在用戶編輯框中的缺省值,缺省時(shí),返回空值;x,y:對(duì)話框在屏幕上顯示時(shí)的位置,單位是特維,(x,y)是對(duì)話框左上角點(diǎn)的坐標(biāo);helpfile,context:幫助文件名及幫助主題號(hào)。有本選項(xiàng)時(shí),在對(duì)話框中自動(dòng)增加一個(gè)幫助按鈕。11/16/2022VisualBasicProgrammingInputBox函數(shù)的各個(gè)參數(shù)的意義Prompt:提示用的InputBox函數(shù)應(yīng)用示例PrivateSubCmd1_Click()DimN_studentAsStringN_student=InputBox("請(qǐng)輸入你的學(xué)號(hào):","程序示例",230001)IfLeft(N_student,2)="23"ThenPrint"你是工程系的學(xué)生!"ElsePrint"你不是工程系的學(xué)生!"EndIfEndSub11/16/2022VisualBasicProgrammingInputBox函數(shù)應(yīng)用示例PrivateSubCmd111/16/2022VisualBasicProgramming11/11/2022VisualBasicProgramMsgBox函數(shù)MsgBox函數(shù)用于向用戶發(fā)布提示信息,并要求用戶作出必要的響應(yīng)。MsgBox函數(shù)的形式是:

MsgBox函數(shù)根據(jù)用戶選擇單擊的按鈕而返回不同的值:如表4-3MsgBox函數(shù)有以下幾種使用方法

4.2.3MsgBox(Prompt[,button][,title][,helpfile,context])11/16/2022VisualBasicProgrammingMsgBox函數(shù)MsgBox函數(shù)用于向用戶發(fā)布提示信息,并要式中各個(gè)參數(shù)的意義

Prompt:提示用的文字信息;

button:這是一個(gè)由4個(gè)數(shù)值常量組成的式子,形式為c1+c2+c3+c4,用于決定信息框中按鈕的個(gè)數(shù)和類型以及出現(xiàn)在信息框中的圖標(biāo)類型,各個(gè)參量的可選值及其功能如表4-2(a)、表4-2(b)、表4-2(c)、表4-2(d)(0值為缺省值)

title:信息框標(biāo)題(字符型),缺省時(shí),為空白;

helpfile,context:幫助文件名及幫助主題號(hào)。有本選項(xiàng)時(shí),在信息框中自動(dòng)增加一個(gè)幫助按鈕。

11/16/2022VisualBasicProgramming式中各個(gè)參數(shù)的意義Prompt:提示用的文字信息;11/表4-2(a)

c1的取值內(nèi)置常量名意義0VbOkOnly只顯示“確定”按鈕1VbOkCancel顯示“確定”和“取消”按鈕2VbAbortRetryIgnore顯示“終止”,“重試”和“忽略”按鈕3VbYesNoCancel顯示“是”,“否”和“取消”按鈕4VbYesNo顯示“是”和“否”按鈕5VbRetryCancel顯示“重試”和“取消”按鈕11/16/2022VisualBasicProgramming表4-2(a)c1的取值內(nèi)置常量名意義0VbOkOnly只表4-2(b)c2的取值內(nèi)置常量名意義16VbCritical顯示關(guān)鍵信息圖標(biāo)32VbQuestion顯示警示疑問圖標(biāo)48VbExclamation顯示警告信息圖標(biāo)64VbInformation顯示通知信息圖標(biāo)11/16/2022VisualBasicProgramming表4-2(b)c2的取值內(nèi)置常量名意義16VbCritica表4-2(c)c3的取值內(nèi)置常量名意義0vbDefaultButton1第一個(gè)按鈕為缺省按鈕256vbDefaultButton2第二個(gè)按鈕為缺省按鈕512vbDefaultButton3第三個(gè)按鈕為缺省按鈕11/16/2022VisualBasicProgramming表4-2(c)c3的取值內(nèi)置常量名意義0vbDefaultB表4-2(d)c4的取值內(nèi)置常量名意義0vbApplicationModel應(yīng)用程序模式,用戶在當(dāng)前應(yīng)用程序繼續(xù)執(zhí)行之前,必須對(duì)信息框做出響應(yīng);信息框位于最前面4096VbSystemModel系統(tǒng)模式,所有應(yīng)用程序均掛起,直到用戶響應(yīng)該信息框?yàn)橹?1/16/2022VisualBasicProgramming表4-2(d)c4的取值內(nèi)置常量名意義0vbApplicat表4-3按鈕名內(nèi)置常量取值OK(確定)vbOK1Cancel(取消)vbCancel2Abort(終止)vbAbort3Retry(重試)vbRetry4Ignore(忽略)vbIgnore5Yes(是)vbYes6No(否)vbNo711/16/2022VisualBasicProgramming表4-3按鈕名內(nèi)置常量取值OK(確定)vbOK1CancelMsgBox函數(shù)的幾種使用方法MsgBox函數(shù)有以下幾種使用方法:使用賦值語句。如:ans=MsgBox(“非法數(shù)據(jù)!”,48,”提示信息”)使用Print方法。例如:PrintMsgBox(“非法數(shù)據(jù)!”,48,”提示信息”)也可以把它等同為一個(gè)方法使用。如:MsgBox“非法數(shù)據(jù)!”,48,”提示信息”三種方法在執(zhí)行時(shí)都可以獲得如圖所示畫面。但第二、三種用法將得不到用戶點(diǎn)擊不同按鈕的返回值(或沒有返回值)。

11/16/2022VisualBasicProgrammingMsgBox函數(shù)的幾種使用方法MsgBox函數(shù)有以下幾種使用分支結(jié)構(gòu)與分支結(jié)構(gòu)語句 分支結(jié)構(gòu)是程序的基本算法結(jié)構(gòu)之一。VB提供了實(shí)現(xiàn)分支結(jié)構(gòu)的相關(guān)語句。

If-Then-Else-EndIf結(jié)構(gòu)語句Select-Case-EndSelect結(jié)構(gòu)語句4.311/16/2022VisualBasicProgramming分支結(jié)構(gòu)與分支結(jié)構(gòu)語句 分支結(jié)構(gòu)是程序的基本算法結(jié)構(gòu)之If-Then-Else-EndIf結(jié)構(gòu)語句該結(jié)構(gòu)語句的一般形式該結(jié)構(gòu)的變形1該結(jié)構(gòu)的變形2[例4-1]已知三角形三個(gè)邊的長(zhǎng)度,設(shè)計(jì)求此三角形面積的程序

[例4-2]一個(gè)有多個(gè)分支的示例程序

4.3.111/16/2022VisualBasicProgrammingIf-Then-Else-EndIf結(jié)構(gòu)語句該結(jié)構(gòu)語句的If結(jié)構(gòu)語句的一般形式IfeThen[A組語句]Else[B組語句]EndIf11/16/2022VisualBasicProgrammingIf結(jié)構(gòu)語句的一般形式IfeThen11/11/2022If結(jié)構(gòu)的變形1IfeThenA組語句EndifIfeThen<語句>11/16/2022VisualBasicProgrammingIf結(jié)構(gòu)的變形1IfeThenIfIf結(jié)構(gòu)的變形2Ife1ThenA1組語句ElseIfe2ThenA2組語句...Endif11/16/2022VisualBasicProgrammingIf結(jié)構(gòu)的變形2Ife1Then11/11/2022Vi當(dāng)a+b>c且a+c>b且b+c>a時(shí),三角形存在,其面積式中:p=(a+b+c)/2[例4-1]已知三角形三個(gè)邊的長(zhǎng)度,設(shè)計(jì)求此三角形面積的程序算法流程圖程序代碼11/16/2022VisualBasicProgramming當(dāng)a+b>c且a+c>b且b+c>a時(shí),三角形存在[例4-1]算法流程圖11/16/2022VisualBasicProgramming[例4-1]算法流程圖11/11/2022VisualB[例4-2]一個(gè)有多個(gè)分支的示例程序程序代碼11/16/2022VisualBasicProgramming[例4-2]一個(gè)有多個(gè)分支的示例程序程序代碼11/11/20[例4-2]程序代碼PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)Ifx<1ThenText2.Text=“這是小于1的數(shù)”ElseIfx<=10ThenText2.Text=“這是1到10之間的數(shù)”ElseText2.Text=”這是大于10的數(shù)”EndIfEndSub11/16/2022VisualBasicProgramming[例4-2]程序代碼PrivateSubCommanSelect-Case-EndSelect結(jié)構(gòu)語句本結(jié)構(gòu)語句提供了實(shí)現(xiàn)多分支結(jié)構(gòu)的另一種方法。它的一般形式是:

例4-2的程序代碼也可使用本結(jié)構(gòu)語句實(shí)現(xiàn)

4.3.2SelectCaseeCasec1A組語句Casec2B組語句...CaseElsen組語句EndSelecte稱為測(cè)試表達(dá)式,可以是算術(shù)表達(dá)式或字符表達(dá)式;c1,c2,...是測(cè)試項(xiàng)(1)具體取值:如:3、5、7.2等(當(dāng)測(cè)試表達(dá)式是算術(shù)表達(dá)式時(shí));(2)連續(xù)的數(shù)據(jù)范圍:如:8To20;BToH等;(3)滿足某個(gè)判決條件:如:Is>20;Is<="P"等。11/16/2022VisualBasicProgrammingSelect-Case-EndSelect結(jié)構(gòu)語句本結(jié)構(gòu)例4-2的程序代碼使用本結(jié)構(gòu)語句實(shí)現(xiàn)PrivateSubCommand1_Click()DimxAsIntegerx=Val(text1.Text)SelectCasexCaseIs<1Text2.text="這是小于1的數(shù)"Case1To10Text2.Text="這是1到10之間的數(shù)"CaseElseText2.Text="這是大于10的數(shù)"EndSelectEndSub11/16/2022VisualBasicProgramming例4-2的程序代碼使用本結(jié)構(gòu)語句實(shí)現(xiàn)PrivateSub循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句 循環(huán)結(jié)構(gòu)也是程序的基本算法結(jié)構(gòu)。所謂循環(huán),就是重復(fù)地執(zhí)行某些操作。

當(dāng)型循環(huán)和直到型循的不同執(zhí)行方式Do-Loop循環(huán)結(jié)構(gòu)語句For-Next循環(huán)結(jié)構(gòu)語句循環(huán)嵌套4.411/16/2022VisualBasicProgramming循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句 循環(huán)結(jié)構(gòu)也是程序的基本算法結(jié)構(gòu)當(dāng)型循環(huán)和直到型循的不同執(zhí)行方式當(dāng)型循環(huán)的不同執(zhí)行方式直到型循環(huán)的不同執(zhí)行方式11/16/2022VisualBasicProgramming當(dāng)型循環(huán)和直到型循的不同執(zhí)行方式當(dāng)型循環(huán)的不同執(zhí)行方式11/Do-Loop循環(huán)結(jié)構(gòu)語句Do-Loop循環(huán)結(jié)構(gòu)語句的四種形式

ExitDo語句

[例4-3]求兩個(gè)自然數(shù)的最大公約數(shù)程序

4.4.11.DoWhilee2.Do......[ExitDo][ExitDo]......LoopLoopWhilee

3.DoUntile4.Do......[ExitDo][ExitDo]......LoopLoopUntile11/16/2022VisualBasicProgrammingDo-Loop循環(huán)結(jié)構(gòu)語句Do-Loop循環(huán)結(jié)構(gòu)語句的四種形ExitDo語句循環(huán)體中,可以包括一條或多條ExitDo語句,如果程序執(zhí)行到ExitDo語句時(shí),就會(huì)直接退出循環(huán),轉(zhuǎn)而執(zhí)行Loop語句的下一條語句。ExitDo語句最常用的形式是與If-Then語句相結(jié)合,即: IfeThenExitDo在執(zhí)行循環(huán)體時(shí),如果條件e被滿足,則執(zhí)行ExitDo語句直接退出循環(huán)。

11/16/2022VisualBasicProgrammingExitDo語句循環(huán)體中,可以包括一條或多條ExitDo[例4-3]求兩個(gè)自然數(shù)的最大公約數(shù)程序本問題的算法采用歐幾里德算法求解由于輸入的數(shù)據(jù)M和N要求是自然數(shù),所以在程序中應(yīng)加入對(duì)數(shù)據(jù)的合法性進(jìn)行檢驗(yàn)的部分;考慮到程序的應(yīng)用范圍,數(shù)據(jù)類型可選用長(zhǎng)整型。

本例中使用了求余(數(shù))運(yùn)算符Mod。使用Mod運(yùn)算符時(shí),切記應(yīng)在它的前后各加一個(gè)空格

程序代碼

11/16/2022VisualBasicProgramming[例4-3]求兩個(gè)自然數(shù)的最大公約數(shù)程序本問題的算法采用歐For-Next循環(huán)結(jié)構(gòu)語句如果事先已知循環(huán)次數(shù),則可使用For-Next循環(huán)結(jié)構(gòu)語句。它的一般形式是:

For-Next循環(huán)結(jié)構(gòu)語句的執(zhí)行方式注意[例4-4]

[例4-5]

4.4.2Forv=e1Toe2[Stepe3]...[ExitFor]...Nextv式中,v是循環(huán)控制變量,應(yīng)為整型或單精度型;e1、e2和e3是控制循環(huán)的參數(shù)。e1為初值、e2為終值、e3為步長(zhǎng)。當(dāng)e3=1時(shí),stepe3部分可省略。11/16/2022VisualBasicProgrammingFor-Next循環(huán)結(jié)構(gòu)語句如果事先已知循環(huán)次數(shù),則可使用FFor-Next循環(huán)結(jié)構(gòu)語句的執(zhí)行方式計(jì)算e1、e2和e3的值;給v賦初值;判v的值是否超過e2,即當(dāng)e3>0時(shí),判v>e2否;當(dāng)e3<0時(shí),判v<e2否,如果未超過,則執(zhí)行循環(huán)體;如果超過了,則退出循環(huán)。執(zhí)行Next語句,v增加一個(gè)步長(zhǎng),即執(zhí)行v=v+e3;轉(zhuǎn)而執(zhí)行判別操作。

11/16/2022VisualBasicProgrammingFor-Next循環(huán)結(jié)構(gòu)語句的執(zhí)行方式計(jì)算e1、e2和e3的注意循環(huán)參數(shù)e1、e2和e3中包含的變量如果在循環(huán)體內(nèi)被改變,不會(huì)影響循環(huán)的執(zhí)行次數(shù);但循環(huán)控制變量若在循環(huán)體內(nèi)被重新賦值,則循環(huán)次數(shù)有可能發(fā)生變化。

十進(jìn)制整數(shù)可準(zhǔn)確轉(zhuǎn)換為二進(jìn)制數(shù)形式,而帶小數(shù)點(diǎn)的十進(jìn)制數(shù)在轉(zhuǎn)換為單(雙)精度數(shù)時(shí)則多半存在數(shù)制轉(zhuǎn)換誤差。若使用非整型數(shù)做循環(huán)控制變量和循環(huán)參數(shù),那么循環(huán)次數(shù)就有可能發(fā)生意想不到的變化。11/16/2022VisualBasicProgramming注意循環(huán)參

溫馨提示

  • 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)論