第5章 循環(huán)結構程序設計_第1頁
第5章 循環(huán)結構程序設計_第2頁
第5章 循環(huán)結構程序設計_第3頁
第5章 循環(huán)結構程序設計_第4頁
第5章 循環(huán)結構程序設計_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、機械工業(yè)出版社同名教材配套電子教案2003 2003 年年 6 6月月循環(huán)結構程序設計循環(huán)結構程序設計5.1 循環(huán)結構語句當型循環(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設計步驟如下:表單界面的設計參見前面章節(jié),這里僅給出命令按鈕的Click事件代碼:輸入整數(shù)n,求階乘n!(如圖5-4)?!纠?-2】非負整數(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設計步驟如下: 表單界面的設計參見前面章節(jié),這里給出命令按鈕的Click事件代碼: 另外,為了防止數(shù)據(jù)溢出,限制輸入的整數(shù)不超過20。為此,編寫文本框Text1的事件代碼如下: Valid事件代碼:事件代碼:a = THIS.ValueIF a 20 MESSAGEBOX(請輸入不超過請輸入不超過20的非負整數(shù)的非負整數(shù)!) THIS.GotFocus RET

3、URN 0ELSE RETURN .T.ENDIF GotFocus事件代碼:事件代碼:THIS.SelStart=0THIS.SelLength=LEN(THIS.Text)【例5-3】輸入兩個正整數(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設計步驟如下:表單界面的設計參見前面章節(jié),這里給出命令按鈕的Click事件代碼:【例5-4】輸入一個正整數(shù),利用“當型”循環(huán)判斷是否素數(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 = 是一個素數(shù)是一個素數(shù) 設計步驟如下: 表單界面的設計參見前面章節(jié),這里給出命令按鈕的Click事件代碼:ELSEa = 不是素數(shù)不是素數(shù)ENDIF= MESSAG

5、EBOX(ALLT(STR(n) + a, 64 + 0 + 0, 信息信息)THISFORM.Text1.SetFocus編寫編寫Text1的的GotFocus事件代碼,使文本框得到焦點事件代碼,使文本框得到焦點后,文本立即被選中:后,文本立即被選中:THIS.SelStart = 0THIS.SelLength = LEN(STR(THIS.Value)語法結構為:FOR內存變量內存變量=初值初值TO終值終值STEP步長值步長值 命令列命令列 EXIT LOOPENDFOR | NEXT【例5-5】利用“步長型”循環(huán)判斷素數(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 = 是一個素數(shù)是一個素數(shù)ELSE a = 不是素數(shù)不是素數(shù)ENDIF= MESSAGEBOX(ALLT(STR(n) + a, 64 + 0 + 0, 信息信息)THISFORM.Text1.SetFocus 程序的運行結果同例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 運行結果如圖5-11所示。圖5-11 求和5.2 列表框與組合框控件【例5-7】求從2000年到2100年之間的所有閏年。 設計步驟如下: (1) 設計表單界面和設置控件屬性。 (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)結構和列表框控件,設計一個“選項移動”表單。設計步驟如下: (1) 建立應用程序用戶界面。 (2) 設置對象屬性 (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】顯示文件目錄的列表框程序。在列表框中選定文件后,用鼠標單擊“打開選定文件”按鈕可打開該文件進行察看或編輯。 設計步驟如下: (1) 選擇新建表單,進入表單設計器。增加一個列表框控件List1、一個命令按鈕Command1、兩個形狀Shape1Shape2、兩個標簽Label1Label2和一個文本框Text1,如圖 5-16所示。 圖圖5-16 文件目錄列表文件目錄列表

12、 (2) 設置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ù)學用表。顯示整

13、數(shù)1100的平方、平方根、自然對數(shù)和e指數(shù),如圖5-18所示。 設計步驟如下: (1) 設計程序界面與設置對象屬性圖5-18 簡易數(shù)學用表 (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ù),按回車添加到列表框中,在列表框中選定項目,按回車后可以移去選定項,如圖5-19所示。圖圖5-19 添加或移去文本添加或移去文本 設計步驟如下: (1) 選擇新建表單,進入表單設計器,首先增加一個形狀Shape1,然后,在其中增加一個文本框Text1、一個組合框Combo1以及兩個標簽Label1Label2。 (2) 設置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】在上例中使用下拉組合框來代替文本框和列表框,實現(xiàn)同樣的功能:輸入數(shù)據(jù),按回車后可添加到列表中,在列表中選定項目,單擊鼠標右鍵可移去選定

17、項,如圖5-20所示。圖圖5-20 下拉組合框下拉組合框 設計步驟如下: (1) 表單界面的設計與控件屬性的設置參見圖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】“簡易抽獎機”,在組合框中輸入號碼。按下“開始”按鈕后,組合框中將不停變換隨機得到的號碼。單擊“停止”按鈕,號碼停止變動,并得到中獎的號碼。圖

19、5-21 簡易抽獎機 設計步驟如下: (1) 表單界面的設計與控件屬性的設置參見圖5-21。在窗體中增加一個計時器控件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鍵后可以移去選項 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編寫計時器控件T

21、imer1的Timer事件代碼,使之可以隨機地抽取獎號:n = THISFORM.Text1.Valuea = INT(RAND() * n) + 1THISFORM.Combo1.ListIndex = a 編寫命令按鈕Command1的Click事件代碼:THISFORM.Timer1.Enabled = .NOT.(THISFORM.Timer1.Enabled)a = 按“停止”按鈕,可得中獎號碼b = 中獎號碼是: + 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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論