分享

计算机技术基础( 第六章 循环结构程序设计 )

 図籴帑簤屸璺 2019-07-11

计算机技术基础(VB)









学习内容
 
 
第一节 For...Next循环结构
第一节 For...Next循环结构
必修
开启
通过
点击进入
第二节 Do...Loop循环结构
第二节 Do...Loop循环结构
必修
开启
通过
点击进入
第三节 循环的嵌套
第三节 循环的嵌套
必修
开启
通过
点击进入
第四节 应用举例
第四节 应用举例
必修
开启
通过
点击进入
视频讲解1
视频讲解1
必修
开启
通过
点击进入
视频讲解2
视频讲解2
必修
开启
通过
点击进入
视频讲解3
视频讲解3
必修
开启
通过
点击进入
视频讲解4
视频讲解4
必修
开启
通过
点击进入
视频讲解5
视频讲解5
必修
开启
通过
点击进入
视频讲解6
视频讲解6
必修
开启
通过
点击进入




第一节 For...Next循环结构

    1.格式

   For<循环变量>=<初值>To<终值>[Step<步长>]
   <语句组1>
    [Exit For] 
   <语句组2>
  Next[ <循环变量>]

    2.功能:

    执行过程如流程图所示

    

   简化形式: 
   For<循环变量>=<初值>To<终值>
    <语句组1>
   Next 
   例子: 
   Sum=0 
   For I=1 To 100 
    Sum=Sum+I 
   Next

    3.说明

    (1)循环变量——数值变量

    (2)初值,终值,步长——数值表达式

    (3)步长——可正可负,但不能为0,为1时可以省略

      步长>0时,必须:初值<=终值

        循环结束条件——循环变量的值>终值

      步长<0时,必须:初值>=终值

        循环结束条件——循环变量的值<终值

    (4)Exit For——退出循环,常放在条件语句中

    (5)Next之后的循环变量应与For语句中的循环变量一致,也可以省略

    【例6-1】求1+2+3+4+…+N

    累加分析:

      累加器(变量)初值 S=0

      循环体(重复执行 S=S+I(I=1,2,…,N)

   Private Sub Command1_Click() 
   Dim N As Integer,I As Integer,S As Integer
   N=Val(Text1.Text) 
   S=0 
   For I=1 To N 
    S=S+I 
   Next I 
   Label3.Caption=S 
  End Sub

    

    思考:

    

    例:判断以下程序段的执行结果:

    

    

    【例6-2】求N!(N!=1×2×3×…×N)

    累乘分析:

      初始化:F=1

      循环体:F=F×I (I=1,2,3……N)

    程序:

    Private Sub Command1_Click() 
    Dim N As Integer,I As Integer,F As Long
    N=Val(Text1.Text) 
    F=1 
    For I=1 To N 
     F=F*I 
    Next I 
     Text2.Text=F 
   End Sub

    思考:

    1.求1×3×5×7……(共N项)。

    

    

    【例6-3】打印斐波那契(Fibonacci)数列的前20项斐波那契数列如下:

    0,1,1,2,3,5,8,13,…

    即从第三项起每一项是其前两项之和。

    分析:……

    Private Sub Form_Click() 
    A=0:B=1
    Text1.Text=Text1.Text  & Str(A)& Str(B)& vbCrLf
    For I=1 To 9 
      A=A+B 
      B=A+B 
      Text1.Text=Text1.Text  & Str(A)& Str(B)& vbCrLf
    Next I 
   End Sub

    思考:

    1.在窗体上打印1、3、5、7、9、…、N。

    2.在窗体上显示1到500之间所有能被3整除的数,每行10个数。

    3.在带水平滚动条文本框中显示1到指定N之间所有能被3和7同时整除的数。

    4.在带垂直滚动条的文本框中显示之间的正弦和余弦值,每隔求一组值。





第二节 Do...Loop循环结构

    问题:求12+22+32+42+…小于某数N的最大值,N由用户指定。

    特点:已知循环条件、未知循环次数,

       用Do…Loop循环结构实现较方便

    1.格式

    

    

    2.功能

    使用While<条件>:条件为True时,执行循环体

         条件为False时,退出循环

    使用Until<条件>:条件为False时,执行循环体

         条件为True时,退出循环

    格式一、二:在循环起始处判断条件,为当型循环

    格式三、四:在循环终止处判断条件,为直到型循环

    

    

    3.说明

    (1)Exit Do语句用于退出循环体

    (2)也可以在Do语句和Loop语句之后都没有条件,这时在循环体内必须有强行退出循环的语句

    (3)多数情况下,当型循环和直到型循环可互相代替

    【例6-4】求小于某数N的最大值,N由用户指定。设计界面下图:

    

    

    思考:求大于或等于某数N的最小值

    【例6-5】求直至最后一项的值≤10-4为止。

    分析:用N表示1、3、5…

      用Term表示每一项的值,则Term=1/(N*N)

      用Sum表示累加和

      循环初始条件:N=1,Sum=0

      循环终止条件:Term<=0.0001

    Private Sub Form_Click() 
    N=1:Sum=0
    Do 
     Term=1/(N*N) 
     Sum=Sum+Term 
     N=N+2 
    Loop Until Term <=0.0001
    Form1.FontSize=12      '设窗体的字体 
    CurrentY=200         '设当前显示位置 
    Print "运算结果为:";Sum
    Print "最后一项的值为:";Term
  End Sub

    【例6-6】已知某乡镇企业现有产值和年增长率,试问多少年后,该企业的产值可以翻一番。翻一番后实际产值是多少?

    分析:P—现有产值  R—年增长率

       Y—年     V—增长后的产值,初始值为P

       累乘:V=P(1+R)(1+R)…

       退出循环条件V>=2P

    

    Private Sub Form_Click() 
    P=Val(Text1.Text) 
    R=Val(Text2.Text)/100 
    V=P:Y=0 
    Do Until V >=2*P
     Y=Y+1 
     V=V*(1+R) 
   Loop 
   Text3.Text=Y 
   Text4.Text=Format(V, "0.00") 
  End Sub

    【例6-7】给出两个正整数M、N,求它们的最大公约数和最小公倍数。

    分析:求最大公约数的方法如下

    (1)以M作被除数,N作除数,求余数R。

    (2)如果R不为零,则将除数N做为新的被除数M,将余数R做为新的除数N,再进行相除,得到新的余数R。

    (3)如果R仍不等于0,则重复上述步骤(2)。如果R为零,则这时的除数N就是最大公约数。

    最小公倍数为两个数的积除以它们的最大公约数。

    设计界面如下图所示:

    

  Dim A As Integer,B As Integer,N As Integer,_
     M As Integer,R As Integer
   Private Sub Command1_Click() 
    M=Val(Text1.Text):N=Val(Text2.Text) 
    A=M:B=N 
    R=M Mod N 
    Do While R <>0
     M=N 
     N=R 
     R=M Mod N 
    Loop 
    Label3.Caption=N 
   End Sub 
   Private Sub Command2_Click() 
    Label4.Caption=A*B/N 
   End Sub

    【例6-8】给一个整数n(n>=3),判断它是否是素数

    分析:将数N被2—SQR(N)间全部整数除,如果都除不尽,则N是素数,否则N不是素数。设标志变量Flag,只要有一个被整除,就置为1。

    Private Sub Command1_Click() 
     N=Val(Text1.Text):K=Int(Sqr(N)):I=2
     Flag=0 
     Do While I <=K And Flag=0
      If N Mod I=0 Then Flag=1 Else I=I+1 
     Loop 
     If Flag=0 Then 
      Label1.Caption= "是素数"
     Else 
      Label1.Caption= "不是素数"
    End If 
   End Sub



第三节 循环的嵌套

    在一个循环体内又完整地包含另一个循环,称为循环的嵌套(或多重循环)

    

    说明

    (1)嵌套的循环可以是For…Next循环,也可以是Do…Loop循环

    (2)FOR循环有一个公共端点,可使用一个NEXT语句,循环变量按从内到外排列

    

    

    

    (4)嵌套循环应选用不同的循环变量

    例:For I=...
      For J=...
       ... 
      Next J 
       ... 
      For J=... 
       ... 
    Next J 
   Next I

    【例6-9】求1+(1+2)+(1+2+3)+…(1+2+3+…+n),n由用户输入。

    分析:……

    Private Sub Form_Click() 
    N=Val(Text1.Text) 
    Sum=0 
    For I=1 To N 
     Sum1=0 
     For J=1 To I 
       Sum1=Sum1+J 
     Next J 
       Sum=Sum+Sum1 
   Next I 
   Text2.Text=Sum 
  End Sub

    【例6-10】公鸡5个钱一只,母鸡三个钱一只、小鸡一个钱三只,要用100个钱买100只鸡,问公鸡、母鸡、和小鸡各买几只?

    分析:……

   Private Sub Form_Click() 
    Dim I As Integer,J As Integer,K As Integer
    Print Tab(5); "公鸡";Tab(15);"母鸡";Tab(25);_"小鸡"
    For I=0 To 20 
     For J=0 To 33 
      For K=0 To 100 Step 3 
       If I*5+J*3+K\3=100 And I+J+K=100 Then 
        Print Tab(5);I;Tab(15);J;Tab(25);K 
       End If 
   Next K,J,I 
  End Sub

    【例6-11】数字灯谜。有算式:

    

    A、B、C、D为非负一位数字,要求找出满足以上算式的A、B、C、D。

    答案:1098

    

    Private Sub Form_Click() 
    Dim A As Integer,B As Integer,C As Integer,_
      D As Integer 
    Dim S1 As Integer,S2 As Integer,S3 As Integer 
    For A=1 To 9 
     For B=0 To 9 
      For C=1 To 9 
        For D=0 To 9 
        S1=A*1000+B*100+C*10+D 
        S2=C*100+D*10+C 
        S3=A*100+B*10+C 
        If S1-S2=S3 Then 
          Print A;B;C;D 
        End If 
      Next D,C,B,A 
   End Sub





第四节 应用举例

    P94 【例6-11】

    P95 【例6-12】

    P96 【例6-13】

    本章小结

  For<循环变量>=<初值>To<终值>[Step<步长>]
    <语句组1>
    [Exit For] 
    <语句组2>
   Next [ <循环变量>]

    2.Do…Loop循环结构

    

   Private Sub Form_click() 
    For i=1 To 9
     For j=1 To i-1 
      Print, 
     Next j 
     For j=i To 9 
      Print i; "*";j;"=";i*j,
     Next j 
     Print 
     Print 
    Next i 
  End Sub

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多