




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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)語句當(dāng)型循環(huán)的語法格式為: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é),這里僅給出命令按鈕的Click事件代碼:輸入整數(shù)n,求階乘n!(如圖5-4)?!纠?-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é),這里給出命令按鈕的Click事件代碼: 另外,為了防止數(shù)據(jù)溢出,限制輸入的整數(shù)不超過20。為此,編寫文本框Text1的事件代碼如下: Valid事件代碼:事件代碼:a = THIS.ValueIF a 20 MESSAGEBOX(請輸入不超過請輸入不超過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é),這里給出命令按鈕的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é),這里給出命令按鈕的Click事件代碼:ELSEa = 不是素?cái)?shù)不是素?cái)?shù)ENDIF= MESSAG
5、EBOX(ALLT(STR(n) + a, 64 + 0 + 0, 信息信息)THISFORM.Text1.SetFocus編寫編寫Text1的的GotFocus事件代碼,使文本框得到焦點(diǎn)事件代碼,使文本框得到焦點(diǎn)后,文本立即被選中:后,文本立即被選中:THIS.SelStart = 0THIS.SelLength = LEN(STR(THIS.Value)語法結(jié)構(gòu)為:FOR內(nèi)存變量內(nèi)存變量=初值初值TO終值終值STEP步長值步長值 命令列命令列 EXIT LOOPENDFOR | NEXT【例5-5】利用“步長型”循環(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完全相同?!纠?-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) 編寫命令按鈕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è)置對象屬性 (3) 編寫事件代碼。 編寫容器控件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) 編寫容器控件中命令按鈕組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)單擊“打開選定文件”按鈕可打開該文件進(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) 編寫事件代碼。 編寫表單的Activate事件代碼:THISFORM.List1.SetFocus 編寫文本框Text1的Valid事件代碼:THISFORM.List1.RowSource = ALLTRIM(THIS.Value)THISFORM.List1.Requery 編寫“打開選定文件”按鈕Command1的Click事件代碼:a = THISFORM.List1.ListIndexMODIFY FILE (THISFORM.List1.List(2)+THISFORM.List1.List(a)【例5-10】簡易數(shù)學(xué)用表。顯示整
13、數(shù)1100的平方、平方根、自然對數(shù)和e指數(shù),如圖5-18所示。 設(shè)計(jì)步驟如下: (1) 設(shè)計(jì)程序界面與設(shè)置對象屬性圖5-18 簡易數(shù)學(xué)用表 (2) 編寫編寫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ù),按回車添加到列表框中,在列表框中選定項(xiàng)目,按回車后可以移去選定項(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) 編寫代碼。 編寫表單的Activate事件代碼:PUBLIC aa = 1THIS.Text1.SetFocus編寫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編寫Combo1的RightClick事件代碼:IF THIS.ListIndex 0 THISFORM.Text1.Value = THIS.List(THIS.ListIndex) THIS.RemoveItem (THIS.ListIndex) THIS.Value = 1ENDIF2、下列組合框【例5-12】在上例中使用下拉組合框來代替文本框和列表框,實(shí)現(xiàn)同樣的功能:輸入數(shù)據(jù),按回車后可添加到列表中,在列表中選定項(xiàng)目,單擊鼠標(biāo)右鍵可移去選定
17、項(xiàng),如圖5-20所示。圖圖5-20 下拉組合框下拉組合框 設(shè)計(jì)步驟如下: (1) 表單界面的設(shè)計(jì)與控件屬性的設(shè)置參見圖5-20。 (2) 編寫代碼。 編寫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ǎng)機(jī)”,在組合框中輸入號(hào)碼。按下“開始”按鈕后,組合框中將不停變換隨機(jī)得到的號(hào)碼。單擊“停止”按鈕,號(hào)碼停止變動(dòng),并得到中獎(jiǎng)的號(hào)碼。圖
19、5-21 簡易抽獎(jiǎng)機(jī) 設(shè)計(jì)步驟如下: (1) 表單界面的設(shè)計(jì)與控件屬性的設(shè)置參見圖5-21。在窗體中增加一個(gè)計(jì)時(shí)器控件Timer1,并將其Timer屬性改為:50,Enabled屬性改為:False。 (2) 編寫代碼。 編寫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編寫計(jì)時(shí)器控件T
21、imer1的Timer事件代碼,使之可以隨機(jī)地抽取獎(jiǎng)號(hào):n = THISFORM.Text1.Valuea = INT(RAND() * n) + 1THISFORM.Combo1.ListIndex = a 編寫命令按鈕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 = 開始(= 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《國防教育入門》課件
- 上海貝派配套各品牌變頻器電阻電抗器濾波器選型樣本
- 濰坊工程職業(yè)學(xué)院《藥劑學(xué)綜合》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西省永新縣達(dá)標(biāo)名校2025屆初三下學(xué)期第三次質(zhì)量檢測試題語文試題含解析
- 紹興文理學(xué)院《中國民間音樂概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 信陽職業(yè)技術(shù)學(xué)院《普通話》2023-2024學(xué)年第二學(xué)期期末試卷
- 臨沂大學(xué)《建筑防火設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 四川省營山縣2025年初三英語試題下學(xué)期期中考試英語試題含答案
- 漯河醫(yī)學(xué)高等專科學(xué)?!夺t(yī)療器械生物相容性評價(jià)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海民航職業(yè)技術(shù)學(xué)院《生物醫(yī)學(xué)工程研究的倫理及學(xué)術(shù)道德》2023-2024學(xué)年第二學(xué)期期末試卷
- 股權(quán)轉(zhuǎn)讓協(xié)議稅務(wù)承諾書
- 七類作業(yè)JSA分析記錄表格模板
- 心理統(tǒng)計(jì)學(xué)考研歷年真題及答案
- 技術(shù)經(jīng)紀(jì)人練習(xí)題集附有答案
- 內(nèi)科學(xué)講義(唐子益版)
- GB/T 4357-2022冷拉碳素彈簧鋼絲
- GB/T 19845-2005機(jī)械振動(dòng)船舶設(shè)備和機(jī)械部件的振動(dòng)試驗(yàn)要求
- GB/T 14614-1993小麥粉吸水量和面團(tuán)揉和性能測定法粉質(zhì)儀法
- 醬酒行業(yè)發(fā)展趨勢分析
- 《紅樓夢》賈府平面圖
- 養(yǎng)老機(jī)構(gòu)全套服務(wù)管理流程圖()
評論
0/150
提交評論