




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、循环结构程序设计循环的概念循环的概念循环的基本语句结构和流程循环的基本语句结构和流程循环在常用算法中的应用循环在常用算法中的应用循环结构程序设计循环结构是程序的三大算法结构之一,是相对比较难循环结构是程序的三大算法结构之一,是相对比较难理解和运用的结构,很多问题常常要以它作为基础来理解和运用的结构,很多问题常常要以它作为基础来的解决,因此,是否能掌握好的解决,因此,是否能掌握好循环结构循环结构是是非常关键非常关键的的学习循环时学习循环时F首先,弄清楚首先,弄清楚循环的概念循环的概念,以及具体循环语句结构,以及具体循环语句结构的的流程流程(可以利用可以利用单步调试工具单步调试工具)F第二步应学会
2、根据已有的算法流程图结构,去套第二步应学会根据已有的算法流程图结构,去套用用书中书中循环语句循环语句结构来解决问题结构来解决问题F第三步,学会自己分析问题,将问题中的某些第三步,学会自己分析问题,将问题中的某些重复重复性性工作,工作,抽取抽取出来,出来,找出其中的规律找出其中的规律,画出流程图,画出流程图,最后用某种适合的循环语句实现最后用某种适合的循环语句实现F第四步,通过学习,第四步,通过学习,积累经典算法积累经典算法,学会将这些算,学会将这些算法法融会贯通融会贯通,运用到实际问题的解决,运用到实际问题的解决循环结构程序设计单击窗体,要求在窗体上显示单击窗体,要求在窗体上显示6行星号行星号
3、&分析:分析: 要求显示的信息是每行是由要求显示的信息是每行是由16个星号个星号所构成的字符串,所以可以通过连续所构成的字符串,所以可以通过连续6次调用窗体的次调用窗体的Print方法实现图形的显方法实现图形的显示示Private Sub Form_Click() Print * Print * Print * Print * Print * Print *End Subs若要求显示若要求显示10行或更多行这行或更多行这样的信息样的信息s若打印信息的行数要求是由若打印信息的行数要求是由用户决定用户决定J专门用于进行重复操作的语专门用于进行重复操作的语句结构句结构 循环结构程序设计循环结构循环结
4、构就是这样一种专门用于就是这样一种专门用于实现有规律的重复实现有规律的重复性操作的算法结构性操作的算法结构,是程序基本的三大算法结构之,是程序基本的三大算法结构之一。一。循环循环重复地执行某些操作。计算机语言中的循重复地执行某些操作。计算机语言中的循环就是指环就是指在指定的条件下,重复执行一组语句在指定的条件下,重复执行一组语句;这;这组被重复执行的语句就称为组被重复执行的语句就称为循环体循环体,而指定的条件,而指定的条件就称作就称作循环条件循环条件&分析:分析:要求重复要求重复6次输出一行由次输出一行由16个星号所构成的字符串,个星号所构成的字符串,因此,循环条件就是输出的行数因此,循环条件
5、就是输出的行数6,重复执行的循,重复执行的循环体就是环体就是Print * 循环结构程序设计单击窗体,要求在窗体上显示单击窗体,要求在窗体上显示6行星号行星号&分析:分析:要求重复要求重复6次输出一行由次输出一行由16个星号所构成的字符串,因此,个星号所构成的字符串,因此,循环条件就是输出的行数循环条件就是输出的行数6,重复执行的循环体就是,重复执行的循环体就是Print * Private Sub Form_Click() Dim i As Integer 定义计数器变量定义计数器变量i来记录目前已输出的行数来记录目前已输出的行数 i = 0 Do While i 6 当输出行数未达到当输出
6、行数未达到6行,反复执行下面语句行,反复执行下面语句 Print * i = i + 1 每输出一行信息,计数器每输出一行信息,计数器i累加累加1 Loop 返回到返回到Do While行行End Sub循环结构程序设计单击窗体,要求在窗体上显示单击窗体,要求在窗体上显示n行星号行星号&分析:分析:要求输出的要求输出的16个星号的行数由用户决定个星号的行数由用户决定 InputBoxPrivate Sub Form_Click() n = Val(InputBox(请输入行数:请输入行数:) 接收用户输入的行数接收用户输入的行数 i = 0 Do While i n 当输出行数没有达到当输出行
7、数没有达到n行,就反复输出行,就反复输出 Print * i = i + 1 每输出一行信息,计数器每输出一行信息,计数器i累加累加1 Loop 返回到返回到Do While行行End Sub循环结构程序设计Do-Loop循环结构循环结构当型循环当型循环(While)直到型循环直到型循环(Until)While型循环控制语句型循环控制语句For-Next 循环结构语句循环结构语句循环结构程序设计7.1.1循环循环(While)格式格式1Do While 循环条件循环条件循环体循环体Loop格式格式2Do循环体循环体Loop While 循环条件循环条件True循环条件循环条件循环体循环体Fal
8、se循环条件循环条件循环体循环体TrueFalse循环结构程序设计7.1.1循环循环(While)格式格式1Do While 循环条件循环条件循环体循环体Loop单击窗体,要求在窗体上显单击窗体,要求在窗体上显示示6行星号行星号Private Sub Form_Click() Dim i As Integer 定义定义i循环控制变量循环控制变量 i = 0 Do While i 6 Print * i = i + 1 LoopEnd SubTrue循环条件循环条件循环体循环体False循环结构程序设计7.1.1循环循环(While)格式格式2Do循环体循环体Loop While 循环条件循环条
9、件单击窗体,要求在窗体上显单击窗体,要求在窗体上显示示6行星号行星号Private Sub Form_Click() Dim i As Integer 定义定义i循环控制变量循环控制变量 i = 0 Do Print * i = i + 1 Loop While i 6End Sub循环条件循环条件循环体循环体TrueFalse循环结构程序设计7.1.1循环循环(While)在在Do语句和语句和Loop语句之间的语句即为语句之间的语句即为循环体语句循环体语句,“循环体循环体”可以由可以由若干条语句若干条语句构成;构成;“循环条件循环条件”通常是一个通常是一个关系或逻辑表达式关系或逻辑表达式,其
10、值为,其值为True或或False。两种格式的两种格式的While循环都表示:循环都表示:仅当循环条件成立仅当循环条件成立,即为真即为真“True”时,时,重复执行循环体重复执行循环体,否则循环条件,否则循环条件不成立,即为假不成立,即为假“False”时,结束循环时,结束循环格式格式1是每一次进入循环,是每一次进入循环,先判断循环条件先判断循环条件是否为是否为“True”,后决定后决定是否进入是否进入执行循环体执行循环体;格式格式2是是先先执行一次循环体执行一次循环体,后后进行进行判别循环条件判别循环条件是否为真是否为真“True”,以决定是否再次进入执行循环体。格式,以决定是否再次进入执行
11、循环体。格式1的循环有可能一次也没进入循环体执行,格式的循环有可能一次也没进入循环体执行,格式2是不是不管循环条件是否为真,至少执行一次循环体管循环条件是否为真,至少执行一次循环体循环结构程序设计7.1.1循环循环(While)在在循环体中循环体中,至少要有一条语句使得循环条件趋向至少要有一条语句使得循环条件趋向于假于假“False”,即使循环语句在有限的时间内执行,即使循环语句在有限的时间内执行完毕,否则将会出现完毕,否则将会出现“死循环死循环”将循环条件中影响循环次数的变量,称为将循环条件中影响循环次数的变量,称为循环控制循环控制变量变量例题例题7-2循环结构程序设计设计采用欧几里德算法求
12、解两设计采用欧几里德算法求解两个自然数的最大公约数的程序个自然数的最大公约数的程序 &算法分析:算法分析:“欧几里德算法欧几里德算法”输入两个自然数输入两个自然数m、n求求m除以除以n的余数的余数rmnnr若若r0,则重复执行,则重复执行(循循环环),否则转,否则转输出输出m和和n的最大公约数的最大公约数m输入两个自然数输入两个自然数m,nr=m Mod nm=nn=rr0输出最大公约数输出最大公约数m开始开始结束结束FalseTrue循环结构程序设计设计采用欧几里德算法求解两设计采用欧几里德算法求解两个自然数的最大公约数的程序个自然数的最大公约数的程序&界面设计界面设计:利用利用文本框文本框
13、来接收数据和显示来接收数据和显示结果,利用结果,利用命令按钮的单击命令按钮的单击事件事件完成最大公约数的计算完成最大公约数的计算False输入两个自然数输入两个自然数m,nr=m Mod nm=nn=rr0输出最大公约数输出最大公约数m开始开始结束结束True循环结构程序设计设计采用欧几里德算法求解两设计采用欧几里德算法求解两个自然数的最大公约数的个自然数的最大公约数的程序程序&程序代码设计:程序代码设计:输入的数据输入的数据M和和N要求是自然数,要求是自然数,所以在程序中应加入对数据的所以在程序中应加入对数据的合法性进行检验的部分合法性进行检验的部分考虑到程序的应用范围,数据考虑到程序的应用
14、范围,数据类型可选用长整型类型可选用长整型根据算法流程图可知这是一个根据算法流程图可知这是一个循环结构:循环条件是循环结构:循环条件是r0,r是循环控制变量,循环体是是循环控制变量,循环体是r=m Mod n : m = n : n = r代码详见书代码详见书False输入两个自然数输入两个自然数m,nr=m Mod nm=nn=rr0输出最大公约数输出最大公约数m开始开始结束结束True循环结构程序设计7.1.2直到型直到型循环循环(Until)格式格式1Do Until 循环条件循环条件循环体循环体Loop格式格式2Do循环体循环体Loop Until 循环条件循环条件False循环条件循
15、环条件循环体循环体True循环条件循环条件循环体循环体FalseTrue循环结构程序设计7.1.2直到型直到型循环循环(Until)两种格式的两种格式的Until循环都表示:循环都表示:循环条件不成立循环条件不成立,即,即为假为假“False”时,时,反复执行循环体反复执行循环体,直到循环条件直到循环条件成立,即为真成立,即为真“True”时,时,结束循环结束循环Until直到型循环与直到型循环与While当型循环的区别仅在于:当型循环的区别仅在于:前者当循环条件为前者当循环条件为“False”时,反复执行循环体,时,反复执行循环体,后者是当循环条件为后者是当循环条件为“True”时反复执行循
16、环体。其时反复执行循环体。其余完全与余完全与While当型循环雷同。因此,两者常常可以当型循环雷同。因此,两者常常可以互换使用,只需要互换使用,只需要更改描述关键字,以及将相应的更改描述关键字,以及将相应的循环条件取反循环条件取反循环结构程序设计7.1.2直到型直到型循环循环(Until)格式格式1Do Until 循环条件循环条件循环体循环体LoopFalse循环条件循环条件循环体循环体True 单击窗体,要求在窗体上显单击窗体,要求在窗体上显示示6行星号行星号 Private Sub Form_Click() Dim i As Integer 定义定义i循环控制变量循环控制变量 i = 0
17、 Do While i 6 Print * i = i + 1 Loop End SubDo 循环结构程序设计7.1.2直到型直到型循环循环(Until)格式格式2Do循环体循环体Loop Until 循环条件循环条件求解两个自然数的最大公约求解两个自然数的最大公约数数Private Sub CmdGcd_Click()计算最大公约数计算最大公约数 Do 求最大公约数求最大公约数 r = m Mod n m = n n = r Loop Until r = 0End Sub循环条件循环条件循环体循环体TrueFalse循环结构程序设计7.1.3 Do-Exit Do-Loop型型格式格式 Do
18、 部分循环体语句部分循环体语句 部分循环体语句部分循环体语句LoopG反复执行循环体,当执行到反复执行循环体,当执行到Exit Do语句,就语句,就立即结束立即结束循环循环,转而执行,转而执行Loop语句的下一条语句语句的下一条语句G循环体中,可以包括一条或多条循环体中,可以包括一条或多条Exit Do语句语句EExit Do语句最常用的形式语句最常用的形式是是与与If-Then或或Select Case条条件分支语句件分支语句相结合使用相结合使用If 条件表达式条件表达式 Then Exit Do循环结构程序设计小结小结不管是哪一种格式的不管是哪一种格式的Do-Loop循环,一般都可相互循环
19、,一般都可相互转换使用,经常用于解决各种各样的重复操作的问转换使用,经常用于解决各种各样的重复操作的问题题在使用循环时,关键是要找出重复操作的规律,形在使用循环时,关键是要找出重复操作的规律,形成循环体,以及设置好循环条件成循环体,以及设置好循环条件M一般循环体中一般循环体中肯定有一条改变循环控制变量值的肯定有一条改变循环控制变量值的语句语句,除非采用,除非采用Do-Exit Do-Loop型,中间通过条件型,中间通过条件判断,直接跳出循环判断,直接跳出循环例题例题7-3循环结构程序设计设计一个小程序,能够实现接收若干的专家的考评打设计一个小程序,能够实现接收若干的专家的考评打分,输入分,输入
20、-1表示打分结束,最后计算出平均考评分表示打分结束,最后计算出平均考评分 &分析:分析:要求出专家的平均考评分要求出专家的平均考评分Average,所以先得求出专,所以先得求出专家的考评总分家的考评总分Total,然后再除以考评分个数,然后再除以考评分个数Num。而考评总分的计算,就是要将每个专家的考评打分而考评总分的计算,就是要将每个专家的考评打分Mark依次累加依次累加专家的打分并非一次性给出,而是在程序运行时,专家的打分并非一次性给出,而是在程序运行时,由用户依次输入,因此要进行考评总分的计算,必由用户依次输入,因此要进行考评总分的计算,必须先须先接收一个用户输入的专家打分接收一个用户输
21、入的专家打分,只要该专家打,只要该专家打分分不为不为-1(表示结束输入表示结束输入),就进行,就进行累加累加这个考评打分,这个考评打分,然后再继续接收然后再继续接收下一个下一个用户输入的专家打分用户输入的专家打分重重复若干次,直到用户输入的数据为复若干次,直到用户输入的数据为-1为止为止 循环结构程序设计设计一个小程序,能够实设计一个小程序,能够实现接收若干的专家的考评现接收若干的专家的考评打分,输入打分,输入-1表示打分结束,表示打分结束,最后计算出平均考评分最后计算出平均考评分 &界面设计界面设计 :由于要接收的数据无由于要接收的数据无法预知其个数,所以法预知其个数,所以不适合利用文本框来
22、不适合利用文本框来接收数据,所以采用接收数据,所以采用输入函数输入函数InputBox,结合循环实现结合循环实现利用利用窗体的单击事件窗体的单击事件完成最大公约数的计完成最大公约数的计算,并在窗体上而显算,并在窗体上而显示结果示结果输入一个专家打分输入一个专家打分Mark总分累加总分累加Total = Total + Mark输出平均考评分输出平均考评分Average开始开始结束结束FalseTrue总考评分清零总考评分清零Total=0Mark-1输入下一个专家打分输入下一个专家打分MarkAverage= Total / Num考评分个数清零考评分个数清零Num=0考评分个数累加考评分个数
23、累加Num = Num + 1循环结构程序设计设计一个小程序,能够实设计一个小程序,能够实现接收若干的专家的考评现接收若干的专家的考评打分,输入打分,输入-1表示打分结束,表示打分结束,最后计算出平均考评分最后计算出平均考评分 &程序代码设计(详见书)程序代码设计(详见书)根据算法流程图可知根据算法流程图可知这是一个循环结构:这是一个循环结构:循环条件循环条件是专家打分是专家打分Mark -1,Mark是是循环控制变量,循环控制变量,循环循环体体是是Total=Total+Mark : Num=Num+1 : 输入下输入下一个专家打分一个专家打分Mark,于是,可以套用上述于是,可以套用上述循
24、环语句循环语句格式格式1输入一个专家打分输入一个专家打分Mark总分累加总分累加Total = Total + Mark输出平均考评分输出平均考评分Average开始开始结束结束FalseTrue总考评分清零总考评分清零Total=0Mark-1输入下一个专家打分输入下一个专家打分MarkAverage= Total / Num考评分个数清零考评分个数清零Num=0考评分个数累加考评分个数累加Num = Num + 1循环结构程序设计格式格式 G这种结构使用完全类似于这种结构使用完全类似于Do-Loop的当型循环的当型循环(格式格式1),表示当循环条件为表示当循环条件为True时,反复执行循环
25、体,直到循时,反复执行循环体,直到循环条件为环条件为False为止为止G一般,现在常用一般,现在常用Do-Loop结构化与适应性更强的当型循结构化与适应性更强的当型循环格式替换这种格式环格式替换这种格式 循环结构程序设计格式格式 G循环控制变量也称为循环控制变量也称为“循环变量循环变量”、“控制变量控制变量”或或“循环计数器循环计数器”,它必须为数值型变量,但不能是下,它必须为数值型变量,但不能是下标变量或记录元素标变量或记录元素G初值、终值和步长也必须是数值表达式。其中步长是初值、终值和步长也必须是数值表达式。其中步长是指每次循环变量的增量,一般当初值指每次循环变量的增量,一般当初值终值,则
26、步长应取负值。仅当终值,则步长应取负值。仅当步长步长为为1时,时,Step 步长可以步长可以省略省略循环结构程序设计格式格式 GFor语句和语句和Next语句之间的循环体,可以由多条语句构语句之间的循环体,可以由多条语句构成成GNext表示循环控制变量取下一个值,即表示循环控制变量取下一个值,即首先首先完成循环完成循环变量的递增操作,即变量的递增操作,即循环变量循环变量=循环变量循环变量+步长步长,然后,然后类似于类似于Do-Loop循环中的循环中的Loop,再再返回至返回至For语句行语句行循环结构程序设计格式格式 GFor-Next循环结构语句的循环结构语句的执行流程图执行流程图G循环次数
27、的一般计算公式:循环次数的一般计算公式:Int(终值终值-初值初值)/步长步长)+1G事先事先已知循环次数已知循环次数,则可,则可使用使用For-Next循环结构语循环结构语句句计数循环计数循环计算初值、终值和计算初值、终值和步长表达式的值步长表达式的值循环变量循环变量=初值表达式的值初值表达式的值循环体循环体循环变量循环变量=循环变量循环变量+步长步长?TrueFalse循环结构程序设计初值、终值和步长值,都是指从步骤初值、终值和步长值,都是指从步骤计算得到的,即使计算得到的,即使之后初值、终值和步长表达式中所包含的变量在循环体内之后初值、终值和步长表达式中所包含的变量在循环体内被改变,也不
28、会影响循环次数,即不会改变循环的初值、被改变,也不会影响循环次数,即不会改变循环的初值、终值和步长值。仅当循环变量在循环体内被重新赋值,则终值和步长值。仅当循环变量在循环体内被重新赋值,则会影响和改变循环次数会影响和改变循环次数 J For I=2 to 18 step 3 c=c+1 Next I上述上述For的循环次数的循环次数=Int(18-2)/3)+1=6第几次循环第几次循环I021528311414517620循环结构程序设计初值、终值和步长值,都是指从步骤初值、终值和步长值,都是指从步骤计算得到的,即使计算得到的,即使之后初值、终值和步长表达式中所包含的变量在循环体内之后初值、终
29、值和步长表达式中所包含的变量在循环体内被改变,也不会影响循环次数,即不会改变循环的初值、被改变,也不会影响循环次数,即不会改变循环的初值、终值和步长值。仅当循环变量在循环体内被重新赋值,则终值和步长值。仅当循环变量在循环体内被重新赋值,则会影响和改变循环次数会影响和改变循环次数 J c=18 For I=2 to c step 3 c=c+1 Next I上述代码段中虽然变量上述代码段中虽然变量c在在循环体内改变,但根据循环体内改变,但根据For循环执行流程,循环控制变循环执行流程,循环控制变量量I的终值依旧为的终值依旧为18,并未,并未改变,因此循环次数改变,因此循环次数=6第几次循环第几次
30、循环cI02152831141451762018192021222324循环结构程序设计初值、终值和步长值,都是指从步骤初值、终值和步长值,都是指从步骤计算得到的,即使计算得到的,即使之后初值、终值和步长表达式中所包含的变量在循环体内之后初值、终值和步长表达式中所包含的变量在循环体内被改变,也不会影响循环次数,即不会改变循环的初值、被改变,也不会影响循环次数,即不会改变循环的初值、终值和步长值。仅当循环变量在循环体内被重新赋值,则终值和步长值。仅当循环变量在循环体内被重新赋值,则会影响和改变循环次数会影响和改变循环次数 J c=18For I=2 to 18 step 3 c=c+1 I=I+
31、2 Next I上面循环体中,循环控制变量上面循环体中,循环控制变量I被改变,所以此时会影响循环被改变,所以此时会影响循环次数,循环次数次数,循环次数=4第几次循环第几次循环cI02142931441918192021227121722循环结构程序设计For循环实现循环实现:单击窗体,要求在窗体上显示:单击窗体,要求在窗体上显示6行星号行星号&分析:分析:循环体:循环体:Print *,循环变量循环变量I表示输表示输出行,从出行,从1变化到变化到6,即循环变量,即循环变量I的初值为的初值为1,终值为,终值为6,步长为步长为1,循环次数为,循环次数为6Private Sub Form_Click
32、() Dim I As Integer 定义一个循环变量定义一个循环变量I来控制输出的行数来控制输出的行数 当输出行数没有超过当输出行数没有超过6行,就反复执行下面的语句行,就反复执行下面的语句 For I = 1 To 6 步长为步长为1,可省略,可省略Step 1 Print * Next I 完成完成I根据步长完成递增,即根据步长完成递增,即I = I + 1,并返回到,并返回到For行行End Sub循环结构程序设计求求1+2+3+n&分析:分析:求多项数据之和,首先得设置一个累加器求多项数据之和,首先得设置一个累加器sum,存放累存放累加结果。根据一般人们求和的步骤,多个数据累加的过
33、加结果。根据一般人们求和的步骤,多个数据累加的过程如下:程如下:sum0=0sum1=sum0+1sum2=sum1+2sum3=sum2+3sumn=sumn-1 +n&归纳归纳:求多项数据之和,求多项数据之和,整个累加过程整个累加过程一直在重复执行一直在重复执行sum = sum + i,一共重复一共重复n次,其中累加项次,其中累加项i的变的变化规律为:化规律为:i =i + 1,i的初值为的初值为1,终值为,终值为n,即当即当i的值超过的值超过n结结束累加操作束累加操作循环结构程序设计求求1+2+3+n&程序代码设计:程序代码设计:循环体循环体是是sum=sum+i,而累加项而累加项i的
34、变化恰好与累加次数的变化恰好与累加次数一致,所以可以利用一致,所以可以利用累加项累加项i来控制循环次数,即将来控制循环次数,即将i兼用兼用做做循环变量循环变量,初值为初值为1,终值为,终值为n,步长为步长为1Private Sub Form_Click() Dim sum As Integer, i As Integer n = Val(InputBox(请输入累加的终值请输入累加的终值n:) sum = 0 累加器清零累加器清零 For i = 1 To n sum = sum + i 累加累加 Next i Print 1+.+; n; =; sumEnd Sub?求求1n之间所有的之间所
35、有的偶数偶数之和之和循环结构程序设计从用户输入的连续的一串字符信息中,分类统计大写、小写字母、从用户输入的连续的一串字符信息中,分类统计大写、小写字母、数字字符和非数字字母的数量数字字符和非数字字母的数量&分析:分析:对输入的每一个字符都要进行分类判断,并进行统计,一共对输入的每一个字符都要进行分类判断,并进行统计,一共要重复进行字符串长度次。因此,要重复进行字符串长度次。因此,循环体循环体就是针对于就是针对于一个字一个字符的分类判断统计符的分类判断统计,而,而循环次数循环次数就是就是字符串长字符串长。字符串长可。字符串长可通过通过Len函数计算得到,分类统计则可以通过分别设置三个计函数计算得
36、到,分类统计则可以通过分别设置三个计数器,并结合数器,并结合Select Case多分支语句实现分类判断和统计数量多分支语句实现分类判断和统计数量&程序代码设计程序代码设计 :设置循环控制变量设置循环控制变量I,控制分类统计控制分类统计次数,初值为次数,初值为1,终值为字符串长度,终值为字符串长度,表示从字符串的第一个字符,依次表示从字符串的第一个字符,依次判断统计到最后一个字符。利用判断统计到最后一个字符。利用Mid函数和函数和i配合使用,依次取出配合使用,依次取出字字符串的每一个字符符串的每一个字符循环结构程序设计格式格式 部分循环体语句部分循环体语句Exit For部分循环体语句部分循环
37、体语句G循环体中允许出现类似循环体中允许出现类似Exit Do的的Exit For语句,当执行语句,当执行到到Exit For语句时,就会直接提前退出当前语句时,就会直接提前退出当前For循环,循环,转而执行当前转而执行当前For-Next循环后的下一条语句。但一般情循环后的下一条语句。但一般情况下,当不包含况下,当不包含Exit For语句时,则仅当循环变量超过语句时,则仅当循环变量超过终值时,循环才结束,即终值时,循环才结束,即For循环正常结束时,循环变循环正常结束时,循环变量的值肯定超出了终值量的值肯定超出了终值 循环结构程序设计无论是无论是Do-Loop循环,还是循环,还是For-N
38、ext循环,都可以在大循环,都可以在大循环中套小循环,进行嵌套使用,而且允许不同类型循环中套小循环,进行嵌套使用,而且允许不同类型的循环进行嵌套使用的循环进行嵌套使用M嵌套的层数没有具体限制,但必须注意:嵌套的层数没有具体限制,但必须注意:每一个循环每一个循环必须有一个唯一的循环控制变量必须有一个唯一的循环控制变量(不能同名不能同名);内层的小;内层的小循环一定要完整地被包含在外层的大循环之内,而循环一定要完整地被包含在外层的大循环之内,而不不得相互交叉得相互交叉,即内层循环的,即内层循环的Next语句必须放在外层循语句必须放在外层循环的环的Next语句之前语句之前For i = 1 To 9
39、 For j = 1 To 9 Print i; *; j; =; i * j; Next j PrintNext i循环结构程序设计利用循环实现数字金字塔输出利用循环实现数字金字塔输出&分析分析 :一共要输出指定塔高一共要输出指定塔高n行信息。行信息。每行信息每行信息都是有都是有规律规律的:的:先重复输出若干个空格,然后重复输出若干个对应行号先重复输出若干个空格,然后重复输出若干个对应行号的数字字符,其中输出空格的数量和数字字符的数量都的数字字符,其中输出空格的数量和数字字符的数量都是有规律的:第是有规律的:第1行,行,1个数字个数字“1”,n-1个空格;第个空格;第2行,行,3个数字个数字
40、“2”,n-2个空格;依次类推,可以找到规律:个空格;依次类推,可以找到规律:第第i行,先输出行,先输出n-i个空格,然后输出个空格,然后输出2i-1个数字字符个数字字符“i” &程序代码设计程序代码设计设置循环变量设置循环变量I控制输出信息的行数控制输出信息的行数(1n),循循环体就是有规律的输出一行信息。而每一行环体就是有规律的输出一行信息。而每一行信息,又可以通过两个并列的循环实现,一信息,又可以通过两个并列的循环实现,一个控制每行前导空格的输出,一个控制每行个控制每行前导空格的输出,一个控制每行数字字符的输出数字字符的输出循环结构程序设计利用循环实现数字金字塔输出利用循环实现数字金字塔
41、输出For i = 1 To n 输入的数字金字塔的塔高输入的数字金字塔的塔高n(1-9)For j = 1 To n - iPrint ; 输出空格输出空格Next jFor j = 1 To 2 * i - 1Print CStr(i); 输出数字字符输出数字字符Next jPrint 换行换行Next I说明:本题也可以利用说明:本题也可以利用String函数来简化问题的实现函数来简化问题的实现循环结构程序设计电脑模拟摇奖电脑模拟摇奖。由计算机自动随机产生。由计算机自动随机产生2000个个11000000之间的数据,第之间的数据,第2000个即为中奖号码个即为中奖号码&分析分析 : 使用
42、使用For-Next循环产生循环产生2000个个6位随机整数:随机整数的位随机整数:随机整数的产生可以利用产生可以利用Rnd随机函数实现。但为了获得号码不断随机函数实现。但为了获得号码不断滚动的摇奖效果,每产生一个随机数,再利用一个滚动的摇奖效果,每产生一个随机数,再利用一个For-Next空循环起到延时作用空循环起到延时作用,并使用,并使用Refresh方法,使文本方法,使文本框中的文本不断改变框中的文本不断改变 For i = 1 To 2000 intranum = Int(999999-100000+1) * Rnd) + 100000 For J = 1 To 10000 利用空循环
43、延时利用空循环延时 Next J Txtnum.Text = CStr(intranum) Txtnum.Refresh 文本框刷新文本框刷新Next i?若想实现若想实现6位中奖号码的每一个数字是分别滚动产生位中奖号码的每一个数字是分别滚动产生 循环结构程序设计7.5.1累加、累乘累加、累乘7.5.2素数问题素数问题7.5.3 穷举法穷举法7.5.3 求最大值或最小值问题求最大值或最小值问题循环结构程序设计解决数学和统计问题时,最常用的算法是累加和累乘。解决数学和统计问题时,最常用的算法是累加和累乘。所谓所谓累加累加就是在原有和的基础上进行一次又一次地加就是在原有和的基础上进行一次又一次地加
44、一个数;而一个数;而累乘累乘就是在原有积的基础上反复乘一个数就是在原有积的基础上反复乘一个数解决这一类问题的算法:解决这一类问题的算法:1设置设置累加器或累乘器累加器或累乘器初值初值2套用循环套用循环G在循环体中:在循环体中:首先构造累加或累乘项首先构造累加或累乘项t,然后实现累然后实现累加加(sum=sum+t)或累乘或累乘(sum=sum*t)A循环条件循环条件往往要根据实际问题来设定:可预知循环往往要根据实际问题来设定:可预知循环次数的,则一般使用次数的,则一般使用For循环较为简单,而若仅仅知循环较为简单,而若仅仅知道精度要求,则一般使用道精度要求,则一般使用Do-Loop循环比较方便
45、循环比较方便关键是如何构造累加或累乘项关键是如何构造累加或累乘项t?循环结构程序设计G在循环体中:在循环体中:首先构造累加或首先构造累加或累乘项累乘项t,然后实现累加然后实现累加(sum=sum+t)或累乘或累乘(sum=sum*t)A循环条件循环条件往往要根据实际问题往往要根据实际问题来设定:可预知循环次数的,来设定:可预知循环次数的,则一般使用则一般使用For循环较为简单,循环较为简单,而若仅仅知道精度要求,则一而若仅仅知道精度要求,则一般使用般使用Do-Loop循环比较方便循环比较方便关键是如何构造累加或累乘关键是如何构造累加或累乘项项t?True循环条件循环条件构造累加项构造累加项tF
46、alsesum=sum+t设置设置累加器累加器初值初值循环结构程序设计关键是如何构造累加或累乘项关键是如何构造累加或累乘项t?常量表达式常量表达式往往用于计数统计往往用于计数统计变量表达式变量表达式往往找出往往找出t与与循环控制循环控制变量之间的某变量之间的某种规律性的关系种规律性的关系,利用循环控制变量实现,利用循环控制变量实现t的构造的构造M循环的结束条件和各个变量的初始值的设定往往循环的结束条件和各个变量的初始值的设定往往取决于取决于累加或累乘项累加或累乘项t的构造的构造例题例题7-9 循环结构程序设计求多项式的值,直到最后一项求多项式的值,直到最后一项的绝对值小于的绝对值小于10-6
47、&分析:分析:累加问题累加问题方案方案1:构造数学计算通式表示累加项构造数学计算通式表示累加项t G找出找出n(第第n个累加项个累加项)与累加项与累加项t的规律性关系,建立该的规律性关系,建立该数学通式数学通式.!87654321!)()(nntn21211循环结构程序设计求多项式的值,直到最后一项求多项式的值,直到最后一项的绝对值小于的绝对值小于10-6 累加器等变量清零累加器等变量清零 第第n个累加项个累加项 fact = 1 2n!的累乘计算的累乘计算 For i = 1 To 2 * n fact = fact * i Next i 根据通式构造累加项根据通式构造累加项t 累加累加 直
48、到最后一项的绝对值小于直到最后一项的绝对值小于10-6.!87654321!)()(nntn21211通项式法:通项式法:循环结构程序设计求多项式的值,直到最后一项求多项式的值,直到最后一项的绝对值小于的绝对值小于10-6 &分析:分析:方案方案2:通过找出通过找出前后累加项之间的关联前后累加项之间的关联,在前一次累加项的基础上递推出后一个累加项,从而在前一次累加项的基础上递推出后一个累加项,从而实现实现t的构造的构造.!87654321! 211t414313214312*!tt636535436523*!ttnntnnnnnnnntnn23221211212121122121*)(*)(*
49、)()(*)!()(!)(nntt232*)(循环结构程序设计求多项式的值,直到最后一项求多项式的值,直到最后一项的绝对值小于的绝对值小于10-6 累加器等变量设置初始值累加器等变量设置初始值 Abs(t) 10 (-6) 累加到最后一项的绝对值小于累加到最后一项的绝对值小于10-6 n = n + 1 第第n个累加项个累加项 根据前一累加项构造根据前一累加项构造t 累加累加.!87654321nntt232*)(迭代法:迭代法:循环结构程序设计构造累加或累乘项构造累加或累乘项tA迭代算法往往比通项式法程序执行效率更高,算法迭代算法往往比通项式法程序执行效率更高,算法更优更优A迭代法又称递推法
50、,不仅可以用于多项式累加求和迭代法又称递推法,不仅可以用于多项式累加求和问题,而且经常被用于其他具体问题的解决,比如问题,而且经常被用于其他具体问题的解决,比如猴子吃桃问题、很多数学中的迭代计算等。其主要猴子吃桃问题、很多数学中的迭代计算等。其主要核心思想就是把一个复杂的计算模型转化为核心思想就是把一个复杂的计算模型转化为前后递前后递推推重复计算的简单过程重复计算的简单过程 循环结构程序设计素数素数就是大家在数学中熟知的质数,即就是大家在数学中熟知的质数,即一个大于一个大于1且只能被且只能被1和它本身整除的整数和它本身整除的整数例题例题7-10输入一个正整数,判断该正整数是否为输入一个正整数,
51、判断该正整数是否为素数素数&分析:分析:从素数的定义出发:既然素数除了从素数的定义出发:既然素数除了1和它本身之外,和它本身之外,不能被任何数整除,那么就把待判断的数不能被任何数整除,那么就把待判断的数X依次与依次与除了除了1和它本身之外的其他所有的数进行除,看是否和它本身之外的其他所有的数进行除,看是否有整除的情况;若有,表示有整除的情况;若有,表示X不是素数,否则就是不是素数,否则就是素数。除数的范围素数。除数的范围i从从2开始到开始到X-1(因为一个数不可能因为一个数不可能能整除比它自身大的数能整除比它自身大的数),由于要对这个范围内的每,由于要对这个范围内的每一个数都进行相同的重复除操
52、作,所以使用循环一个数都进行相同的重复除操作,所以使用循环 循环结构程序设计输入一个正整数,判断该正整数是否为素数输入一个正整数,判断该正整数是否为素数For i = 2 To x - 1 如果能被某个数据整除,如果能被某个数据整除,x就不是素数,直接提前结束循环就不是素数,直接提前结束循环 If x Mod i = 0 Then Exit ForNext iIf i = x - 1 Then 若若 ix-1,即,即说明说明x是素数是素数MsgBox CStr(x) & 是素数是素数End If循环结构程序设计For i = 2 To x - 1 如果能被某个数据整除如果能被某个数据整除,x就不是素数直接提前结束循环就不是素数直接提前结束循环 If x Mod i = 0 Then Exit ForNext iIf i = x - 1 Then 若若 ix-1,即说,即说明明x是素数是素数MsgBox CS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- YC/T 237-2023烟叶生产标准化工作规程
- TD/T 1037-2013土地整治重大项目可行性研究报告编制规程
- LY/T 3388-2024植物新品种特异性、一致性、稳定性测试指南柽柳属
- 2025初升高衔接教材高一预科班数学讲义含答案第十二讲 函数的单调性同步提升训练.o
- 2025初升高衔接教材高一预科班数学第十七讲 指数函数的图像和性质同步提升训练含答案
- 汇川区2025年中考语文一模试卷
- 考研复习-风景园林基础考研试题【有一套】附答案详解
- 风景园林基础考研资料试题及答案详解(真题汇编)
- 2025-2026年高校教师资格证之《高等教育法规》通关题库带答案详解(预热题)
- 2025年黑龙江省五常市辅警招聘考试试题题库及答案详解(必刷)
- 19S406建筑排水管道安装-塑料管道
- 健康与免疫智慧树知到期末考试答案2024年
- 化工施工安全技术交底
- 体育社会学试题及体育社会学重点
- 甲状腺疾病预防和治疗科普课件
- 第五章排球大单元教学设计课时教学设计人教版初中体育与健康七年级全一册
- 新媒体视频节目制作 课件 学习领域1 新闻短视频制作
- 矿山应急救援钻探技术规范
- 《老年护理》课程标准
- 秦始皇帝陵的物探考古调查863计划秦始皇陵物探考古进展情况的报告
- 【机器学习算法及应用结课论文3100字(论文)】
评论
0/150
提交评论