第4章算法基礎與基本語句_第1頁
第4章算法基礎與基本語句_第2頁
第4章算法基礎與基本語句_第3頁
第4章算法基礎與基本語句_第4頁
第4章算法基礎與基本語句_第5頁
已閱讀5頁,還剩58頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

算法基礎及VB的基本語句

第4章算法及程序設計基礎賦值語句及InputBox、MsgBox函數分支結構與分支結構語句循環結構與循環結構語句程序示例Points

to

Remember2021/6/18Visual

Basic

Programming算法及程序設計基礎設計程序前,根據實際問題的特點和需求,同時考慮到計算機的工作特性,確定解決該問題所需要的方法和步驟稱為

“算法設計”。算法的概念算法示例

算法的特征

算法的描述基本算法結構4.12021/6/18Visual

Basic

Programming算法的概念廣義而言,算法就是解決某個問題或處理某件事的方法和步驟。狹義而言,算法是專指用計算機解決某一問題的方法和步驟。計算機算法可以分為兩大類:一類是數值計算算法;另一類是非數值計算算法。研究解決各種特定類型問題的算法已成為一個稱為“計算方法”的專門學科。對于同一問題的求解,往往可以設計出多種不同的算法。一般而言,評價一個算法的好壞優劣,主要看算法是否正確、運行的效率及占用系統資源的多少等。2021/6/18Visual

Basic

Programming算法示例算法1算法22021/6/18Visual

Basic

Programming算法1求兩個自然數的最大公約數的算法S1.輸入兩個自然數M、N;S2.求M除以N的余數R;S3.使M=N,即用N代換M;S4.使N=R,即用R代換N;S5.若R≠0,則重復執行S2、S3、S4(循環),否則轉S6;S6.輸出M,M即為M和N的最大公約數。本算法是由古希臘數學家歐幾里德提出的,所以

又稱為“歐幾里德算法”。算法中的S1、S2、S3…叫作算法步驟,每個算法步驟明確規定所要

進行的操作及處理對象的特性(M、N為自然數)。歐幾里德算法是求兩個自然數最大公約數的經典算法。2021/6/18Visual

Basic

Programming算法2

在N個字符數據集合中,查找有無特定的字符串存在S1.輸入字符數據的個數N和要查找的數據S;

S2.使I=1,I用于計數;

S3.從字符數據集合中讀取一個數據X;S4.若X=S,輸出“找到S”的信息,算法結束,否則轉S5;S5.使I=I+1,計數器計數;S6.若I≤N;則重復執行S3、S4、S5(循環);否則轉S7;S7.輸出“找不到S”信息,算法結束。本算法也稱為“順序查找算法”,也是在處理非數值信息時最常用的一種算法。2021/6/18Visual

Basic

Programming算法的特征從上述算法的示例可以看出,作為算法,應具備以下特征:確定性--算法的每個步驟都應確切無誤,沒有歧義性。可行性--算法的每個步驟都必須是計算機能夠有效執行、可以實現的,并可得到確定的結果。

3)有窮性--一個算法包含的步驟必須是有限的,并在一個合理的時間限度內可以執行完畢。輸入性--執行算法時可以有多個輸入,但也可以沒有輸入(0個輸入)。輸出性--一個算法必須有1個或多個輸出。2021/6/18Visual

Basic

Programming算法的描述算法可以采用多種方式來表示。比如使用人們的自然語言像英語、漢語等來描述;使用某種代碼符號來描述或者使用特定的圖形來描述等等。由于圖形的描述方法既形象,又直觀,所以得到廣泛的應用。用于描述算法的圖形使用較多的是所謂的流程框圖,簡稱流程圖。它是使用規定的圖形符號來描述算法的。流程圖使用的圖形符號見表4-1。圖4-1和圖4-2分別是上一節兩個算法示例的流程圖。圖框內的文字用于說明具體的操作內容。顯而易見,使用流程圖比使用自然語言描述算法優越地多。2021/6/18Visual

Basic

Programming圖形符號名稱代表的操作輸入/輸出數據的輸入與輸出處理各種形式的數據處理判斷判斷選擇,根據條件滿足與否選擇不同路徑起止流程的起點與終點特定過程一個定義過的過程流程線連接各個圖框,表示執行順序連接點表示與流程圖其他部分相連接2021/6/18Visual

Basic

Programming2021/6/18Visual

Basic

Programming基本算法結構“結構化程序設計方法”的核心是規定了算法的三種基本結構:順序結構、分支結

構和循環結構。三種基本結構的共同特點是:

1)只有單一的入口和單一的出口;2)結構中的每個部分都有執行到的可能;3)結構內不存在永不終止的死循環。2021/6/18Visual

Basic

Programming順序結構2021/6/18Visual

Basic

Programming分支結構2021/6/18Visual

Basic

Programming循環結構2021/6/18Visual

Basic

Programming賦值語句及InputBox、MsgBox函數賦值語句

InputBox函數

MsgBox函數4.22021/6/18Visual

Basic

Programming賦值語句賦值語句的形式不同數據類型數據的賦值圖4-4一個說明不同數據類型數據賦值方式的簡單程序示例4.2.12021/6/18Visual

Basic

Programming賦值語句的形式賦值語句的一般形式是:其中var表示某個變量名或屬性名。當系統執行一個賦值語句時,將先求出賦值操作符”=”右邊表達式的值,然后再把該值保存到”=”左邊的變量中。這就是所謂的“賦值”。使用賦值語句可使變量或某個對象的某屬性獲得一個新值。示例使用賦值語句還可以獲取一個對象返回的當前屬性值。例如:var=petyvar=<表達式>2021/6/18Visual

Basic

Programming賦值語句示例x

=

"This

is

a

flower"number%

=

72Lable1.Text="Filename

is:"Text.Font.Size=12

'改變字號

Y=(a+b

)/2x

=

"This

is

a

flower"number%

=

72Lable1.Text="Filename

is:"Text.Font.Size=12

'改變字號

Y=(a+b

)/22021/6/18Visual

Basic

Programming不同數據類型數據的賦值變量類型表達式類型系統處理數值數值系統先求出表達式的值,在將其轉換為變量類型后再賦值字符數值系統將把表達式的值轉換為字符型賦給變量邏輯數值所有的非0值,系統都轉換為True賦給變量,0則轉換為False賦給變量整型邏輯值Ture變量的值將為-1;把邏輯值False賦給整型變量,變量的值為0字符邏輯值Ture變量的值將為True;把邏輯值False賦給字符變量,變量的值為False數值字符系統將給出數據類型不匹配的錯誤提示,并停止執行2021/6/18Visual

Basic

Programming圖4-4一個簡單程序示例2021/6/18Visual

Basic

ProgrammingInputBox函數InputBox函數用來接受用戶通過鍵盤輸入的數據。

InputBox函數使用的形式是:式中,v可以是變體變量或字符串型變量,也可以是數值型變量。在調用InputBox函數時,屏幕上將產生一個帶有提示信息的對話框,用戶輸入數據后按回車鍵,即可把輸入的數據賦給變量;按Esc

鍵或單擊

“Cancel”按鈕,則返回0值或空串。InputBox函數應用示例4.2.22021/6/18Visual

Basic

Programmingv=InputBox(Prompt[,title][,defsult][,x,y][,helpfile,context])InputBox函數的各個參數的意義Prompt:提示用的文字信息;title:對話框標題(字符型),缺省時,為空白;default:顯示在用戶編輯框中的缺省值,缺省時,返回空值;x,y:對話框在屏幕上顯示時的位置,單位是特維,(x,y)是對話框左上角點的坐標;

helpfile,context:幫助文件名及幫助主題號。有本選項時,在對話框中自動增加一個幫助按鈕。2021/6/18Visual

Basic

ProgrammingInputBox函數應用示例Private

Sub

Cmd1_Click()Dim

N_student

As

StringN_student=InputBox("請輸入你的學號:","程序示例",230001)If

Left(N_student,

2)="23"

ThenPrint"你是工程系的學生!"ElsePrint"你不是工程系的學生!"

End

IfEnd

SubPrivate

Sub

Cmd1_Click()Dim

N_student

As

StringN_student=InputBox("請輸入你的學號:","程序示例",230001)If

Left(N_student,

2)="23"

ThenPrint"你是工程系的學生!"ElsePrint"你不是工程系的學生!"

End

IfEnd

Sub2021/6/18Visual

Basic

Programming2021/6/18Visual

Basic

ProgrammingMsgBox函數MsgBox函數用于向用戶發布提示信息,并要求用戶作出必要的響應。MsgBox函數的形式是:MsgBox函數根據用戶選擇單擊的按鈕而返回不同的值:如表4-3MsgBox函數有以下幾種使用方法4.2.32021/6/18Visual

Basic

ProgrammingMsgBox(Prompt[,button][,title][,helpfile,context])式中各個參數的意義Prompt:提示用的文字信息;

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

2(c)、表4-2(d)(0值為缺省值)title:信息框標題(字符型),缺省時,為空白;

helpfile,context:幫助文件名及幫助主題號。有本選項時,在信息框中自動增加一個幫助按鈕。2021/6/18Visual

Basic

Programming表4-2(a)c1的取值內置常量名意義0VbOkOnly只顯示“確定”按鈕1VbOkCancel顯示“確定”和“取消”按鈕2VbAbortRetryIgnore顯示“終止”,“重試”和“忽略”按鈕3VbYesNoCancel顯示“是”,“否”和“取消”按鈕4VbYesNo顯示“是”和“否”按鈕5VbRetryCancel顯示“重試”和“取消”按鈕2021/6/18Visual

Basic

Programming表4-2(b)c2的取值內置常量名意義16VbCritical顯示關鍵信息圖標32VbQuestion顯示警示疑問圖標48VbExclamation顯示警告信息圖標64VbInformation顯示通知信息圖標2021/6/18Visual

Basic

Programming表4-2(c)c3的取值內置常量名意義0vbDefaultButton1第一個按鈕為缺省按鈕256vbDefaultButton2第二個按鈕為缺省按鈕512vbDefaultButton3第三個按鈕為缺省按鈕2021/6/18Visual

Basic

Programming表4-2(d)c4的取值內置常量名意義0vbApplicationModel應用程序模式,用戶在當前應用程序繼續執行之前,必須對信息框做出響應;信息框位于最前面4096VbSystemModel系統模式,所有應用程序均掛起,直到用戶響應該信息框為止2021/6/18Visual

Basic

Programming表4-3按鈕名內置常量取值OK(確定)vbOK1Cancel(取消)vbCancel2Abort(終止)vbAbort3Retry(重試)vbRetry4Ignore(忽略)vbIgnore5Yes(是)vbYes6No(否)vbNo72021/6/18Visual

Basic

ProgrammingMsgBox函數的幾種使用方法MsgBox函數有以下幾種使用方法:使用賦值語句。如:ans=MsgBox(“非法數據!”,48,”提示信息”)使用Print方法。例如:Print

MsgBox(“非法數據!”,48,”提示信息”)也可以把它等同為一個方法使用。如:

MsgBox

“非法數據!”,48,”提示信息”三種方法在執行時都可以獲得如圖所示畫面。但第二、三種用法將得不到用戶點擊不同按鈕的返回值(或沒有返回值)。2021/6/18Visual

Basic

Programming分支結構與分支結構語句分支結構是程序的基本算法結構之一。

VB提供了實現分支結構的相關語句。If-Then-Else-End

If結構語句

Select-Case-End

Select結構語句4.32021/6/18Visual

Basic

ProgrammingIf-Then-Else-End

If結構語句該結構語句的一般形式該結構的變形1該結構的變形2[例4-1]已知三角形三個邊的長度,設計求此三角形面積的程序[例4-2]一個有多個分支的示例程序4.3.12021/6/18Visual

Basic

ProgrammingIf結構語句的一般形式If

e

Then[A組語句]Else[B組語句]End

IfIf

e

Then[A組語句]Else[B組語句]End

If2021/6/18Visual

Basic

ProgrammingIf結構的變形1If

e

ThenA組語句

End

ifIf

e

ThenA組語句

End

ifIf

e

Then<語句>2021/6/18Visual

Basic

ProgrammingIf

e

Then<語句>If結構的變形2If

e1

ThenA1組語句

ElseIf

e2

ThenA2組語句...End

ifIf

e1

ThenA1組語句

ElseIf

e2

ThenA2組語句...End

if2021/6/18Visual

Basic

Programming當

a+b>c

a+c>b

且b+c>a

時,三角形存在,其面積式中:p=(a+b+c)/2[例4-1]已知三角形三個邊的長度,設計求此三角形面積的程序當a+b>c

且a+c>b

b+c>a

時,三角形存在,其面積S

p(

p

a)(

p

b)(

p

c)式中:p=(a+b+c)/2算法流程圖程序代碼2021/6/18Visual

Basic

Programming[例4-1]算法流程圖2021/6/18Visual

Basic

Programming[例4-2]一個有多個分支的示例程序程序代碼2021/6/18Visual

Basic

Programming[例4-2]

程序代碼Private

Sub

Command1_Click()Dim

x

As

Integerx

=

Val(Text1.Text)If

x

<

1

ThenText2.Text=“這是小于1的數”ElseIf

x

<=

10

ThenText2.Text=“這是1到10之間的數”ElseText2.Text=”這是大于10的數”End

IfEnd

SubPrivate

Sub

Command1_Click()Dim

x

As

Integerx

=

Val(Text1.Text)If

x

<

1

ThenText2.Text=“這是小于1的數”ElseIf

x

<=

10

ThenText2.Text=“這是1到10之間的數”ElseText2.Text=”這是大于10的數”End

IfEnd

Sub2021/6/18Visual

Basic

ProgrammingSelect-Case-End

Select結構語句本結構語句提供了實現多分支結構的另一種方法。它的一般形式是:例4-2的程序代碼也可使用本結構語句實現4.3.2Select

Case

eCase

c1A組語句

Case

c2B組語句...Case

Elsen組語句End

SelectSelect

Case

eCase

c1A組語句

Case

c2B組語句...Case

Elsen組語句End

Selecte稱為測試表達式,可以是算術表達式或字符表達式;c1,c2,...是測試項e稱為測試表達式,可以是算術表達式或字符表達式;c1,c2,...是測試項(1)具體取值:如:3、5、7.2等(當測試表達式是算術表達式時);(2)連續的數據范圍:如:8

To

20;B

To

H等;(3)滿足某個判決條件:如:Is>20;Is<="P"等。具體取值:如:3、5、7.2等(當測試表達式是算術表達式時);連續的數據范圍:如:8

To

20;B

To

H等;滿足某個判決條件:如:Is>20;Is<="P"等。2021/6/18Visual

Basic

Programming例4-2的程序代碼使用本結構語句實現Private

Sub

Command1_Click()Dim

x

As

Integerx

=

Val(text1.Text)Select

Case

xCase

Is

<

1Text2.text="這是小于1的數"

Case

1

To

10Text2.Text="這是1到10之間的數"Case

ElseText2.Text="這是大于10的數"

End

SelectEnd

SubPrivate

Sub

Command1_Click()Dim

x

As

Integerx

=

Val(text1.Text)Select

Case

xCase

Is

<

1Text2.text="這是小于1的數"

Case

1

To

10Text2.Text="這是1到10之間的數"Case

ElseText2.Text="這是大于10的數"

End

SelectEnd

Sub2021/6/18Visual

Basic

Programming循環結構與循環結構語句循環結構也是程序的基本算法結構。所謂循環,就是重復地執行某些操作。當型循環和直到型循的不同執行方式Do-Loop循環結構語句

For-Next循環結構語句循環嵌套4.42021/6/18Visual

Basic

Programming當型循環和直到型循的不同執行方式當型循環的不同執行方式直到型循環的不同執行方式2021/6/18Visual

Basic

ProgrammingDo-Loop循環結構語句Do-Loop循環結構語句的四種形式Exit

Do語句[例4-3]求兩個自然數的最大公約數程序4.4.11.Do

While

e 2.

Do...

...[Exit

Do] [Exit

Do]...

...Loop Loop

While

e3.Do

Until

e

4.Do...

...[Exit

Do] [Exit

Do]...

...Loop Loop

Until

e2.

Do...2021/6/18Visual

Basic

Programming[Exit

Do]...1.Do

While

e...[Exit

Do]...LoopLoop

While

e4.Do...[Exit

Do]...3.Do

Until

e...[Exit

Do]...LoopLoop

Until

eExit

Do語句循環體中,可以包括一條或多條ExitDo語句,如果程序執行到ExitDo語句時,就會直接退出循環,轉而執行Loop語句的下一條語句。ExitDo語句最常用的形式是與If-Then語句相結合,即:If

e

Then

Exit

Do在執行循環體時,如果條件e被滿足,則執行Exit

Do語句直接退出循環。2021/6/18Visual

Basic

Programming[例4-3]

求兩個自然數的最大公約數程序本問題的算法采用歐幾里德算法求解由于輸入的數據M和N要求是自然數,所以在程序中應加入對數據的合法性進行檢驗的部分;考慮到程序的應用范圍,數據類型可選用長整型。本例中使用了求余(數)運算符Mod。使用Mod運算符時,切記應在它的前后各加一個空格程序代碼2021/6/18Visual

Basic

ProgrammingFor-Next循環結構語句如果事先已知循環次數,則可使用For-Next循環結構語句。它的一般形式是:For-Next循環結構語句的執行方式注意[例4-4]

[例4-5]4.4.2For

v

=

e1

To

e2

[Step

e3]...[Exit

For]...Next

v2021/6/18Visual

Basic

Programming式中,v是循環控制變量,應為整型或單精度型;e1、e2和e3是控制循環的參數。

e1為初值、e2為終值、e3為步長。當e3=1時,stepe3部分可省略。For-Next循環結構語句的執行方式計算e1、e2和e3的值;給v賦初值;判v的值是否超過e2,即當

e3>0時,判v>e2否;當

e3<0時,判v<e2否,如果

未超過,則執行循環體;如果超過了,則退出循環。執行Next語句,v增加一個步長,即執行v=v+e3;轉而執行判別操作。2021/6/18Visual

Basic

Programming注意循環參數e1、e2和e3中包含的變量如果在循環體內被改變,不會影響循環的執行次數;但循環控制變量若在循環體內被重新賦值,則循環次數有可能發生變化。十進制整數可準確轉換為二進制數形式,

而帶小數點的十進制數在轉換為單(雙)精

度數時則多半存在數制轉換誤差。若使用

非整型數做循環控制變量和循環參數,那

么循環次數就有可能發生意想不到的變化。2021/6/18Visual

Basic

Programming[例4-4]求1到10這十個數的和與連乘積求若干個數之和或連乘積,可采用“累加”或“累乘”法。累加法是設置一個存放和數的變量,稱為“累加器”,初始值為0,累加過程通過循環實現;累乘的算法設置

的是“累乘器”,初始值為1,在循環體內,乘數應與累乘器相乘。在求乘積時,

應注意乘積的大小,設置適當的數據類型。程序代碼2021/6/18Visual

Basic

Programming[例4-5]大寫字母逆序輸出的程序從一個字符串中找出符合要求的字符是采取對字符串的每一個字符逐個篩選的方法實現的,本例利用Mid函數可以從字符串中提取出單個字符,利用循環控制處理過程,循環的終值使用Len函數;對于符合要求的字符采用連接運算組成新字符串;逆序輸出則是通過從后往前逐個提取字符再連接。程序代碼2021/6/18Visual

Basic

Programming循環嵌套無論是Do-Loop循環,還是For-Next循環,都可

以在大循環中套小循環。必須注意:小循環一定

要完整地被包含在大循環之內,而不得相互交叉。Private

Sub

Form_Click()For

i

=

1

To

9For

j

=

1

To

9Print

i;

"*";

j;

"=";

i

*

j;Next

jPrintNext

iEndSub執行本程序,窗體上將顯示九九乘法表

[例4-6]一個模擬搖獎的程序4.4.32021/6/18Visual

Basic

Programming[例4-6]一個模擬搖獎的程序設有100個人中簽,要從中找出中獎人。由機器自動隨機產生1000個1~100間的數據,第1000個隨機數據即為中獎人的號碼。問題的關鍵是如何產生1~100之間的隨機整數。

VB提供了一個可以產生0~1之間均勻分布的隨機數的隨機函數Rnd(x)。為了生成某個范圍內的隨機整數,可用以下公式:

Int((ub-lb+1)

*

Rnd+lb)這里,ub、lb分別是隨機整數范圍的上下限。程序代碼2021/6/18Visual

Basic

Programming隨機函數Rnd(x)其中,可選的x參數是Single或任何有效的數值表達式如果使用參數且參數x<0,則得到相同的隨機數;參數x>0,則得到隨機序列的下一個隨機數;參數x=0,則返回上一次生成的隨機數。不使用x的結果與x>0相同。對最初給定的種子都會生成相同的數列,因為每一次調用Rnd函數都用數列中的前一個數作為下一個數的種子。調用Rnd

之前,可先使用無參數的Randomize語句初始化隨機數生成器,該生成器具有從系統計時器獲得到的種子。2021/6/18Visual

Basic

Programming程序示例[例4-7]一個簡易函數計算器程序

[例4-8]個人收入調節稅應用程序[例4-9]利用牛頓迭代法求方程根

[例4-10]原碼轉換成反碼的程序4.52021/6/18Visual

Basic

Programming[例4-7]一個簡易函數計算器程序為了保證“計算器”在各種操作狀況下都正常工作,程序需要考慮在用戶沒有在文本框中輸入數據或輸入的數據超出函數的定義域時的出錯處理。程序中使用的IsNumeric(s)函數用于檢測自

溫馨提示

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

評論

0/150

提交評論