程序控制結(jié)構(gòu)與算法基礎(chǔ).ppt
《程序控制結(jié)構(gòu)與算法基礎(chǔ).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《程序控制結(jié)構(gòu)與算法基礎(chǔ).ppt(40頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
第4章程序控制結(jié)構(gòu)與算法基礎(chǔ),,代碼書寫規(guī)則,每個(gè)語句一行,以回車鍵結(jié)束;多個(gè)語句可以寫在同一行上,各語句之間用冒號(hào)(:)進(jìn)行分隔;一條長語句可以分成多行書寫,在除最后一行之外的其余各行的末尾使用下劃線(_)作為續(xù)行符,并且續(xù)行符與它前面的字符之間至少要有一個(gè)空格;所有語句中的變量名、函數(shù)名、關(guān)鍵字、對象名、對象屬性名、對象方法名等均不區(qū)分大小寫,但保留定義時(shí)所使用的大小寫格式;代碼的物理行最多可含1023個(gè)字符,一個(gè)邏輯行最多可由10個(gè)物理行組成。,自動(dòng)語法檢測,VB的IDE默認(rèn)情況下具有自動(dòng)語法檢測功能。如果用戶輸入有語法錯(cuò)誤的語句,在按下回車鍵后,系統(tǒng)將彈出一個(gè)出錯(cuò)提示框,并用紅色標(biāo)出有語法錯(cuò)誤的語句。,,賦值語句,格式:變量|對象.屬性名=表達(dá)式可以給一個(gè)變量(或?qū)ο蟮膶傩裕┒啻钨x值,但變量中保留的是最后一次的值。累加:B=B+N累乘:C=C*N,交換兩個(gè)變量的值,中間變量法T=AA=BB=T數(shù)值加減法A=A+BB=A-BA=A-B,適合任何兩個(gè)相同類型的變量,適合兩個(gè)數(shù)值類型的變量,賦值相容,相容是指變量或?qū)ο蟮膶傩阅軌蛘_存取賦值號(hào)右邊的表達(dá)式的值。一般要求用于賦值的表達(dá)式的結(jié)果類型與變量的類型保持一致。,示例,DimAAsInteger,BAsLong,CAsSingle,DAsDate,SAsStringA=100B=200C=14.5D=31.4S="3.14"A=S純數(shù)字字符串可以當(dāng)作數(shù)賦給數(shù)值類型的變量B=D日期型數(shù)據(jù)可轉(zhuǎn)換為數(shù)值D=A一個(gè)數(shù)值也可以轉(zhuǎn)換為日期時(shí)間S=C任何類型的數(shù)據(jù)均可給字符串型變量賦值S="XYZ"A=S出錯(cuò),類型不匹配,此外,還可以將數(shù)值(含純數(shù)字字符串)賦值給Boolean類型的變量,所有不等于0的數(shù)值轉(zhuǎn)換為True,0轉(zhuǎn)換為False。將Boolean類型的數(shù)據(jù)賦值給數(shù)值類型的轉(zhuǎn)換方法為:True?-1,F(xiàn)alse?0,給對象類型的變量賦值,格式:Set對象變量=對象引用,示例DimfrmAsObject定義frm為Object類型的變量Setfrm=Form1將對窗體Form1的引用賦給frmfrm.Caption="Hello"將窗體Form1的標(biāo)題設(shè)置為“Hello”,暫停、結(jié)束、注釋,暫停:Stop,VB進(jìn)入中斷模式,打開“立即窗口”。Stop語句被執(zhí)行后,并不退出VB系統(tǒng),如果在可執(zhí)行文件(.EXE)中含有Stop語句,則將會(huì)關(guān)閉文件。結(jié)束:End,結(jié)束VB程序執(zhí)行。注釋單引號(hào):單引號(hào)后的內(nèi)容為注釋Rem:注釋一整行,算法,程序=數(shù)據(jù)結(jié)構(gòu)+算法算法是解決問題的方法、步驟,是程序的核心。算法的特性確定性能行性有窮性輸入輸出,傳統(tǒng)流程圖,,,,,,流程圖示例,輸入兩個(gè)數(shù)A與B,求出其中大的數(shù)并輸出。,程序的三種基本結(jié)構(gòu),順序結(jié)構(gòu):按語句書寫順序執(zhí)行。分支結(jié)構(gòu):也叫選擇結(jié)構(gòu),根據(jù)一個(gè)條件決定程序執(zhí)行的走向。循環(huán)結(jié)構(gòu):將某些語句重復(fù)執(zhí)行有限次。,順序結(jié)構(gòu),,示例,輸入正方形邊長,求其周長與面積。,PrivateSubCommand1_Click()DimAAsSingle,LAsSingle,SAsSingleA=Val(Text1.Text)獲取Text1中的內(nèi)容L=4*AS=A^2Text2.Text=L在Text2中輸出周長Text3.Text=S‘在Text3中輸出面積EndSub,分支結(jié)構(gòu)-If語句,單行結(jié)構(gòu)If語句If條件Then語句A[Else語句B]塊結(jié)構(gòu)If語句,If條件Then語句塊A[Else語句塊B]EndIf,If語句流程圖,示例,輸入一個(gè)整數(shù),若為偶數(shù),則輸出“偶數(shù)”,否則輸出“奇數(shù)”。,PrivateSubForm_Click()DimXAsIntegerX=Val(InputBox("輸入一個(gè)整數(shù)A"))IfXMod2=0ThenPrint"偶數(shù)"ElsePrint"奇數(shù)"EndSub,說明,If語句中的條件一般是一個(gè)邏輯表達(dá)式,也可以是一個(gè)返回值為數(shù)值的表達(dá)式。如果是數(shù)值表達(dá)式,則0對應(yīng)False,非0的任何數(shù)對應(yīng)True。If語句中如果條件成立,則執(zhí)行對應(yīng)的語句或語句塊,然后便跳出條件語句結(jié)構(gòu)。在塊結(jié)構(gòu)的條件語句中,語句塊中的語句不能與Then、Else書寫在同一行上。單行結(jié)構(gòu)的條件語句中不能有EndIf,而塊結(jié)構(gòu)的條件語句中不能缺少EndIf。,練習(xí),輸入一個(gè)三位正整數(shù),判斷其是否為水仙花數(shù)。水仙花數(shù):一個(gè)三位整數(shù)等于其各位數(shù)字的立方和,如153=13+53+33輸入一個(gè)年份,判斷該年是否為閏年。滿足下列條件之一的年份即為閏年年份能被4整除但不能被100整除年份能被400整除,多分支語句-If-ElseIf,If條件1Then語句塊1ElseIf條件2Then語句塊2ElseIf條件3Then語句塊3……[Else語句塊n+1]EndIf,ElseIf中的Else與If之間不能有空格!ElseIf語句的數(shù)量沒有限制!前面的條件成立執(zhí)行對應(yīng)語句后結(jié)束!,多分支語句-SelectCase,SelectCase測試表達(dá)式Case表達(dá)式列表1語句組1[Case表達(dá)式列表2語句組2][Case表達(dá)式列表3語句組3]……[CaseElse語句組n+1]EndSelect,SelectCase語句功能,首先計(jì)算出測試表達(dá)式的值,然后自上而下依次與各個(gè)表達(dá)式列表進(jìn)行比較,如果匹配,則執(zhí)行相應(yīng)的語句組,然后跳到EndSelect后面的語句繼續(xù)執(zhí)行;如果測試表達(dá)式的值不能與給出的任何一個(gè)表達(dá)式列表匹配,則執(zhí)行CaseElse之后的語句組。如果缺省了CaseElse部分,而測試表達(dá)式的值不能與給出的任何一個(gè)表達(dá)式列表匹配,則不執(zhí)行任何語句組,直接跳到EndSelect后的語句執(zhí)行。,測試項(xiàng)的形式,具體的取值(表達(dá)式),值與值之間用逗號(hào)分隔。如:1,3,5,A+B等。連續(xù)的范圍,范圍是用關(guān)鍵字To連接的兩個(gè)值。如:10To20,”A”To“Z”。使用Is關(guān)鍵字構(gòu)成的比較表達(dá)式。如:Is>=10。也可以是上述幾種形式的組合,用逗號(hào)分隔開。,示例,輸入一個(gè)成績,輸出此成績相應(yīng)的等級(jí)。,PrivateSubCommand1_Click()DimCJAsSingle,DJAsStringCJ=Val(Text1.Text)獲取成績SelectCaseCJ判斷等級(jí)CaseIs>=90DJ="優(yōu)秀"CaseIs>=80DJ="良好"CaseIs>=70DJ="中等"CaseIs>=60DJ="及格"CaseElseDJ="不及格"EndSelectText2.Text=DJ輸出等級(jí)EndSub,注意在SelectCase語句中,各測試項(xiàng)執(zhí)行的順序是自上而下依次判斷的,如果執(zhí)行到“CaseIs>=80”,說明“Is>=90”已經(jīng)不成立,一定要注意書寫的順序,如果順序混亂,可能導(dǎo)致結(jié)果不正確。,練習(xí),輸入一個(gè)月份,輸出該月有多少天。編寫一個(gè)簡單計(jì)算器,只要能實(shí)現(xiàn)輥減乘除運(yùn)算即可。,IIf函數(shù),格式:IIf(邏輯表達(dá)式,值1,值2)IIf函數(shù)的功能類似于有兩個(gè)分支的If語句。當(dāng)邏輯表達(dá)式的值為True時(shí),函數(shù)返回值1,當(dāng)邏輯表達(dá)式的值為False時(shí),函數(shù)返回值2。,IfA>BThenMaxData=AElseMaxData=BEndIf可以簡化為:MaxData=IIf(A>B,A,B),循環(huán)結(jié)構(gòu)-For循環(huán),For循環(huán)也叫計(jì)次循環(huán),格式為:For循環(huán)變量=初值To終值[Step步長]循環(huán)體[ExitFor]循環(huán)體Next[循環(huán)變量],說明-1,(1)循環(huán)變量。用做循環(huán)計(jì)數(shù)器的數(shù)值變量,不能是布爾類型或數(shù)組元素。(2)初值。循環(huán)變量的初始值,一般是一個(gè)數(shù)值表達(dá)式。(3)終值。循環(huán)變量的終值,一般是一個(gè)數(shù)值表達(dá)式。(4)步長。循環(huán)變量的增量,一般是一個(gè)數(shù)值表達(dá)式。其值可正可負(fù),但不能為0。步長可以省略,若省略,則步長為1。(5)循環(huán)體。放在For和Next之間的一條或多條語句,它們將被執(zhí)行指定的次數(shù)。(6)ExitFor。退出當(dāng)前一層For-Next循環(huán)。循環(huán)中可以在任何位置放置任意個(gè)ExitFor語句,隨時(shí)退出循環(huán)。ExitFor通常在條件判斷之后使用,例如If...Then,并將控制權(quán)轉(zhuǎn)移到緊接在Next之后的語句。(7)Next。循環(huán)結(jié)構(gòu)的最后一個(gè)語句,其后的循環(huán)變量可以缺省,若不缺省,則要與For語句中的循環(huán)變量一致。,說明-2,For-Next循環(huán)遵循“先檢查后循環(huán)”的原則。步長為正,循環(huán)變量初值大于終值時(shí),不循環(huán);步長為負(fù),循環(huán)變量初值小于終值時(shí),不循環(huán)。,For循環(huán)的執(zhí)行,把初值賦給循環(huán)變量;檢查循環(huán)變量值是否超過終值,若超過,則不執(zhí)行循環(huán)體而轉(zhuǎn)到Next后一條語句執(zhí)行,否則轉(zhuǎn)到3;執(zhí)行一次循環(huán)體;循環(huán)變量=循環(huán)變量+步長;轉(zhuǎn)到2。,超過有兩種情況:若步長為正,為循環(huán)變量值大于終值;若步長為負(fù),為循環(huán)變量值小于終值。,,,示例,求1+2+3+…+100。,DimIAsInteger,SAsIntegerForI=1To100S=S+INextPrint"1+2+3+...+100=";S,循環(huán)結(jié)束后I=?,注意,如果在For循環(huán)中,循環(huán)變量的初值、終值及步長是用變量表示的,則這些變量在循環(huán)體中的改變不會(huì)影響循環(huán)次數(shù)。,問:如下程序循環(huán)多少次?DimAAsInteger,BAsIntegerDimCAsInteger,IAsIntegerA=1:B=10:C=1ForI=AToBStepCA=A+1B=B-1C=C+1Next,答案:10次,練習(xí),求N!輸入一個(gè)整數(shù),判斷其是否為素?cái)?shù)。素?cái)?shù):一個(gè)整數(shù)除了1與本身之外再無其他因子。隨機(jī)生成10個(gè)兩位整數(shù)并輸出。找出1000以內(nèi)所有同構(gòu)數(shù)。,循環(huán)結(jié)構(gòu)-Do循環(huán),Do循環(huán)有當(dāng)型與直到型兩種。,DoWhile條件循環(huán)體[ExitDo]循環(huán)體Loop,Do循環(huán)體[ExitDo]循環(huán)體LoopWhile條件,DoUntil條件循環(huán)體[ExitDo]循環(huán)體Loop,Do循環(huán)體[ExitDo]循環(huán)體LoopUntil條件,,,當(dāng)型,直到型,說明,(1)對于循環(huán)次數(shù)未知的情況下,Do-Loop循環(huán)十分有用。(2)在DoWhile循環(huán)中,當(dāng)條件為真時(shí),要繼續(xù)循環(huán);在DoUntil循環(huán)中,條件為真時(shí),結(jié)束循環(huán)。(3)在Do-Loop循環(huán)中可以沒有While或Until部分,也稱為無條件循環(huán),但在循環(huán)體中一定要有ExitDo語句,否則會(huì)造成死循環(huán)。與ExitFor語句一樣,ExitDo語句通常在條件判斷之后使用。(4)ExitDo語句可以退出當(dāng)前一層Do循環(huán),把控制權(quán)轉(zhuǎn)移到Loop語句后的語句。,示例,求兩個(gè)整數(shù)的最大公約數(shù)。經(jīng)典算法:歐幾里德算法,DimMAsInteger,NAsInteger,RAsIntegerM=InputBox("輸入M")N=InputBox("輸入N")R=MModNDoWhileR0M=NN=RR=MModNLoopPrint"最大公約數(shù)為:";N,結(jié)構(gòu)的嵌套,一個(gè)結(jié)構(gòu)把另一個(gè)結(jié)構(gòu)完全包含。注意嵌套的層數(shù)沒有限制。一個(gè)控制結(jié)構(gòu)必須完全位于另一個(gè)結(jié)構(gòu)之內(nèi)。結(jié)構(gòu)層次比較多時(shí),應(yīng)盡可能讓程序呈現(xiàn)鋸齒形。多個(gè)循環(huán)結(jié)構(gòu)嵌套時(shí),注意循環(huán)控制變量的使用。,嵌套中的Exit語句,當(dāng)有多個(gè)Do循環(huán)嵌套時(shí),ExitDo語句只跳出當(dāng)前一層Do循環(huán);當(dāng)有多個(gè)For循環(huán)嵌套時(shí),ExitFor語句只跳出當(dāng)前一層For循環(huán);當(dāng)Do循環(huán)與For循環(huán)嵌套時(shí),使用ExitDo語句可退出Do循環(huán),若內(nèi)層循環(huán)為For循環(huán),則ExitDo語句同時(shí)跳出For循環(huán);使用ExitFor語句可退出For循環(huán),若內(nèi)層循環(huán)為Do循環(huán),則ExitFor語句同時(shí)跳出Do循環(huán)。,練習(xí),隨機(jī)生成十個(gè)能被3整除但不能被5整除的三位整數(shù)。用矩形法求定積分。計(jì)算π近似值。,返回,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 程序控制 結(jié)構(gòu) 算法 基礎(chǔ)
鏈接地址:http://m.appdesigncorp.com/p-3497634.html