81Do循环 单击窗体,要求在窗体上显示6行星号 前测型当型循环: Dim i As Integer’定义计数器变量i来记录目前已输出的行数 Do Print”***冰水**水***水 i=i+1 Loop Until i>val( InputBox("请输入行数:") End sub 注意: 在循环体中,至少要有一条语句使得循环趋结束,使 循环语句在有限的时间内执行完毕,否则将会出现 “死循环
8.1 Do 循环 ❖单击窗体,要求在窗体上显示6行星号 ▪ 前测型当型循环: ▪ 将上面的代码改为前测型直到型循环、后测型当 型循环和后测型直到型循环。 Dim i As Integer '定义计数器变量i来记录目前已输出的行数 i = 0 Do While i < 6 '当输出行数未达到6行,反复执行下面语句 Print "****************" i = i + 1 '每输出一行信息,计数器i累加1 Loop '返回到Do While行 End Sub Do Until i >5 Print "****************" i = i + 1 Loop Do Loop while Loop Until i > 5<6 Val(InputBox("请输入行数:")) 注意: ▪ 在循环体中,至少要有一条语句使得循环趋结束,使 循环语句在有限的时间内执行完毕,否则将会出现 “死循环
81Do循环 例:求S=1+(1+2)+…+(1+2+3+…+100)的值。 编写代码: Private Sub Command1 Click Dim s As long, n As Integer, k As integer Labe. Caption="s=1+(1+2)+(1+2+3)+..(1+2+3+...100)=? 0:k=1 Do n+k 求“小和”,即求s中的每一项的和。 s=stn 求“大和”,即求s的累加和。 k=k+1 “大和”的项数(亦即“小和”中的末项值) Loop Until >100 Labe12. Caption="s=1+(1+2)+(1+2+3).+(1+2+3+.+100)="&s End sub
例:求S=1+(1+2)+ …+(1+2+3+…+100)的值。 ▪ 编写代码: Private Sub Command1_Click() Dim s As Long, n As Integer, k As Integer Label1.Caption = "s=1+(1+2)+(1+2+3)+...(1+2+3+...100)=?" s = 0: n = 0: k = 1 Do n = n + k ’ 求“小和”,即求s中的每一项的和。 s = s + n ’ 求“大和”,即求s的累加和。 k = k + 1 ’ “大和”的项数(亦即“小和”中的末项值)。 Loop While k <= 100 Label2.Caption = "s=1+(1+2)+(1+2+3)...+(1+2+3+...+100)=" & s End Sub 8.1 Do循环 Untilk >100
81Do循环 设计采用欧几里德算法求解两个 开始 自然数的最大公约数的程序 算法分析: 输入两个自然数m2n “欧几里德算法” r=m mod n ①输入两个自然数m、n ②求m除以n的余数r mn ③m←n nr ④n←r ⑤若r≠0,则重复执行②③ r<>0 False ④(循环),否则转⑥ rue ⑥输出m和n的最大公约数m 输出最大公约数m (结束
8.1 Do 循环 ❖ 设计采用欧几里德算法求解两个 自然数的最大公约数的程序 算法分析: ▪ “欧几里德算法” ①输入两个自然数m、n ②求m除以n的余数r ③m←n ④n←r ⑤若r≠0,则重复执行②③ ④(循环),否则转⑥ ⑥输出m和n的最大公约数m 输入两个自然数m,n r=m Mod n m=n n=r r<>0 输出最大公约数m 开始 结束 False True
81Do循环 Private Sub Command1 Click 开始 Dim m as integer n as integer r as integer m=Ⅴal(Text1.Text) 输入两个自然数mn n=Val(Text2 Text) Do r=m Mod n r=m od n = n n=r En Loop whiles o Text3 text=m nEr End Sub Private Sub Command2 Click False TextI Text rue Text2 Text= Text3 text End Sub 输出最大公约数m Private Sub Command3 Click End 结束 End sub
8.1 Do 循环 ❖ 设计采用欧几里德算法求解两个 自然数的最大公约数的程序 界面设计: ▪ 利用文本框来接收数据和显示 结果,利用命令按钮的单击事 件完成最大公约数的计算。 False 输入两个自然数m,n r=m Mod n m=n n=r r<>0 输出最大公约数m 开始 结束 True Private Sub Command1_Click() Dim m As Integer, n As Integer, r As Integer m = Val(Text1.Text) n = Val(Text2.Text) End Sub Private Sub Command2_Click() Text1.Text = "" Text2.Text = "" Text3.Text = "" End Sub Private Sub Command3_Click() End End Sub Private Sub Command1_Click() Dim m As Integer, n As Integer, r As Integer m = Val(Text1.Text) n = Val(Text2.Text) Do r = m Mod n m = n n = r Loop While r <> 0 Text3.Text = m End Sub Private Sub Command2_Click() Text1.Text = "" Text2.Text = "" Text3.Text = "" End Sub Private Sub Command3_Click() End End Sub
81Do循环 心设计一个小程序,能够实现 开始 接收若干的专家的考评打分,[总考评分清零ota10 输入-1表示打分结束,最后考评分个数清零Nm0 的丶八 Private Sub Form Click o Dim Total As Single, mark As Single, average As Single Dim Num as integer Total= 0: num=0 mark=Val( inpuTbox("'请输入第"&Num+1&"个专家评分(1表示结束输入):") Do While mark Total= Total+ mark Num= Num+ 1 mark=Val( InputBox("请输入第"&Num+1&"个专家评分(-表示结束输入):") Loop average= Total/Num MSgB0xNm&"个专家的平均分为:"& average End Sub (结束
8.1 Do 循环 ❖ 设计一个小程序,能够实现 接收若干的专家的考评打分, 输入-1表示打分结束,最后 计算出平均考评分 界面设计 : ▪ 由于要接收的数据无 法预知其个数,所以 不适合利用文本框来 接收数据,所以采用 输入函数InputBox, 结合循环实现 ▪ 利用窗体的单击事件 完成最大公约数的计 算,并在窗体上而显 示结果 输入一个专家打分Mark 总分累加Total = Total + Mark 输出平均考评分Average 开始 结束 False True 总考评分清零Total=0 Mark<>-1 输入下一个专家打分Mark Average= Total / Num 考评分个数清零Num=0 考评分个数累加Num = Num + 1 Private Sub Form_Click () Dim Total As Single, mark As Single, average As Single Dim Num As Integer Total = 0: Num = 0 mark = Val(InputBox("请输入第" & Num + 1 & "个专家评分(-1表示结束输入):")) Do While mark <> -1 Total = Total + mark Num = Num + 1 mark = Val(InputBox("请输入第" & Num+1 & "个专家评分(-1表示结束输入):")) Loop average = Total / Num MsgBox Num & "个专家的平均分为:" & average End Sub