第5章 循环结构程序设计_第1页
第5章 循环结构程序设计_第2页
第5章 循环结构程序设计_第3页
第5章 循环结构程序设计_第4页
第5章 循环结构程序设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、机械工业出版社同名教材配套电子教案2003 2003 年年 6 6月月循环结构程序设计循环结构程序设计5.1 循环结构语句当型循环的语法格式为: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设计步骤如下:表单界面的设计参见前面章节,这里仅给出命令按钮的Click事件代码:输入整数n,求阶乘n!(如图5-4)。【例5-2】非负整数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设计步骤如下: 表单界面的设计参见前面章节,这里给出命令按钮的Click事件代码: 另外,为了防止数据溢出,限制输入的整数不超过20。为此,编写文本框Text1的事件代码如下: Valid事件代码:事件代码:a = THIS.ValueIF a 20 MESSAGEBOX(请输入不超过请输入不超过20的非负整数的非负整数!) THIS.GotFocus RET

3、URN 0ELSE RETURN .T.ENDIF GotFocus事件代码:事件代码:THIS.SelStart=0THIS.SelLength=LEN(THIS.Text)【例5-3】输入两个正整数,求它们的最大公约数。如图5-6所示。图5-6 求最大公约数m = THISFORM.Text1.Valuen = THISFORM.Text2.ValueIF n * m = 0 MESSAGEBOX(两数都不能为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设计步骤如下:表单界面的设计参见前面章节,这里给出命令按钮的Click事件代码:【例5-4】输入一个正整数,利用“当型”循环判断是否素数。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 = 是一个素数是一个素数 设计步骤如下: 表单界面的设计参见前面章节,这里给出命令按钮的Click事件代码:ELSEa = 不是素数不是素数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】利用“步长型”循环判断素数的程序。只需修改命令按钮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 = 是一个素数是一个素数ELSE a = 不是素数不是素数ENDIF= MESSAGEBOX(ALLT(STR(n) + a, 64 + 0 + 0, 信息信息)THISFORM.Text1.SetFocus 程序的运行结果同例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 运行结果如图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】利用循环结构和列表框控件,设计一个“选项移动”表单。设计步骤如下: (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】简易数学用表。显示整

13、数1100的平方、平方根、自然对数和e指数,如图5-18所示。 设计步骤如下: (1) 设计程序界面与设置对象属性图5-18 简易数学用表 (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】在文本框输入数据,按回车添加到列表框中,在列表框中选定项目,按回车后可以移去选定项,如图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】在上例中使用下拉组合框来代替文本框和列表框,实现同样的功能:输入数据,按回车后可添加到列表中,在列表中选定项目,单击鼠标右键可移去选定

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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论