循環(huán)語句的功能介紹和應(yīng)用.doc_第1頁
循環(huán)語句的功能介紹和應(yīng)用.doc_第2頁
循環(huán)語句的功能介紹和應(yīng)用.doc_第3頁
循環(huán)語句的功能介紹和應(yīng)用.doc_第4頁
循環(huán)語句的功能介紹和應(yīng)用.doc_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

強(qiáng)烈要求同學(xué)們注意:循環(huán)語句的功能介紹和應(yīng)用的內(nèi)容是程序設(shè)計(jì)課程的難點(diǎn)和重點(diǎn),必須全力以赴注意聽講!下面我們分兩節(jié)課來講解。第38講 循環(huán)語句的功能介紹和應(yīng)用(上)P21P95先復(fù)習(xí)一下上節(jié)課內(nèi)容:1、VB的立即方式,幾個常用函數(shù)的使用介紹(演示):打開矩形求解.FRM的立即窗口? Str(10)+Str(5)? Val(“10”)+ Val(“5”)? Fix(6.1), Fix(6.7), Fix(-6.1),Fix(-6.7)Fix(x)的值為截去x的小數(shù)部分后的整數(shù)部分,而且不四舍五入。S=888? S=; S 兩個以上表達(dá)式可以用“,”或“;”分隔,用“;”結(jié)果是前后緊接在一起;? S=+ Str(S) 和上面結(jié)果一樣2、補(bǔ)講2個函數(shù):(1)、輸入函數(shù):InputBox(x) 運(yùn)行時,會彈出一個輸入框,函數(shù)值是你鍵盤輸入的值,例如在矩形求解.FRM中,語句L = Text1.Text可用:L=InputBox(“L=”, “請輸入長度”,30)來代替,演示; 格式:InputBox(“提示字符串”, “輸入框名稱”,默認(rèn)值) 從上面演示中,凡是單引號 后面的內(nèi)容都不運(yùn)行,單引號 后面的內(nèi)容僅是注釋內(nèi)容; (5)輸出函數(shù):MsgBox(表達(dá)式) 彈出一個輸出信息框,把表達(dá)式的值顯示出來,例如在程矩形求解.FRM中,語句Text3.Text = d可用:MsgBox(d)代替,演示; MsgBox(表達(dá)式)中的表達(dá)式可以是字符串(文本),例如:語句Text4.Text = 有二條相同的邊長: 高h(yuǎn)=寬w= + Str(L / 4) + cm可用:MsgBox (有二條相同的邊長: 高h(yuǎn)=寬w= + Str(L / 4) + cm)來代替;演示:當(dāng)L=100,S=625時,d=0,只有一個根;一、循環(huán)結(jié)構(gòu) 執(zhí)行語句:1、2行復(fù)習(xí)例2:求S=1+1/2+1/3+1/n示意性程序如下:(S=S+1/k, k=1,2,3,n)條件1 輸入n值=1002 S=0 : k=1 3 Y3 如果 kn 轉(zhuǎn)到7 N執(zhí)行程序段:4、54 S=S+1/k5 k=k+16 轉(zhuǎn)到3 6 轉(zhuǎn)到3 7 S7 輸出: S 8 結(jié)束二、循環(huán)語句功能演示:執(zhí)行例2:求S=1+1/2+1/3+1/n的例2累加求和程序.FRM;求S=1+1/2+1/3+1/n的例2程序的 VB程序代碼如下:n = Val(n)Do While n 1 or n Fix(n) n = InputBox(輸入n不是自然數(shù),請重新輸入n=?) Text1.Text = n n = Val(n)LoopPrivate Sub Command1_Click() 插入下面程序段,可限制n只能輸入自然數(shù): S = 0n = Text1.Text=100For k = 1 To n Step 1 S = S + 1 / kNext k=100+1=101Text2.Text = SEnd SubTrue; 當(dāng)至少有一個條件為真時; False; 2個條件都為假時;注:邏輯運(yùn)算符or 是:或者意思,條件表達(dá)式1 or 條件邏輯表達(dá)式2=邏輯值 (演示:用立即方式驗(yàn)證Fix(x)和or) P71-73 1、 For語句的一般格式: P79For 循環(huán)變量=初值 To 終值 Step 步長程序段Next循環(huán)變量執(zhí)行功能流程圖如下:循環(huán)變量初值,把終值、步長記錄下來(一次性保存下來)循環(huán)變量超過終值?N Y結(jié)束循環(huán)執(zhí)行循環(huán)體內(nèi)程序段循環(huán)變量循環(huán)變量+步長循環(huán)程序功能示例:(執(zhí)行兩種循環(huán)語句示例.FRM)(1) S=0For K = 1 To 10 Step 1 (注意:Step 1 可省略) Print K 1,2,3,4,10 S = S+K 0+1+2+3+ 10 Next K 執(zhí)行:K K+1,K終值10? Print SPrint K=終值+步長 下面討論For K = 1 To 10 Step 1的其它改變情況:(2) For K = 1 To 10 Step 2 (3) For K = 10 To 1 Step -1 K10+(-1), 9+(-1), 8+(-1),.,直到K=0終值1結(jié)束循環(huán)。大于終值; 當(dāng)步長為正時;小于終值; 當(dāng)步長為負(fù)時;這里說明:循環(huán)變量超過終值?的“超過”意思: “大于”或“小于”的兩種情況流程圖參見:課本P78圖,并和講稿上的執(zhí)行功能流程圖對照;(4) For K = 1 To 10 Step 1S = S+1 每次循環(huán)把當(dāng)前的S加1,循環(huán)10次:S =1+1+1+1+1+1+1+1+1+1=10Next KPrint S 這里說明:循環(huán)體內(nèi)程序段里當(dāng)然可以沒有循環(huán)變量K,這里的K僅是控制循環(huán)次數(shù);(5) For K = 1 To 10 Step 1S = S+1K=K-1Next K=k+1=K+1Print S請問上程序執(zhí)行后,會出現(xiàn)什么情況?(循環(huán)變量不變化,死循環(huán)下去了,中斷死循環(huán),請同時按兩鍵:Ctrl+Break或Ctrl+ C);(提問1:有循環(huán)語句,但一次都不循環(huán)的話,上程序如何修改,如果步長是負(fù)的呢?)(6) a=1: b=10: c=1 (討論:初值、終值、步長是表達(dá)式情況)For K = a+1 To b Step c (先計(jì)算初值、終值、步長,后保存,以后不改變了)S = S+Kb=100 (不能再改變初值了)Next KPrint S討論:若上程序循環(huán)體內(nèi)程序段里包含a、b、c值的改變情況(演示)這里說明:For語句中初值、終值、步長. 是一次性保存下來不變了,不能在循環(huán)體內(nèi)改變初值、終值和步長值.。(注意上面的執(zhí)行功能流程圖)三、For/to循環(huán)語句功能練習(xí)1、看上講稿,并運(yùn)行兩種循環(huán)語句示例.FRM,按上面的舉例修改程序并運(yùn)行,理解For/to循環(huán)語句的功能;2、試完成上面提到的提問1;(請2個同學(xué)上來演示?)3、運(yùn)行例2累加求和程序.FRM,理解For/to循環(huán)語句功能; 只記錄一次后不變了!第39講 循環(huán)語句的功能介紹和應(yīng)用(下)P21P95復(fù)習(xí)For/to循環(huán)語句功能,對照流程圖,運(yùn)行兩種循環(huán)語句示例.FRM;注意:死循環(huán)情況和一次都不循環(huán)得情況(分步長正負(fù)情況);四、Do循環(huán)語句的功能介紹 P80在某些情況下,我們事先不能確定For語句中的初值、終值、步長,比如在例2累加求和程序.FRM中,運(yùn)行演示,我們要限制輸入的n 只能輸入自然數(shù),否則循環(huán)重輸,這里我們不知道重輸次數(shù)?那么這種重輸?shù)难h(huán)我們就不能用For/to循環(huán)語句了,咋辦?但我們知道循環(huán)重輸?shù)臈l件:n 1 或 n不是整數(shù),這時我們要用Do 語句來解決;Do語句的常用格式: n Fix(n)Do While 條件表達(dá)式 程序段Loop執(zhí)行功能為:當(dāng)條件表達(dá)式= True(成立時),執(zhí)行執(zhí)行循環(huán)體內(nèi)程序段,否則(False)終止Do語句循環(huán),其執(zhí)行功能流程圖參見:課本P80圖4.3.4。示范程序:在上例2程序中我們要限制輸入的n 只能輸入自然數(shù),要補(bǔ)充程序段如下:n = Val(n)Do While n 1 or n Fix(n) (只要一個條件成立,說明n不是自然數(shù)) n = InputBox(輸入n不是自然數(shù),請重新輸入n=?) Text1.Text = n n = Val(n)LoopTrue; 當(dāng)至少有一個條件為真時; False; 2個條件都為假時;注:邏輯運(yùn)算符or 是:或者意思,條件表達(dá)式1 or 條件邏輯表達(dá)式2=邏輯值 (演示:用立即方式驗(yàn)證Fix(x)和or) P71-73 上面Do While程序段的功能就限制輸入的n 只能輸入自然數(shù):演示兩種循環(huán)語句示例.FRM并查看程序代碼 演示:查看上例2累加求和程序.FRM(求S=1+1/2+1/3+1/n)程序代碼并運(yùn)行(提問2:在保持程序功能不變的情況下,你能不能把上面的For循環(huán)語句改成Do語句呢?)五、循環(huán)語句的應(yīng)用程序舉例(一)、枚舉算法介紹:P21/P95像公檢法系統(tǒng)審查案件時用的逐一排查嫌疑對象的方法一樣,現(xiàn)實(shí)世界中有一類問題可以采用搜索的方法,在搜索結(jié)果的過程中,把各種可能的情況都考慮到,并對全部可能結(jié)果逐一進(jìn)行判斷,過濾掉那些不符合要求的,保留符合要求的結(jié)果,這種方法叫做枚舉算法(enumerative algorithm)。枚舉算法就是按問題本身的性質(zhì),一一列舉出該問題所有可能的解,并在逐一列舉的過程中,檢驗(yàn)每個可能解是否是問題的真正解,若是,就采納這個解,否則就拋棄它。在列舉的過程中,既不能遺漏也不應(yīng)重復(fù)。1、枚舉算法編程舉例1(數(shù)字填空題): 枚舉算法一般用循環(huán)結(jié)構(gòu)來實(shí)現(xiàn),例如:數(shù)字填空題如下: 已知: 25?6=37或67的倍數(shù), 求出滿足條件的所有?數(shù)字; 可知:?=00-99, ?6=(0-99)*10+6, 25?6=25006+(0-99)*10; 所以:設(shè)循環(huán)變量為j,則j=0-99, 25?6=25006+j*10; 其算法流程圖參見:課本P22圖2.1.2,其中C=C+1,統(tǒng)計(jì)滿足條件的5位數(shù)個數(shù)。 算法流程圖動畫演示:數(shù)字的推算.swf實(shí)際參考程序見:枚舉算法.FRM(演示)。 說明:在程序中:(1) If n / 37 = Fix(n / 37) Or n / 67 = Fix(n / 67) Then上面的條件成立,則表示n可以被37或67整除, (2) List1.AddItem n 表示把n值顯示在列表框List1.AddItem中 List1.AddItem c= + Str(c) 是把結(jié)果字符串n或c= + Str(c)按次序顯示在列表框(對象)上,一般格式: 列表框?qū)ο竺? AddItem空格字符串 (使用演示) 列表框?qū)ο蟮墓δ鼙任谋究驅(qū)ο蟮膬?yōu)點(diǎn)是能顯示多行結(jié)果。 再次復(fù)習(xí)提醒: 列表框List1.AddItem的List1是默認(rèn)對象名可改名,其屬性名AddItem不能改。 注意:列表框?qū)ο竺? AddItem=字符串,是錯誤的,不能用=,只能用空格,這和文本框和標(biāo)簽框?qū)ο?賦值不同。2、枚舉算法編程舉例2(求約數(shù)倍數(shù).frm): (1)、求約數(shù):如果i是n的約數(shù),則條件:n / i = Fix(n / i)成立;用立即方式驗(yàn)證、理解:100/25=Fix(100/25) 成立; 100/27=Fix(100/27) 不成立;問:100以內(nèi)的約數(shù)是那幾個?我們要輸入n=100,需要對i=1,2,3,.100進(jìn)行循環(huán)驗(yàn)證:(演示:求約數(shù)倍數(shù).frm)。(2)、求m的倍數(shù)i:(0n范圍內(nèi))我們知道:i=m、2*m、3*m、.,k*m是m的倍數(shù)(k*m=n),我們可以對k作為循環(huán)變量進(jìn)行循環(huán)(步長Step 1,K=1,2,3,4,.),k*m就是是m的倍數(shù);但我們也可直接把i作為循環(huán)變量進(jìn)行循環(huán),這時i=k*m就是是m的倍數(shù)(步長Step m):(演示:求約數(shù)倍數(shù).frm)。六、循環(huán)語句功能練習(xí)1、閱讀理

溫馨提示

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

最新文檔

評論

0/150

提交評論