基本控制結(jié)構(gòu)課件_第1頁
基本控制結(jié)構(gòu)課件_第2頁
基本控制結(jié)構(gòu)課件_第3頁
基本控制結(jié)構(gòu)課件_第4頁
基本控制結(jié)構(gòu)課件_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第4章基本的控制結(jié)構(gòu)

4.1算法的表示4.2順序結(jié)構(gòu)4.3選擇結(jié)構(gòu)4.4循環(huán)結(jié)構(gòu)4.5跳轉(zhuǎn)控制Goto語句(略)4.6實(shí)例

4.1算法算法

(Algorithm):解決問題的方法和步驟。特點(diǎn):有窮性:算法必須在執(zhí)行有窮個(gè)計(jì)算步驟后終止。確定性:算法中的每個(gè)計(jì)算步驟,必須精確定義,無二義性。

可行性:算法的每一個(gè)計(jì)算步驟,可以在有限時(shí)間內(nèi)完成。輸入:算法要求有一個(gè)或多個(gè)輸入信息,作為初始數(shù)據(jù)。輸出:算法要求有一個(gè)或多個(gè)輸出信息,是對(duì)輸入信息計(jì)算的結(jié)果。算法的表示(書76頁圖示)

有多種表示算法的形式,如:傳統(tǒng)的流程圖、自然語言、N-S結(jié)構(gòu)化流程圖等。用流程圖來表示算法,非常直觀、形象:

起止框:表示算法的開始或結(jié)束。處理框:表示初始化或運(yùn)算賦值等操作。輸入輸出框,表示數(shù)據(jù)的輸入輸出操作。判斷框:表示根據(jù)條件決定程序的流向。流程線:表示流程的方向。

“旋轉(zhuǎn)”按鈕算法設(shè)計(jì)開始產(chǎn)生隨機(jī)數(shù)字,分別放入各標(biāo)簽中。標(biāo)簽中有7?顯示圖片隱藏圖片結(jié)束YN4.2順序結(jié)構(gòu)順序結(jié)構(gòu)是最簡單、最基本的程序控制結(jié)構(gòu)。類似“流水賬”,按語句塊的順序自上至下順序執(zhí)行。例如:兩個(gè)變量a、b的值互相交換。Dima%,b%,temp%temp=a:a=b:b=temp算法如下:(1)輸入數(shù)據(jù)a,b(輸入)(2)交換數(shù)據(jù)(數(shù)據(jù)處理)(3)顯示交換后的結(jié)果(輸出)。

運(yùn)用“條件判斷語句”。當(dāng)滿足某種條件時(shí),執(zhí)行某些語句(流程),否則程序?qū)凑樟硪粋€(gè)流程執(zhí)行。4.3選擇結(jié)構(gòu)If<條件>Then語句塊1Else語句塊2EndIf格式3:多重分支If

條件1then

語句塊1ElseIf

條件2Then

語句塊2ElseIf條件3Then

語句塊3……Else

語句塊nEndIf示例2:單擊窗體,屏幕上以紅色和蘭色交替顯示“歡迎使用VB編程”。(參見書79頁)

PrivateSubForm_Click()Staticflagasinteger‘定義靜態(tài)變量

flagCls‘清除當(dāng)前窗體字跡

If

flag

=0ThenForm1.ForeColor=vbRed‘窗體呈現(xiàn)紅色字體

flag=1

ElseForm1.ForeColor=vbBlue‘窗體呈現(xiàn)藍(lán)色字體

flag=0

EndIf

Print“歡迎使用VB編程”EndSub示例3

:將學(xué)生成績(score)按五個(gè)等級(jí)輸出:優(yōu)90-100,良80-89,中70-79,及格60-69,不及格<60。將成績輸入文本框(只允許文本框接受數(shù)值數(shù)據(jù)),按回車后,在一個(gè)標(biāo)簽中顯示成績等級(jí)。(詳見書80頁)算法上的安排:(1)判斷是否按了回車鍵(If…Then…)(2)若按了回車,則-獲取成績數(shù)據(jù)

-設(shè)置標(biāo)簽相應(yīng)屬性

-評(píng)定成績等級(jí),顯示結(jié)果-清空文本框,等待下一次成績輸入(3)過濾輸入的非數(shù)值數(shù)據(jù)

如果條件變量的值符合表達(dá)式的某個(gè)列表,則執(zhí)行該列表下面相應(yīng)的語句塊。表達(dá)式列表舉例:Case

1To10

‘如果條件變量的值在[1,10]之間Case

Is>100

‘如果條件變量的值大于100Case

“a”To“z”

‘如果條件變量的值在a到z之間SelectCase語句與If…語句的作用類似。示例4.前面示例3的學(xué)生成績輸入與評(píng)定問題,也可用SelectCase語句替代If…語句。(參見書83頁)選擇結(jié)構(gòu)的嵌套

在一個(gè)選擇結(jié)構(gòu)中可以包含另一個(gè)選擇結(jié)構(gòu),稱為選擇結(jié)構(gòu)的嵌套。例如:

If條件Then語句塊1‘“語句塊1”可能包含另一個(gè)選擇結(jié)構(gòu)

Else語句塊2‘語句塊2可能包含另一個(gè)選擇結(jié)構(gòu)

EndIf注意:每個(gè)If語句要與其Else、ElseIf、EndIf配對(duì)。示例5:已知方程AX2+BX+C=0的系數(shù)A、B、C,用文字說明方程的解:(參見書84頁)當(dāng)A=0時(shí),若:B<>0,顯示:“有一個(gè)實(shí)根”B=0,C=0,顯示:“無定解”B=0,C<>0,顯示:“無解”當(dāng)A<>0時(shí),若: D=B*B-4*A*C>0,顯示:兩個(gè)實(shí)根D=0,顯示:兩個(gè)相等的實(shí)根D<0,顯示:兩個(gè)共軛復(fù)根IIF函數(shù)1、IIF用于執(zhí)行簡單的條件判斷操作。2、IIF是“If…Then…Else”結(jié)構(gòu)的簡寫版本。IIF函數(shù)的調(diào)用格式:變量=IIF(條件,True部分,False部分)功能:當(dāng)條件成立時(shí),變量取“True”部分的值,否則變量取“False”部分的值。例如:DimAasInteger,SasString‘或DimA%,S$

A=25S=IIF(A>10,“A大于10”,“A小于等于10”)此時(shí)S的值為:S=“A大于10”

‘滿足條件A>10,變量S取True部分4.4循環(huán)結(jié)構(gòu)

在實(shí)際應(yīng)用中,有些操作(程序段)需要反復(fù)執(zhí)行,可以使用循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。

FOR/NEXT結(jié)構(gòu)當(dāng)循環(huán)次數(shù)確定時(shí),可使用For/Next

循環(huán)語句。格式:For

循環(huán)變量=初值

To

終值

Step

步長循環(huán)體(程序體)……Next

<循環(huán)變量>參數(shù)說明:(1)循環(huán)變量的初值、終值和步長都必須是數(shù)值型表達(dá)式或數(shù)值型變量。(2)若步長>0,則應(yīng)該初值<終值,循環(huán)變量遞增;若步長<0,則應(yīng)該初值>終值,循環(huán)變量遞減;若步長=1,循環(huán)變量遞增為1,此時(shí)步長可以省略。示例6:計(jì)算階乘N!計(jì)算階乘的常用方式(常用定式)方法1.從文本框獲取輸入數(shù)據(jù)N:DimNasinteger,iasinteger,Dimitem%‘%:整型數(shù)Integer

N=Text1.text

‘從文本框獲取N的數(shù)值

item=1‘階乘初始值

Fori=1toN‘計(jì)算N的階乘,缺省步長為1item=item*iNextIPrintN;“!=”;item計(jì)算階乘N!方法2.利用輸入框(InputBox)獲取數(shù)據(jù)。PrivateSubForm_Click()DimNAsInteger,iAsIntegerDimitem%N=InputBox(“請(qǐng)輸入一個(gè)整數(shù)”;“計(jì)算階乘”)item=1

Fori=1ToNitem=item*i

NextiPrintN;“!=”;itemEndSubDO/LOOP語句

循環(huán)次數(shù)不確定,但已知循環(huán)開始或結(jié)束的條件,可使用DO/LOOP

語句實(shí)現(xiàn)循環(huán)。

格式1:先判斷條件,后執(zhí)行循環(huán)體

Do[while|until<循環(huán)條件>]

循環(huán)體(語句塊)

Loop格式2:先執(zhí)行循環(huán)體,后判斷條件

Do

循環(huán)體(語句塊)

Loop[while|until<循環(huán)條件>]計(jì)算累加值的常用定式:sum=0sum=sum+累加項(xiàng)最后得到的sum即為累加結(jié)果。示例7:求1+2+……+100的累加值。方法1.用For/Next

循環(huán)求累加。sum=0

Fori=1to100sum=sum+i

Nexti示例8:求自然對(duì)數(shù)的近似值。按下面公式累加,直到最后一個(gè)累加項(xiàng)的值小于10-6為止。

(參見書86-87頁)程序算法結(jié)構(gòu)可表達(dá)為:sum=1‘sum存放累加值。初始累加值=1(1)開始循環(huán):-先計(jì)算相應(yīng)階乘

i!(item=item*i)-再計(jì)算相應(yīng)累加

sum=sum+(1/i!

)(2)結(jié)束循環(huán)。結(jié)束條件:(1/i!

)

<10-6

用Dowhile/loop循環(huán)計(jì)算自然對(duì)數(shù)近似值:PrivateSubForm_Click()DimsumAsSingle,itemAsSingleDimiAsInteger,nAsIntegeritem=1sum=1i=1

DoWhile1/item>=0.000001item=item*isum=sum+(1/item)i=i+1

LoopPrint“自然對(duì)數(shù)近似值:”;sum,“累加項(xiàng)數(shù):”,i-1EndSub從循環(huán)體中退出:Exit語句

根據(jù)需要,可以在不滿足條件時(shí),中途強(qiáng)迫循環(huán)結(jié)束,直接退出。用Exit語句可以直接退出For循環(huán)、Do循環(huán)。Do[{While|Until}條件][語句序列]

Exit

Do

[語句序列]LoopFor循環(huán)初值To終值[Step][語句序列]

Exit

For[語句序列]

Next循環(huán)控制變量循環(huán)嵌套(參見書91頁圖4-11)1、一個(gè)循環(huán)體內(nèi)可以包含其它選擇結(jié)構(gòu)或循環(huán)結(jié)構(gòu)。2、內(nèi)外循環(huán)體不能交叉。3、內(nèi)循環(huán)體可跳出來,外循環(huán)體不能跳進(jìn)去。4、并列的若干循環(huán)體彼此不能互相跳轉(zhuǎn)。5、先執(zhí)行內(nèi)循環(huán),再執(zhí)行外循環(huán)。6、注意循環(huán)結(jié)構(gòu)的完整性。每個(gè)For與Next、Do與Loop、While與Wend要配對(duì)。

示例9:在窗體上用“*”打印菱形。(參見書91頁)算法安排:-根據(jù)行數(shù),確定在該行輸出“*”的數(shù)量。-確定每行第一個(gè)“*”出現(xiàn)的位置。-換行,準(zhǔn)備在下一行輸出“*”。PrivateSubform_Click()Dimi%,j%,k%CurrentY=1000

Fori=1To9‘共打印9行

Ifi<=5Then‘1~5行k=i‘k:前5行每行打印的*號(hào)個(gè)數(shù)

Else‘6~9行k=10-i‘后4行打印的*號(hào)個(gè)數(shù)與前5行對(duì)稱相等

EndIf

CurrentX=1000PrintSpace(20-k);‘確定每行的*號(hào)起始位置‘從第i行*號(hào)起始位置開始按列j輸出每個(gè)*號(hào)

Forj=1To2*k-1Print“*”;

Nextj‘下一列Print‘回車換行

Nexti‘下一行EndSub示例10.

打印“斐波那契”數(shù)列1、1、2、3、5、8…中的前40項(xiàng),要求每行打印10項(xiàng)。(參見教科書95頁)分析:“斐波那契”數(shù)列(Fabonacci)的每一項(xiàng)是前兩項(xiàng)之和。首兩項(xiàng)的值為1。可用三個(gè)變量F1,F(xiàn)2,F(xiàn)3表示這樣的數(shù)列:F1=1,F2=1,F3=F1+F2,由此開始循環(huán),求出第3項(xiàng)之后的數(shù)列。

PrivateSubForm_Click()Dimi%,f1&,f2&,f3&‘&:長整型f1=1f2=1a=24‘a(chǎn):Tab函數(shù)用來確定打印列的間隔Print“斐波那契數(shù)列前40項(xiàng):”Printf1;Tab(12);f2;Tab(24);

Fori=3To40f3=f1+f2f1=f2‘更新f1的值f2=f3‘更新f2的值a=a+12Printf3;Tab(a);

IfiMod10=0ThenPrint‘換行a=0

EndIf

NextiEndSub示例11.密碼檢驗(yàn)程序。(教科書95頁)在文本框中輸入預(yù)制的密碼“123456”,并按回車鍵,標(biāo)簽顯示“歡迎光臨!”;如果輸入的密碼與預(yù)制密碼不吻合,標(biāo)簽顯示“密碼不對(duì),請(qǐng)重新輸入!”,同時(shí)清空文本框,允許再輸入一遍;如果連續(xù)三次輸入的密碼都不對(duì),標(biāo)簽顯示“已超時(shí),請(qǐng)退出程序!”,文本框失效。運(yùn)行界面如下圖所示。算法:利用文本框的KeyPress事件。定義一個(gè)局部靜態(tài)變量a,用來記錄輸入密碼次數(shù)(0、1、2)。具體步驟如下:判斷是否按了回車鍵?若是,判斷密碼是否正確?若正確,標(biāo)簽顯示“歡迎光臨!”若不正確判斷a是否大于等于2?若a>=2:標(biāo)簽顯示“已超時(shí),請(qǐng)退出程序!”文本框設(shè)為不可用(enabled=false)若a<2:標(biāo)簽顯示“密碼不對(duì),請(qǐng)重新輸入!并清空文本框。

a=a+1(輸入次數(shù)加1)PrivateSubText1_KeyPress(KeyAsciiAsInteger)StaticaAsInteger

IfKeyAscii=13Then‘按下回車鍵

IfText1.Text=“1234567”Then‘密碼輸入正確Label2.Caption=“歡迎光臨!”

Else‘密碼錯(cuò)誤

If

a>=2ThenLabel2.Caption=“已超時(shí),請(qǐng)退出程序!”Text1.Enabled=FalseElseLabel2.Caption=“密碼不對(duì),請(qǐng)?jiān)佥斎胍槐椋 盩ext1.Text=“”

a=a+1‘輸入密碼次數(shù)加1

EndIf

EndIfLabel2.Visible=True

EndIfEndSub4.5跳轉(zhuǎn)控制Goto語句(略)

Goto語句格式:Goto

語句標(biāo)號(hào)功能:無條件地轉(zhuǎn)移到語句標(biāo)號(hào)指定的程序行去執(zhí)行。例:

PrivateSubform_click()DimxAsIntegerDimsumAsInteger

溫馨提示

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