第5章 基本的控制结构(循环)
结束
图5-7
“九九乘法表”运行结果
结束
循环嵌套要注意以下事项: (1)在多重循环中,各层循环的循环控制变 量不能同名。但并列循环的循环控制变量名
可以相同,也可以不同。
(2)外循环必须完全包含内循环,不能交叉。
结束
下面的循环代码正确吗? For I=1 To 100 For I=1 To 100 For J=1 To 10 For I=1 To 10 „„ „„
结束
5.3.5 循环的退出
在某些情况下,为了减少循环次数或便 于程序调试,可能需要提前强制退出循 环。VB为For„Next和Do„Loop循环语句 提供了相应的强制退出循环的语句。
结束
Exit For语句:
用于For„Next循环,在循环体中可以出 现一次或多次。当系统执行到该语句时, 就强制退出当前循环。
结束
格式1的两种形式: Do {while} <条件> [<循环体>] Loop Do
当条件为真时, 执行循环体语句
{until} <条件> 当条件为真时,终 [<循环体>] 止执行循环体语句 Loop 说明: 格式1是先判断条件是否为真,然后执行。
结束
F
条件是否为真?
T
条件是否为真?
T
循环体
F
循环体
图2-3
Do While „Loop执行流程
图2-4
Do
Until „Loop执行流程
结束
格式2的两种形式: Do [<循环体>] Loop {while} <条件> Do
[<循环体>] Loop {until} <条件> 说明: 格式2是先执行循环体语句,然后判断条件。
结束
循环体
循环体
T
结束
例5:求1+2+3+„+100的和 程序代码如下: Private Sub Command1_Click() Dim s%, m% m= 1 s=0 Do While m <= 100 s=s+m m= m + 1 Loop label2.caption=s End Sub
结束
例:求两自然数m,n的最大公约数
设计思想:
(1)m除以n得到余数r; (2)若r=0,则n为要求的最大公约数,算 法结束;否则执行(3); (3)n→m,r→n,再转到(1)执行。
结束
程序代码如下: Private Sub command1_Click() Dim m%, n%, r% m = Val(Text1.Text) n = Val(Text2.Text) r = m Mod n Do Until r = 0 m=n n=r r = m Mod n Loop Label1.Caption = " 它们的最大公约数是" & n End Sub
结束
例:判断用户输入的数是否为素数 分析:素数的特征是只能被1和它自身整除。 假设用户输入的正整数为N,我们只需确定 在大于1小于等于N的正整数中是否存在能整 除N的数。如果有,则N就不是素数;如果没 有,则N就是素数。 界面如图:
结束
Private Sub Command1_Click() Dim s%, k%, i% s = Val(Text1.Text) k = Int(Sqr(s)) For i = 2 To k If s Mod i = 0 Then Label1.Caption = "这个数不是素数!" Exit For End If 终止循环 Next i If i = k + 1 Then Label1.Caption = "这个数是素数!" End If End Sub
Next I Next J
(a)内外循环交叉
Next I Next I
(b)内外循环控制变量同名
结束
例:输出指定区域间所有的素数(如100至300)
程序如下: Private Sub Command1_Click() Dim a%, b%, i% a = Val(Text1.Text) b = Val(Text2.Text) Do While a <= b For i = 2 To a - 1 If a Mod i = 0 Then Exit For End If Next i If i = a Then Label2.Caption = Label2.Caption & a & " " End If a=a+1 Loop End Sub
条件是否为真?
F
条件是否为真?
F
T
图2-5
Do „ Loop While执行过程
图2-6
Do „ Loop
Until执行过程
结束
值得注意的是,关键字While 用于指明
条件成立时执行循环体,直到条件不成
立时结束循环(如图2-3、2-5所示)
Until则正好相反,条件不成立时执行循 环体,直到条件满足才退出循环(如图24、2-6所示)。
结束
循环变量获得初值
T
循环变量超过终值?
F
循环体
循环变量加步长
图2-1 For循环语句执行流程
结束
3. 其它说明
(1)循环次数计算公式为: 循环次数=Int((终值-初值)/步长)+1 (2)循环控制变量通常用整型数,也可以用 单精度数或双精度数。值得注意的是,无 论初值、终值和步长值是什么数值类型, 最后都要转换成循环控制变量的类型。
结束
n=0 While p < 70 p = p * (1 + r) n=n+1 Wend label2.caption=n & “年后,世界人口将到达或超过70亿” End Sub
结束
5.3.3
Do循环
与While循环相比,Do循环具有更强的灵活 性,它可以根据需要决定是条件满足时执行 循环体,还是一直执行循环体直到条件满足。 Do循环有两种语法形式。
Visual basic
程序设计
第五章(2)
第五章 基本的控制结构(二)
5.3
循环概述 For循环 While循环 Do循环 循环的嵌套
5.3.1
5.3.2
5.3.3
5.3.4
5.3.5
循环的退出
结束
引言 在本节中,主要介绍循环结 构中的DO、While、For循环等
语句的使用。
结束
5.3 循环概述
结束
5.3 4 循环的嵌套
在一个循环体内又包含了一个完整的循环, 这样的结构称为多重循环或循环的嵌套。 For循环、While循环、Do循环可以互相嵌套 二重循环的执行过程是外循环执行一次,内 循环执行一遍,在内循环结束后,再进行下 一次外循环,如此反复,直到外循环结束。
结束
例:打印九九乘法表。 分析:打印九九乘法表,只要利用循环变量作为 乘数和被乘数就可以方便的解决。 程序如下: Private Sub Form_Click() Dim i%, j%, str$ Print Tab(35); "九九乘法表" For i = 1 To 9 For j = 1 To 9 str = i & "×" & j & "=" & i * j Print Tab((j - 1) * 9 + 1); str; Next j Print Next I End Sub
常见的使用方式是:
If 条件 Then Exit For
当循环执行过程中满足某个条件时,就 执行循环退出语句结束循环。
结束
Exit
Do 语句:
用于Do„Loop循环
具体用法
If
条件
Then Exit
Do
当循环执行过程中满足某个条件时,就
执行循环退出语句,结束循环。
结束
例:在100~1000之间找一个既能被3整除又能 被7整除的数。 Private Sub Form_Click() Dim n% n = 100 Do While n <= 1000 If n Mod 3 = 0 And n Mod 7 = 0 Then Print n Exit Do End If n=n+1 Loop 结束 End Sub
(1)While 循环语句本身不能修改循环条件, 所以必须在循环体内设置相应语句,使得 整个循环趋于结束,以避免死循环。 (2)While循环语句先对条件进行判断,然 后才决定是否执行循环体。如果开始条件 就不成立,则循环体一次也不执行。
(3)凡是用For…Next循环编写的程序,我 们都可以用While…Wend语句实现。反之, 则不然。
结束
例:求N!(N为自然数) 分析:由阶乘的定义,我们可以得出N! =1*2*„*(N-2)*(N-1)*N=(N-1)!*N,也就 是说,一个自然数的阶乘,等于该自然数 与前一个自然数阶乘的乘积。 程序代码如下:
结束
Private Sub Command1_Click() Dim t%, f&, n% n= Val(Text1.text) f=1 For t = 1 To n f=f*t Next t label2.caption=n & “!结果是:” & f End Sub
结束
例3:找出一个最大正整数N,使N!<1000 分析:该题就是要找到一个正整数,使 它的阶乘最接近1000但又不超过1000。 因此,我们应该将从1开始的自然数累乘, 当积第一次大于1000时结束循环,累乘 的最后一个数的前一个数即为所求。 程序代码如下: Private Sub Command1_Click() Dim m%, p% m=0 p=1
C语言 第五章-循环结构程序设计
执行过程如图所示。其中i为外循环的控制变 量,j为内循环的控制变量。
i =0 当 i <=10
j=0 当 j<=10
printf(“%d ”, i*j ) j++ i++
例4 编程打印“九九乘法表”。
分析:九九乘法表 1×1=1 1×2=2 1×3=3 … 2×1=2 2×2=4 2×3=6 … 3×1=3 3×2=6 3×3=9 … …… 9×1=9 9×2=18 9×3=27 …
i ++ ; } while ( i <= 100 ) ; printf ( " %d " , sum ) ; }
结果相同
同样是下列程序,但如果while后面的表达式结果一开始就是 假时,两种循环结果会不一样。
main ( ) /*程序1*/
{ int i , sum = 0 ; i = 101 ;
所以程序需要设计成二重循环。由于题目只 要求找到一组解,所以在循环过程中只要找到一组 满足条件的x, y, z就可以跳出循环。
跳出循环的方法可以采用break语句,但是, 因为是二重循环,所以要考虑使用break是否方便。
程序 百钱买百鸡问题。 void main ( ) { int x , y , z ;
打印第2行 ( i = 2 ) for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
…… 打印第9行 ( i = 9 )
for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
高树芳C语言程序设计--第五章
VC程序代码
21
5.4
for循环结构
相关知识:
求解表达式1
1.for语句 见执行过程图。 2. for语句的说明 三个表达式均可省略, 但两个分号不可省略。
假 计算表达式2 真 循环体语句
求解表达式3
for语句的后续语句
22
5.2
while(当型)循环结构
[课堂训练5-4] 用for循环编程实现倒计时效果。即在屏幕上 固定位置显示10,然后清除之,再显示9,之后 是8……,至到1。
是成绩非-1等。
10
5.2
while(当型)循环结构
相关知识:
1.while语句的一般形式 2.while语句的说明 3.循环结构的构造方法 4.if语句与循环语句的区别
11
5.2
while(当型)循环结构
[课堂训练5-2] 计算s=1+1/2+1/3+1/4+„„+1/n,直到s大于或等 于3为止,输出n的值。 提示: 这是“标志”型循环。设置实型变量s并设初值为 0.0,设置整型变量i并设初值为1,循环条件是 s<=3,重复内容是s=s+1.0/i,注意要使用1.0实型 常量,或者将1或i作强制类型转换,将其转换为 实数,否则运算结果为0。
20
5.4 for循环结构 案例5-6 跳动的“O”
[案例任务]
编程实现字符“O”从屏幕的左端移动到右端。每一 秒种移动一下,形成跳动的效果。运算结果大致如 下。
[解决方案]首先显示一个O,延时片刻,然后光标
后退(用转义字符),再显示一个空格和一个O。循 环以上功能直到光标到屏幕最右端。
WIN-TC程序代码
[解决方案]该循环至少执行1次,使用do„while
循环结构
第5章 循环----三类循环
for语句的一般形式为: for (<初始表达式>;<条件表达式>;<循环表达式>) { <循环体语句> } 1.计算<初始表达式>的值。该表达式是对循 环控制变量进行初始化。 2.判断<条件表达式>的值。该表达式就是循 环条件,若该表达式的值为“假”,则退出循 环,执行循环结构外的语句;若该表达式的值 为“真”,则执行<循环体语句>。 3.计算<循环表达式>的值。该表达式更新循 环控制变量的值。 4.转第2步。
课堂练习: 求1,1+2,1+2+3...... 数列中前n项的值
第5章 循环---数列问题
【例5-3】编写程序,从键盘输入x的值, x x , 直到最后一项 求 sin x x x 3! 5! 7! 绝对值小于le−7(即10−7)为止 (注:x为弧度值)。
3 5 7
开始
计算机导论A
第5讲 循环结构
第5章循环结构
1. for循环语句结构 2. while循环语句结构 3. do-while循环结构 4. break和continue语句的作用 5. 循环结构的嵌套 6. 案例分析
第5章 循环----导引
例5-1:计算10道简单的加、减、乘、除和取余的运算题
/*6-1 分支程序-----循环*/ #include<stdio.h> main() { int a,b,i,n; char op; printf("please input express:"); scanf("%d%c%d",&a,&op,&b); switch(op) { case '+':printf("%d+%d=%d\n",a,b,a+b); break; case '-':printf("%d-%d=%d\n",a,b,a-b); break; case '*':printf("%d*%d=%d\n",a,b,a*b); break; case '%':printf("%d%%%d=%d\n",a,b,a%b); break; case '/':if(b!=0) printf("%d/%d=%d\n",a,b,a/b); else printf("error\n"); break; }}
VB教程第5章02
2.2 Do…Loop循环结构 循环结构 格式一: 格式一: Do While 条件 [语句组 语句组1] 语句组 [Exit Do] [语句组 语句组2] 语句组 Loop 格式二: 格式二: Do Until 条件 [语句组 语句组1] 语句组 [Exit Do] [语句组 语句组2] 语句组 Loop
10
界面设计:
Text1 Label3
Command1
11
流程图:
输入N 输入
N-S图: 图
S=0,N=1 当N<=100 S=S+N N=N+1 打印S
0 Sum ,1 I T I>N? F Sum+I Sum I+1 I 输出Sum 输出
12
代码设计: Private Sub Command1_Click() Dim N As Integer, I As Integer, _ Sum As Integer N = Val(Text1.Text) Sum = 0 For I = 1 To N Sum = Sum + I Next I Label3.Caption = Sum End Sub
4
多分支选择语句与块结构与 多分支选择语句与块结构与条件语句的 互相嵌套: 互相嵌套: Select Case A Case 1 If B = 0 Then Print "**0**" ElseIf B = 1 Then Print "**1**" End If Case 2 Print "**2**" End Select
13
练习:输入 值 求 × × × × 即 ! 练习:输入N值,求 1×2×3×…×N (即N!) 累乘分析: 累乘分析: 初始化: 初始化 Fact=1 循环体: 循环体 Fact=Fact × I (I=1,2,3…N) 代码: 代码: Private Sub Command1_Click() Dim N As Integer, I As Integer, Fact As Long N = Val(Text1.Text) Fact= 1 For I = 1 To N Fact = Fact * I Next I Label3.Caption = Fact End Sub 14
第五讲循环结构(for、while与repeat语句)
第四章第3节循环结构的程序设计For循环在实际应用中,会经常遇到许多有规律性的重复运算,这就需要掌握本章所介绍的循环结构程序设计。
在Pascal语言中,循环结构程序通常由三种的循环语句来实现。
它们分别为FOR循环、当循环和直到循环。
通常将一组重复执行的语句称为循环体,而控制重复执行或终止执行由重复终止条件决定。
因此,重复语句是由循环体及重复终止条件两部分组成。
一、计数循环(for/to/do)语句的一般格式for <控制变量>:=<表达式1> to <表达式2> do <语句>;for <控制变量>:=<表达式1> downto <表达式2> do <语句>;其中for、to、downto和do是Pascal保留字。
表达式1 与表达式2的值也称为初值和终值。
二、For语句执行过程①先将初值赋给左边的变量(称为循环控制变量);②判断循环控制变量的值是否已"超过"终值,如已超过,则跳到步骤⑥;③如果末超过终值,则执行do后面的那个语句(称为循环体);④循环变量递增(对to)或递减(对downt o)1;⑤返回步骤②;⑥循环结束,执行for 循环下面的一个语句。
三、说明①循环控制变量必须是顺序类型,初值和终值可以是常量、变量、表达式,且与控制变量类型一致。
例如,可以是整型、布尔型、字符型等,但不能为实型。
②循环控制变量的值递增或递减的规律是:选用to则为递增;选用downto则递减。
③所谓循环控制变量的值"超过"终值,对递增型循环,"超过"指大于,对递减型循环,"超过"指小于。
④循环体可以是一个基本语句,也可以是一个复合语句。
⑤循环控制变量的初值和终值一经确定,循环次数就确定了。
但是在循环体内对循环变量的值进行修改,常常会使得循环提前结束或进入死环。
VB程序的设计VB基本语句-精选文档
第5章 基本的控制结构
For循环
例2: 求10!
例1:求1+2+3+4+ …+10之和. 分析: •重复过程(循环体): + •初值、终值和增量:1、10、1 Dim I, s As Integer For I = 1 To 10 s=s+I Next I Print I, s
分析:
•重复过程:* •初值、终值与增量不变 Dim I, s As Integer s=1 For I = 1 To 10 Fors=1 =1 1 To To 10 10 For II = s=s*I Next I Print I, s
循环体的执行次数是多少 ? 输出的I、S的值是多少 ? For I = 1 To 10执行多少次?
初值与终值换位 可以吗?
程序代码: Dim I%, s % ForI I=10 To Step For = 1 To 10 1 step 1 -1
s=s+I
Next I Print I, s
Visual Basic 程序设计
visualbasicvisualbasic程序设计程序设计第第55章章基本的控制结构基本的控制结构第第55章章基本的控制结构基本的控制结构累加和平均值累加和平均值求素数求素数求数的质因数求数的质因数穷举法穷举法递推法递推法55visualbasicvisualbasic程序设计程序设计第第55章章基本的控制结构基本的控制结构第第55章章基本的控制结构基本的控制结构例1
优:Mark ≥ 90 等级: 通过:60 ≤ Mark < 90 未通过:<60
思考?
Visual Basic 程序设计
第5章 基本的控制结构
VFP第4、5部分(循环结构)
步长可正可负
* 仍计算阶乘 此处步长为负 仍计算阶乘,此处步长为负 clea Input "请输入自然数 to n 请输入自然数:" 请输入自然数 j=1 for i=n to 1 step -1 j=j*i endfor ? N, "!= ",j return
当循环
步长循环
input “请输入终值:” to n 请输入终值: 请输入终值 input “请输入步长:” to k 请输入步长: 请输入步长 i=1 do while i<=n <命令序列 命令序列> 命令序列 i=i+k endddo for i=1 to n step k <命令序列 命令序列> 命令序列 endfor|next
改变循环变量值 clea s=0 i=1 do while i<=100 s=s+i i=i+1 enddo ?"1+2+3+...+100=",s retu
例:求n的阶乘 的阶乘
clea Input "请输入自然 数:" to n j=1 for i=1 to n j=j*i endfor ? N, "!= ",j return * 100以内自然数求和 以内自然数求和 clea s=0 for i=1 to 100 s=s+i endfor ? "1+2+3+...+100=",s return
DO WHILE .T. 结构
• 此种表述的条件,必须设置强制退出的语 此种表述的条件, 句来完成退出循环, 句来完成退出循环,否则会出现死循环的 情形。 情形。 DO WHILE .T. … EXIT &&用来强制退出循环 用来强制退出循环 … ENDDO
在程序设计中有三种基本控制结构(顺序,选择,循环)。
标准函数:
abs(x) sqrt(x) int(x) char(x)
函数的三要素
(1)函数名 (2)函数的参数类型(3)函数结果的类型
abs (x)
int
int float
sqrt (x)
int (x) char(x)
float/double
char
int
char
int
#include<iostream> 函数定义的一般格式: using namespace std; 类型 函数名(形参表) int lifang(int a) 形式 { { int s; 参数 变量说明 s=a*a*a; 语句1; return(s); 语句2; } 语句3; int main() 实际 … { int x,y; 参数 cin>>x; } y=lifang(x); 一般的函数体中都 cout<<"结果为:"<<y; 会有一个返回函数 值的语句 system("pause"); return 0; }
#include<iostream> using namespace std; ss( ) ……… ……… int main() { cin>>a;
调用ss判断a是否为素数
求a个位与十位对换后的b;
调用ss判断b是否为素数 if a,b均为素数,输出a;
if a,b均为素数,那么输出a;
system("pause"); return 0; }
编写一个求绝对值的函 数,并在主函数中调用。
读入n的值,编写函数计算n!
读入n, r的值 计算 n!*(n-r)!
第5章控制程序运行的结构(共50张PPT)
7
虚拟仪器
a
b
里在层的循F环or循外环边将连6次接执一行个时的数循值环到计数端口,外可层显的示F地o设r循置环计每数执值行;一也可 使等次层员数F加用于o累上r自数循加当环动组成 前依一循索长次个环引度为一数这隐,维,个含即数最一组后设 把维将0置 所~数85次组输计 有循各出数 数环个;值 组的成外, 元此 素时 索引Fo次 一完r循循 行为环环 ;止的从里;执二 层对行维 的于次数F二数o组维r循对数中环于组索每一等引执维于出数数组组 行8个数一,维数即组一累次加成索二引维1数行组,输将出。所有行索引完行 一。一 个次 成从员一 。维数组中索引出
18
虚拟仪器
5-3 定时循环
如果需要对循环的执行时间进行更精确的控制 和增加更多控制功能,可以使用定时循环。
右边框内的输出节点默认情况下只显示一个错误信息接线端,这里选 择为dt,连接了一个输入型控件,使得程序可以在执行中改变循环的
19 速度。
定时循环.vi
虚拟仪器
5-4 条件结构
条件结构类似于文本编程语言中的If …Then… Else语 句。
虚拟仪器
(3)移位存放器的初始化
除非显式地初始化移位存放器,否那么当首次执行VI时,移位存 放器将初始化为移位存放器相应数据类型的默认值,〔布尔型 为False,数字型为0〕。
存储在移位存放器中的数据直到关闭VI才在内存中消除,如 果运行的VI包含未初始化的移位存放器,在以后执行时,移 位存放器获得的初始值将是以前执行后的最终值。由于这种 情况难于检测,可能使VI调试变得困难。
软件工程 第5章软件详细设计
第5章例题分析与解答作者:不详来源:2006年9月1日发表评论进入社区一、填空题1.结构化程序设计方法的要点是使用___三种基本控制_____结构,自顶向下、逐步求精地构造算法或程序。
2.为了产生结构化的流程图,应由三种基本控制结构顺序组合或__完全嵌套___而成。
3.结构化程序设计方法提倡开发人员的组织形式是___主程序组_____。
4.PAD图是一种由左向右展开的二维树型结构,图中的竖线为程序的____层次线____。
5.在Jackson方法中解决结构冲突的具体办法是引入__中间数据结构或中间文件______。
二、选择题1.详细设计与概要设计衔接的图形工具是( B )。
A.DFD图B.SC图C.PAD图D.程序流程图2.结构化程序设计主要强调的是( C)。
A.程序的效率B.程序的执行速度C.程序的易读性D.程序的规模3.详细设计的任务是确定每个模块的( A)。
A.算法B.功能C.调用关系D.输入输出数据4.Jackson方法实现从( A )导出(C )。
A.数据结构B.数据流图C.程序结构D.软件模块层次结构5.在软件详细设计过程中不采用的描述工具是( D )。
A.判定表B.IPO图C.PAD图D.DFD图三、应用题一个正文文件由若干个记录组成,每个记录是一个字符串。
要求统计每个记录中空格字符的个数及文件中空格字符的总个数。
要求输出数据格式是每复制一行字符串之后,另起一行印出上一行字符串空格字符的个数,最后一行印出空格字符总个数。
答案:一、填空题1.三种基本控制结构2.完整嵌套3.主程序员组4.层次线5.中间数据结构或中间文件二、选择题1.B2.C3.A4.AC5.D三、应用题图5-1图5-2<>第5章自测题及参考答案作者:不详来源:2006年9月1日发表评论进入社区一、名词解释1.结构化程序设计2.PAD3.PDL4.结构冲突5.对应关系二、填空题1.结构化程序设计方法使用___三种基本控制结构___构造程序。
