Presentation is loading. Please wait.

Presentation is loading. Please wait.

循环结构设计 第 5 章 计算机具有速度快、精度高的特点,特别适于进行重复性的工作,重复次数越多越能显示它的威力。所以,使用计算机时,应尽量把问题归纳为简单而有规则的重复运算和操作,以充分发挥计算机的特长。

Similar presentations


Presentation on theme: "循环结构设计 第 5 章 计算机具有速度快、精度高的特点,特别适于进行重复性的工作,重复次数越多越能显示它的威力。所以,使用计算机时,应尽量把问题归纳为简单而有规则的重复运算和操作,以充分发挥计算机的特长。"— Presentation transcript:

1 循环结构设计 5 计算机具有速度快、精度高的特点,特别适于进行重复性的工作,重复次数越多越能显示它的威力。所以,使用计算机时,应尽量把问题归纳为简单而有规则的重复运算和操作,以充分发挥计算机的特长。

2

3  循环是指在指定的条件下多次重复执行一组语句。被重复执行的一组语句称为循环体
VB提供的循环语句有 Do...Loop For...Next While...Wend For Each...Next 最常用的是For...Next和Do...Loop语句

4

5 格式: For 循环变量=初值 To 终值 [Step 步长值] 循环体 Next 循环变量
说明:上述程序,循环变量k的初值、终值和步长值分别为2,10和2,即从2开始,每次加2,到10为止,控制循环5次。每次循环都将循环体(Print k*k)执行一次 格式: For 循环变量=初值 To 终值 [Step 步长值] 循环体 Next 循环变量 功能:本语句指定循环变量取一系列数值,并且对循环变量的每一个值把循环体执行一次 初值、终值和步长值都是数值表达式,步长值可以是正数(称为递增循环),也可以是负数(称为递减循环) 若步长值为1,则Step 1可以省略

6

7

8

9 例5.4 用π/4=1 - 1/3 + 1/5 - 1/7 + ……级数求π的近似值 (取前5000项来进行计算)
例 用π/4=1 - 1/3 + 1/5 - 1/7 + ……级数求π的近似值 (取前5000项来进行计算) 采用Print直接在窗体上输出结果,程序代码如下: Private Sub Form_Load() Show Dim pi As Single, c As Integer, s As Integer pi = 0 s = 's表示加或减运算 For c = 1 To Step 2 pi = pi + s / c s = -s '交替改变加、减号 Next c Print "π="; pi * 4 End Sub 程序运行结果是: π=

10

11 Private Sub Form_Load() Dim x As Integer, y As Integer Show
采用Print直接在窗体上输出结果,程序代码: Private Sub Form_Load() Dim x As Integer, y As Integer Show For x = 1 To 30 y = x If 3 * x + y / 3 = 100 Then Print "母鸡只数为:"; x, Print "小鸡只数为:"; y End If Next x End Sub 运行结果: 母鸡只数为: 小鸡只数为:75

12

13

14

15 例5.7 用π/4=1 - 1/3 + 1/5 - 1/7 + …… 级数,求π的近似值。当最后一项的绝对值小于10-5时,停止计算
例5.7 用π/4=1 - 1/3 + 1/5 - 1/7 + …… 级数,求π的近似值。当最后一项的绝对值小于10-5时,停止计算 采用Print直接在窗体上输出结果,程序代码: Private Sub Form_Load() Show Dim pi As Single, n As Long, s As Integer pi = 0 : n = 1 : s = 1 Do While n <= '或1/n>= pi = pi + s / n s = -s n = n + 2 Loop Print "π="; pi * 4 End Sub 程序运行结果: π=

16

17 三种循环语句比较 示例:求和s = 1 + 2 + 3 + … + 8
For…Next 前测型 S= s=0:k=1 For k=1 to Do While k<=8 s=s+k s=s+k Next k k=k+1 Print s Loop Print s s=0 : k=1 do s=s+k k=k+1 Loop While k<=8 后测型

18

19 Private Sub Command1_Click()
Dim m As Integer, n As Integer, p As Integer m = Val(Text1.Text) : n = Val(Text2.Text) If m <= 0 Or n <= 0 Then MsgBox ("数据错误!") End End If Do p = m Mod n m = n n = p Loop While p <> 0 Text3.Text = m End Sub 若输入的m和n的值为85和68,则运行结果如上图

20

21

22 例5.8的循环语句可改为 Do p = m Mod n If p=0 Then Exit Do End If m = n n = p
Loop While p <> 0 Text3.Text = n

23

24

25

26 采用Print直接在窗体上输出结果,程序代码如下:
Private Sub Form_Load() Show For i = 1 To 7 Print Tab(10 - i); For j = 1 To 2 * i - 1 Print Chr(i + 48); Next j Print Next i End Sub Print Chr(i+48)与Print i有所不同

27 例5.12 取一元、二元、五元的硬币共十枚,付给25元钱,有多少种不同的取法?
(1)分析:设一元硬币为a枚,二元硬币为b枚,五元硬币为c枚,可列出方程 a+b+c= a+2b+5c=25 采用两重循环,外循环变量a从0~10,内循环变量b从0~ (2)创建应用程序的用户界面

28 (3)编写程序代码 Private Sub Form_Load() Show
程序通过Print方法把处理结果输出在标签的下方 Private Sub Form_Load() Show CurrentX = 0 : CurrentY = '确定开始显示的坐标 Print , "五元", "二元", "一元" n = '记录解的组数 For a = 0 To 10 For b = 0 To 10 c = 10 - b - a If a + 2 * b + 5 * c = 25 And c >= 0 Then n = n + 1 Print "("; n; ")", c, b, a End If Next b, a End Sub

29

30

31 (3)ItemData属性:为每个表项设置一个对应的数值
(4)ListCount属性:返回列表框中表项的数目 (5)ListIndex属性:返回已选定表项的顺序号(索引)。若未选定任何项,则ListIndex的值为-1  (6)Text属性:存放当前选定表项的文本内容 (7)Selected属性:逻辑值,表示列表框中某一表项是否被选中 (8)Sorted属性:设置列表框中各表项在运行时是否按字母顺序排列 (9)MultiSelect属性:设置是否允许同时选择多个表项

32 假设列表框List1中有四个表项,并已选定第2项,则 有: List1.List(0)的值为”教授”
个数List1.ListCount 为4 List1.ListIndex 为1 List1.Text的值为”副教授” List1.Selected(1)为True List1.Selected(0)为False 采用以下方法,可为列表框List1赋值: (1)在属性窗口中设置 (2)利用AddItem赋值 (3) 利用List属性赋值 List1.AddItem “教授” List1.List(0)= “教授” List1.AddItem “副教授” List1.List(1)= “副教授” List1.AddItem “讲师” List1.List(2)= “讲师” List1.AddItem “助教” List1.List(3)= “助教”

33 3. 事件 可接收Click、DblClick等事件 4. 方法 (1) AddItem方法:用于把一个列表项加入列表框 格式: [对象.]AddItem 列表项[,索引] 举例:List1.AddItem "海南省" ,28 其中,“索引”值不能大于表项数(ListCount) (2) Clear方法:用于清除列表框中的所有项目 (3) RemoveItem方法:用于删除指定的列表项 格式: [对象.]AddItem 列表项[,索引]

34 5. 列表框表项的输出 (1)用鼠标单击列表框内某一表项,则该表项值存放在Text属性中。例如: x = List1
5. 列表框表项的输出 (1)用鼠标单击列表框内某一表项,则该表项值存放在Text属性中。例如: x = List1.Text ′把表项值存放在x变量中 (2)指定索引号来取表项的内容,例如: List1.ListIndex = 3 x = List1.Text (3)直接从数组List()中读取,例如: x = List1.List(5)

35 例5.13 设计一个程序,找出100~800范围内所有能同时被3和8整除的自然数 
例 设计一个程序,找出100~800范围内所有能同时被3和8整除的自然数  (1)分析:判别条件为 (n Mod 3=0) And (n Mod 8=0) (2)创建应用程序的用户界面和设置对象属性

36 (3)编写程序代码 编写的“显示”按钮Click事件过程代码:
Private Sub Command1_Click() List1.Clear For n = 100 To 800 If (n Mod 3 = 0) And (n Mod 8 = 0) Then List1.AddItem n End If Next n End Sub

37

38 Private Sub Form_Load() List1.AddItem "电子商务" List1.AddItem "网页制作"
List1.AddItem "Internet简明教程" List1.AddItem "计算机网络基础" List1.AddItem "多媒体技术“ End Sub Private Sub Command1_Click() '"显示"按钮单击事件 List2.Clear '清除列表框的内容 For i = 0 To List1.ListCount '逐项判断 If List1.Selected(i) Then '真时为选定 List2.AddItem List1.List(i) End If Next i Private Sub Command2_Click() '"清除"按钮单击事件 List2.Clear

39

40 (2)Text属性:该属性是用户所选定项目的文本或直接从文本框输入的文本

41 例5.15 编制程序,把一批课程名放入组合框中,再对组合框进行项目显示、添加、删除、全部删除等操作
(1)创建应用程序的用户界面 (2)设置对象属性 组合框的Style属性为0,TabIndex(键序)为0 两个标签;四个命令按钮; 一个文本框Text1,用来显示当前的选修课总课程数

42 (3)编写程序代码 Private Sub Form_Load()
Combo1.AddItem "电子商务" Combo1.AddItem "网页制作" Combo1.AddItem "Internet简明教程" Combo1.AddItem "计算机网络基础" Combo1.AddItem "多媒体技术" Combo1.Text = "" '置空值 Text1.Text = Combo1.ListCount '表项个数 End Sub Private Sub Command1_Click() '”添加” If Len(Combo1.Text) > 0 Then Combo1.AddItem Combo1.Text Text1.Text = Combo1.ListCount End If Combo1.Text = "" Combo1.SetFocus

43 Private Sub Command2_Click() ‘“删除”
Dim ind As Integer ind = Combo1.ListIndex If ind <> -1 Then '-1表示无表项 Combo1.RemoveItem ind '删除已选定的表项 Text1.Text = Combo1.ListCount End If End Sub Private Sub Command3_Click() ‘“全清” Combo1.Clear Private Sub Command4_Click() End

44 5.4 程序举例 例5.16 打印“九九乘法表”  两重循环; 采用Print直接在窗体上输出结果
5.4 程序举例 例5.16 打印“九九乘法表” 两重循环; 采用Print直接在窗体上输出结果 Private Sub Form_Load() Show FontSize = '设置字号 Print Tab(12); “九九乘法表“ '输出标题 FontSize = 12 Print '输出空行 For k = 0 To 9 Print Tab(k * 4); k; '输出第一行数字 Next k Print '换行 For j = 1 To '外循环 Print j; For k = 1 To j '内循环 Print Tab(k * 4); j * k; '输出乘积 Print '换行 Next j End Sub

45 打印“九九乘法表”

46 例5.17 输入一个十进制整数,将其转换成二进制数、八进制数或十六进制数
例 输入一个十进制整数,将其转换成二进制数、八进制数或十六进制数 (1)分析:模仿十进制整数转换成二进制数的方法(即“除2取余”),采用逐次“除n取余”法(n为2,8或16),即用n不断去除要转换的十进制数,直至商为0为止,将每次所得的余数逆序排列(以最后余数为最前位),即得到所转换的n进制数。 (2)创建应用程序的用户界面和设置对象属性

47  列表框的名称为List1,其List属性设置了三个表项:二进制、八进制和十六进制,ItemData属性设置了相应的值:2,8和16
(3)编写程序代码 功能要求:用户在文本框Text1中输入要转换的十进制数,选择转换进制,单击“转换”按钮(Command1)后,则在文本框Text2中输出转换结果。 “换码表”(Ch变量)的作用

48 Private Sub Command1_Click() '“转换”按钮单击事件过程
Dim y As String, x As Long, s As Integer Dim Ch As String, n As Integer Ch = " ABCDEF" '换码表 If List1.ListIndex = -1 Then n = '未选,则以二进制转换 Else n = List1.ItemData(List1.ListIndex) End If y = " " :x = Val(Text1.Text) If x = 0 Then Text2.Text = "" Exit Sub Do While x > 0 s = x Mod n '取余数 x = Int(x / n) '求商 y = Mid(Ch, s + 1, 1) + y '换码,反序加入 Loop Text2.Text = y End Sub Private Sub Command2_Click() '结束 Unload Me End Sub 示例:(142)10 = (8E)16

49 例5.18 把一个正整数写成若干个素数相乘的形式 解题的步骤;程序代码: 例如: 10=2*5 24=2*2*2*3 76=2*2*19
例 把一个正整数写成若干个素数相乘的形式 例如: 10=2* =2*2*2* =2*2*19 解题的步骤;程序代码: Private Sub Form_Load() Show s = InputBox("请输入一个正整数") x = Val(s) :Print Print x; "="; For i = 2 To x Do While (x Mod i = 0) '求相同因子 x = x / i Print i; If x <> 1 Then Print "*"; Loop Next i End Sub 示例:20 = 2*2*5

50

51

52

53

54 Private Sub Command1_Click()
If Option1.Value Then Text1.FontName = "宋体" Else Text1.FontName = "幼圆" End If If Option3.Value Then Text1.FontSize = 16 Text1.FontSize = 20 If Option5.Value Then Text1.ForeColor = RGB(0, 0, 255) Text1.ForeColor = RGB(255, 0, 0) End Sub

55

56

57 滚动条控件可以识别10个事件,其中最常用的是Scroll和Change事件
3. 事件 滚动条控件可以识别10个事件,其中最常用的是Scroll和Change事件 (1)Scroll事件:当用鼠标拖动滚动块时,即触发Scroll事件 (2)Change事件:当改变Value属性值时,即触发Change事件 当释放滚动块、单击滚动条内空白处或滚动箭头时,Change事件就会发生。

58

59 说明:根据调色原理,基本颜色有红、绿、蓝三种,选择这三种颜色的不同比例,可以合成所需要的任意颜色
(1)创建应用程序的用户界面和设置对象属性 三个水平滚动条名称从上至下分别为HScroll1、HScroll2、HScroll3 其Max属性均设置为255,Min属性均设置为0, SmallChange属性设置为1,LargeChange属性设置为10,Value设置为0。 显示合成颜色的标签名为Label1

60 (2)编写程序代码 功能要求:通过操作(单击或拖动)滚动条,直接修改RGB设置,从而得到标签背景所需的颜色 Private Sub HScroll1_Change() Label1.BackColor = RGB(HScroll1.Value, _ HScroll2.Value, HScroll3.Value) End Sub Private Sub HScroll2_Change() Private Sub HScroll3_Change()

61

62

63

64

65

66

67


Download ppt "循环结构设计 第 5 章 计算机具有速度快、精度高的特点,特别适于进行重复性的工作,重复次数越多越能显示它的威力。所以,使用计算机时,应尽量把问题归纳为简单而有规则的重复运算和操作,以充分发挥计算机的特长。"

Similar presentations


Ads by Google