




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、機(jī)械工業(yè)出版社同名教材配套電子教案2003 2003 年年 6 6月月循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1 循環(huán)結(jié)構(gòu)語(yǔ)句當(dāng)型循環(huán)的語(yǔ)法格式為:DO WHILE條件條件 命令列命令列 EXIT LOOPENDDO【例5-1】求1 + 2 + 3 + + 100的值。如圖5-2所示。圖5-2 求和s = 0n = 1DO WHILE n =100 s = s + n n = n + 1ENDDOTHISFORM.Text1.Value = s設(shè)計(jì)步驟如下:表單界面的設(shè)計(jì)參見(jiàn)前面章節(jié),這里僅給出命令按鈕的Click事件代碼:輸入整數(shù)n,求階乘n!(如圖5-4)。【例5-2】非負(fù)整數(shù)n的階乘定義如下
2、:00211!nnnn圖5-4 求階乘n! n = THISFORM.Text1.Valuet = 1i = 1DO WHILE i = n t = t * i i = i + 1ENDDOTHISFORM.Text2.Value = t設(shè)計(jì)步驟如下: 表單界面的設(shè)計(jì)參見(jiàn)前面章節(jié),這里給出命令按鈕的Click事件代碼: 另外,為了防止數(shù)據(jù)溢出,限制輸入的整數(shù)不超過(guò)20。為此,編寫(xiě)文本框Text1的事件代碼如下: Valid事件代碼:事件代碼:a = THIS.ValueIF a 20 MESSAGEBOX(請(qǐng)輸入不超過(guò)請(qǐng)輸入不超過(guò)20的非負(fù)整數(shù)的非負(fù)整數(shù)!) THIS.GotFocus RET
3、URN 0ELSE RETURN .T.ENDIF GotFocus事件代碼:事件代碼:THIS.SelStart=0THIS.SelLength=LEN(THIS.Text)【例5-3】輸入兩個(gè)正整數(shù),求它們的最大公約數(shù)。如圖5-6所示。圖5-6 求最大公約數(shù)m = THISFORM.Text1.Valuen = THISFORM.Text2.ValueIF n * m = 0 MESSAGEBOX(兩數(shù)都不能為0!) RETURNENDIFIF m n t = m m = n n = tENDIFr = m % nDO WHILE r != 0 m = n n = r r = m % nE
4、NDDOTHISFORM.Text3.Value = n設(shè)計(jì)步驟如下:表單界面的設(shè)計(jì)參見(jiàn)前面章節(jié),這里給出命令按鈕的Click事件代碼:【例5-4】輸入一個(gè)正整數(shù),利用“當(dāng)型”循環(huán)判斷是否素?cái)?shù)。n = THISFORM.Text1.Values = 0i = 2DO WHILE i = SQRT(n) AND s = 0 IF n % i = 0 s = 1 ELSE i = i + 1 ENDIFENDDOIF s = 0 a = 是一個(gè)素?cái)?shù)是一個(gè)素?cái)?shù) 設(shè)計(jì)步驟如下: 表單界面的設(shè)計(jì)參見(jiàn)前面章節(jié),這里給出命令按鈕的Click事件代碼:ELSEa = 不是素?cái)?shù)不是素?cái)?shù)ENDIF= MESSAG
5、EBOX(ALLT(STR(n) + a, 64 + 0 + 0, 信息信息)THISFORM.Text1.SetFocus編寫(xiě)編寫(xiě)Text1的的GotFocus事件代碼,使文本框得到焦點(diǎn)事件代碼,使文本框得到焦點(diǎn)后,文本立即被選中:后,文本立即被選中:THIS.SelStart = 0THIS.SelLength = LEN(STR(THIS.Value)語(yǔ)法結(jié)構(gòu)為:FOR內(nèi)存變量?jī)?nèi)存變量=初值初值TO終值終值STEP步長(zhǎng)值步長(zhǎng)值 命令列命令列 EXIT LOOPENDFOR | NEXT【例5-5】利用“步長(zhǎng)型”循環(huán)判斷素?cái)?shù)的程序。只需修改命令按鈕Command1的Click事件代碼:n
6、= THISFORM.Text1.Values = 0i = 2FOR i = 2 TO SQRT(n) IF n % i = 0 s = 1 EXIT ENDIFENDFORIF s = 0 a = 是一個(gè)素?cái)?shù)是一個(gè)素?cái)?shù)ELSE a = 不是素?cái)?shù)不是素?cái)?shù)ENDIF= MESSAGEBOX(ALLT(STR(n) + a, 64 + 0 + 0, 信息信息)THISFORM.Text1.SetFocus 程序的運(yùn)行結(jié)果同例5-4完全相同。【例5-6】求1! + 2! + 3! + + 20!的值。 其中命令按鈕Command1的Click事件代碼為:s = 0FOR n = 1 TO 20 t
7、 = 1 FOR m = 1 TO n t = t * m ENDFOR s = s + tENDFORTHISFORM.Text1.Value = s 運(yùn)行結(jié)果如圖5-11所示。圖5-11 求和5.2 列表框與組合框控件【例5-7】求從2000年到2100年之間的所有閏年。 設(shè)計(jì)步驟如下: (1) 設(shè)計(jì)表單界面和設(shè)置控件屬性。 (2) 編寫(xiě)命令按鈕Command1的Click事件代碼為:THISFORM.List1.ClearFOR n = 2000 TO 2100 IF n % 4 = 0 IF n % 100 != 0 OR n % 400 = 0 L = 1 ELSE L = 0 EN
8、DIF ELSE L = 0 ENDIF IF L = 1【例5-8】利用循環(huán)結(jié)構(gòu)和列表框控件,設(shè)計(jì)一個(gè)“選項(xiàng)移動(dòng)”表單。設(shè)計(jì)步驟如下: (1) 建立應(yīng)用程序用戶界面。 (2) 設(shè)置對(duì)象屬性 (3) 編寫(xiě)事件代碼。 編寫(xiě)容器控件Container1的Init事件代碼:THIS.List1.AddItem (one)THIS.List1.AddItem (two)THIS.List1.AddItem (three)THIS.List1.AddItem (four)THIS.List1.AddItem (five)THIS.List1.AddItem (six)THIS.List1.AddItem
9、 (seven)THIS.List1.AddItem (eight)THIS.List1.AddItem (nine)THIS.List1.AddItem (ten) 編寫(xiě)容器控件中命令按鈕組CommandGroup1的Click事件代碼:DO CASE CASE THIS.Value = 1 I = 0 DO WHILE I 0 THIS.Parent.List2.AddItem(THIS.Parent.List1.List(1) THIS.Parent.List1.RemoveItem(1) ENDDO CASE THIS.Value = 3 I = 0 DO WHILE I 0 THIS
10、.Parent.List1.AddItem(THIS.Parent.List2.List(1) THIS.Parent.List2.RemoveItem(1) ENDDOENDCASEIF THIS.Parent.List2.ListCount 0 THIS.Command3.Enabled =.T. THIS.Command4.Enabled =.T.ELSE THIS.Command3.Enabled =.F. THIS.Command4.Enabled =.F.ENDIFIF THIS.Parent.List1.ListCount = 0 THIS.Command1.Enabled =.
11、F. THIS.Command2.Enabled =.F.ELSE THIS.Command1.Enabled =.T. THIS.Command2.Enabled =.T.ENDIFTHISFORM.Refresh【例5-9】顯示文件目錄的列表框程序。在列表框中選定文件后,用鼠標(biāo)單擊“打開(kāi)選定文件”按鈕可打開(kāi)該文件進(jìn)行察看或編輯。 設(shè)計(jì)步驟如下: (1) 選擇新建表單,進(jìn)入表單設(shè)計(jì)器。增加一個(gè)列表框控件List1、一個(gè)命令按鈕Command1、兩個(gè)形狀Shape1Shape2、兩個(gè)標(biāo)簽Label1Label2和一個(gè)文本框Text1,如圖 5-16所示。 圖圖5-16 文件目錄列表文件目錄列表
12、 (2) 設(shè)置List1和Text1的屬性 (3) 編寫(xiě)事件代碼。 編寫(xiě)表單的Activate事件代碼:THISFORM.List1.SetFocus 編寫(xiě)文本框Text1的Valid事件代碼:THISFORM.List1.RowSource = ALLTRIM(THIS.Value)THISFORM.List1.Requery 編寫(xiě)“打開(kāi)選定文件”按鈕Command1的Click事件代碼:a = THISFORM.List1.ListIndexMODIFY FILE (THISFORM.List1.List(2)+THISFORM.List1.List(a)【例5-10】簡(jiǎn)易數(shù)學(xué)用表。顯示整
13、數(shù)1100的平方、平方根、自然對(duì)數(shù)和e指數(shù),如圖5-18所示。 設(shè)計(jì)步驟如下: (1) 設(shè)計(jì)程序界面與設(shè)置對(duì)象屬性圖5-18 簡(jiǎn)易數(shù)學(xué)用表 (2) 編寫(xiě)編寫(xiě)Command1的的Click事件代碼:事件代碼:FOR n = 1 TO 100 s = ALLT(STR(n) THISFORM.List1.AddlistItem(s,n,1) s = ALLT(STR(n2) THISFORM.List1.AddlistItem(s,n,2) s = ALLT(STR(sqrt(n),10,3) THISFORM.List1.AddlistItem(s,n,3) s = ALLT(STR(LOG(n
14、),10,4) THISFORM.List1.AddlistItem(s,n,4) s = ALLT(STR(EXP(n),14,4) THISFORM.List1.AddlistItem(s,n,5)ENDFOR使用組合框1、下拉列表框【例5-11】在文本框輸入數(shù)據(jù),按回車(chē)添加到列表框中,在列表框中選定項(xiàng)目,按回車(chē)后可以移去選定項(xiàng),如圖5-19所示。圖圖5-19 添加或移去文本添加或移去文本 設(shè)計(jì)步驟如下: (1) 選擇新建表單,進(jìn)入表單設(shè)計(jì)器,首先增加一個(gè)形狀Shape1,然后,在其中增加一個(gè)文本框Text1、一個(gè)組合框Combo1以及兩個(gè)標(biāo)簽Label1Label2。 (2) 設(shè)置Com
15、bo1的屬性 (3) 編寫(xiě)代碼。 編寫(xiě)表單的Activate事件代碼:PUBLIC aa = 1THIS.Text1.SetFocus編寫(xiě)Text1的事件代碼: KeyPress事件:事件:LPARAMETERS nKeyCode, nShIFtAltCtrlIF nKeyCode = 13 IF !EMPTY(THIS.Value) THISFORM.Combo1.AddItem (THIS.Value) THISFORM.Combo1.DisplayValue = THIS.Value ENDIF THIS.SelStart = 0 THIS.SelLength = LEN(RTRIM(T
16、HIS.Text) a = 0ENDIFValid事件:事件:IF a = 1 RETURN .T.ELSE a = 1 RETURN 0ENDIF編寫(xiě)Combo1的RightClick事件代碼:IF THIS.ListIndex 0 THISFORM.Text1.Value = THIS.List(THIS.ListIndex) THIS.RemoveItem (THIS.ListIndex) THIS.Value = 1ENDIF2、下列組合框【例5-12】在上例中使用下拉組合框來(lái)代替文本框和列表框,實(shí)現(xiàn)同樣的功能:輸入數(shù)據(jù),按回車(chē)后可添加到列表中,在列表中選定項(xiàng)目,單擊鼠標(biāo)右鍵可移去選定
17、項(xiàng),如圖5-20所示。圖圖5-20 下拉組合框下拉組合框 設(shè)計(jì)步驟如下: (1) 表單界面的設(shè)計(jì)與控件屬性的設(shè)置參見(jiàn)圖5-20。 (2) 編寫(xiě)代碼。 編寫(xiě)Combo1的事件代碼: KeyPress事件:LPARAMETERS nKeyCode, nShiftAltCtrlIF nKeyCode = 13 IF !EMPTY(THIS. DisplayValue) THIS.AddItem (THIS.DisplayValue) THISFORM.Text1.Value = THIS.ListCount ENDIF THIS.SelStart = 0 THIS.SelLength = LEN(A
18、LLT(THIS.Text) THIS.Tag = NENDIF RightClick事件:IF THIS.ListCount 0 THIS.RemoveItem (THIS.ListIndex) THIS.Value = 1 THISFORM.Text1.Value = THIS.ListCountENDIF Valid事件:IF THIS.Tag = Y RETURN .T.ELSE THIS.Tag = Y RETURN 0ENDIF【例5-13】“簡(jiǎn)易抽獎(jiǎng)機(jī)”,在組合框中輸入號(hào)碼。按下“開(kāi)始”按鈕后,組合框中將不停變換隨機(jī)得到的號(hào)碼。單擊“停止”按鈕,號(hào)碼停止變動(dòng),并得到中獎(jiǎng)的號(hào)碼。圖
19、5-21 簡(jiǎn)易抽獎(jiǎng)機(jī) 設(shè)計(jì)步驟如下: (1) 表單界面的設(shè)計(jì)與控件屬性的設(shè)置參見(jiàn)圖5-21。在窗體中增加一個(gè)計(jì)時(shí)器控件Timer1,并將其Timer屬性改為:50,Enabled屬性改為:False。 (2) 編寫(xiě)代碼。 編寫(xiě)Combo1的事件代碼: KeyPress事件: LPARAMETERS nKeyCode, nShiftAltCtrlDO CASE CASE nKeyCode = 13 IF !EMPTY(THIS.DisplayValue) THIS.AddItem (THIS.DisplayValue) THISFORM.Text1.Value = THIS.ListCount
20、ENDIF THIS.SelStart = 0 THIS.SelLength = LEN(ALLT(THIS.Text) THIS.Tag = N CASE nKeyCode = 27 & 按Esc鍵后可以移去選項(xiàng) IF THIS.ListCount 0 THIS.RemoveItem (THIS.ListIndex) THIS.Value = 1 THISFORM.Text1.Value = THIS.ListCount ENDIFENDCASE Valid事件:IF THIS.Tag = Y RETURN .T.ELSE THIS.Tag = Y RETURN 0ENDIF編寫(xiě)計(jì)時(shí)器控件T
21、imer1的Timer事件代碼,使之可以隨機(jī)地抽取獎(jiǎng)號(hào):n = THISFORM.Text1.Valuea = INT(RAND() * n) + 1THISFORM.Combo1.ListIndex = a 編寫(xiě)命令按鈕Command1的Click事件代碼:THISFORM.Timer1.Enabled = .NOT.(THISFORM.Timer1.Enabled)a = 按“停止”按鈕,可得中獎(jiǎng)號(hào)碼b = 中獎(jiǎng)號(hào)碼是: + THISFORM.Combo1.TextIF THISFORM.Timer1.Enabled THIS.Caption = 停止(S) THISFORM.Label1.Caption = aELSE THIS.Caption = 開(kāi)始(= 12 THIS.Parent.Label1.Caption = 下午ELSE THIS.Parent.Label1.Caption = 上午ENDIFIF HOUR(DATETIME() 12 hh = HOUR(DATETIME() 12ELSE hh = HOUR(DATETIME()ENDIFTHIS.Parent.Text1.Value = STR(hh) + SUBSTR(TIME(),3)【
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療組長(zhǎng)崗位職責(zé)解析
- 醫(yī)院設(shè)備維護(hù)人員崗位職責(zé)
- 部編版三年級(jí)下冊(cè)語(yǔ)文教學(xué)資源開(kāi)發(fā)計(jì)劃
- 校內(nèi)體育聯(lián)誼賽事計(jì)劃
- 石油化工施工安全日志范文
- 基層醫(yī)療機(jī)構(gòu)醫(yī)囑查對(duì)核對(duì)流程方案
- 2025年幼兒園大班飲食營(yíng)養(yǎng)指導(dǎo)計(jì)劃
- 裝配式建筑施工節(jié)點(diǎn)質(zhì)量管理措施及防治措施
- 專(zhuān)科門(mén)診護(hù)士工作職責(zé)提升
- 基層干部培訓(xùn)學(xué)習(xí)心得體會(huì)
- 產(chǎn)房實(shí)習(xí)生帶教計(jì)劃修改版
- 生活中的立體圖形--完整版課件
- 企業(yè)安全生產(chǎn)自查臺(tái)賬(建筑施工)
- 實(shí)驗(yàn)室資質(zhì)認(rèn)定質(zhì)量技術(shù)負(fù)責(zé)人培訓(xùn)
- 綜合實(shí)踐活動(dòng)評(píng)價(jià)表完整
- GB∕T 16422.3-2022 塑料 實(shí)驗(yàn)室光源暴露試驗(yàn)方法 第3部分:熒光紫外燈
- 菲迪克(FIDIC)簡(jiǎn)明合同格式-中英對(duì)照版
- 浙江省基礎(chǔ)教育地方課程(通用內(nèi)容)標(biāo)準(zhǔn)1-9年級(jí)
- 滿堂腳手架專(zhuān)項(xiàng)施工方案
- AVL燃燒分析及在標(biāo)定的應(yīng)用培訓(xùn)
- 線束裝配作業(yè)指導(dǎo)書(shū)
評(píng)論
0/150
提交評(píng)論