第五章 选择分支与循环嵌套

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
End
End Sub
5.2.2For-Next循环结构语句
如果事先知道循环次数,则可使用Foபைடு நூலகம்-Next循环结构语句,它的一般形式如下:
Forv = e1 to e2 [ Step e3]

[ Exit For]‘e1为初值,判别v是否超过e2,若超过,退出循环,执行Next语句的下条。

Next v‘执行Next语句,系统执行下述操作:v = v+ e3
a = a + 1
Next j
Text1.Text = CStr(Im);
Text1.Refresh‘刷新前999次,保留最后一次
Next i
Text1.Text = CStr(Im)
End Sub
Private Sub Comd2_Click()
End
End Sub‘本程序采用两重嵌套的循环
5.3程序示例
Text1.Text =“”
Text2.Text=“”
Text1.SetFocus
End Sub
Private sub Cmd3_Click ( )
End
End Sub
Private sub Form_Load()
MsgBox“本程序的功能是将一个从由字母、数字组成的字符串中找到所有大写字母并逆序输出”,“示例程序”
较为复杂的结构如下:
If e1 Then‘如果e1为True,则执行A1组语句
A1组语句
ElseIf e2Then‘如果e2为True,则执行A1组语句
A2组语句

End If
[例题5-1 ]已知三角形的三边长度,设计求此三角形面积的程序。
问题分析:a + b > c & a + c > b & b + c > a , S =sqr(p(p-a)(p-b)(p-c)) , p=(a+b+c)/2
第五章选择分支与循环嵌套
5.1分支结构与分支结构语句(2个例子)
5.2循环结构与循环结构语句(6个例子)
5.3程序实例(10个例子)
习题练习(11个例子)
5.1分支结构与分支结构语句
5.1.1IF-Then-Else-End If结构语句
结构一般如下:
If e Then
[ A组语句]
Else
[ B组语句]
[ Exit Do]语句最常用的形式是与If-Then结合,即为:If e Then Exit Do
在执行循环体时,如果条件e被满足,则执行Exit Do语句,直接退出循环。
[例题5-3]设计采用欧几里得算法求解两个自然数的最大公约数的程序。
问题分析及界面设计:界面参照例题5-1,算法如下:
@例题2-1求两个自然数的最大公约数的算法。(辗转相除法)
Text4.text = CStr(s)‘数值型,转为字符串型,不使用,则自动强制转换
Else
Text4.text =“数据错误”
End If
End Sub
Private Sub Command2_Click ( )‘结束程序
End
End Sub
Private Sub Command3_Click ( )‘清除原有数据
为生成某个范围内的随机整数,可使用下列公式:
Int((upperbroad-lowerbroad+1)*Rnd+lowerbroad),则产生1~100随机数:
Int((100-1+1)*Rnd+1)
界面及算法设计:两个按钮,一产生随机数,一退出,对应一个文本输出Private Sub Comd1_Click()
S1.输入两个自然数M、N;
S2.求M除以N的余数R;
S3.使得M=N,即为N替换M;
S4.使得N=R,即为R替换N;
S5.如果R 0,则重复执行S2、S3、S4(循环),否则转S6
S6.输出M,M即为M、N的最大公约数。
程序设计如下:
Private Sub Command1_Click( )
Dim m as Long, n as Long
Option Explicit
Private Sub Cmd1_Click ( )
Dim a asString,d as String, t as String’
DimIas Integer
Text1.setFocus
a= Text1.Text‘前期准备
For I = 1 to Len(a)
If Mid(a ,I, 1) > =“A”And Mid(a ,I, 1) < =“Z”Then
PrivateSub Command1_Click ( )
Dim x as Integer
x = Val(Text1.Text )
If x < 1 Then
Text2.Text =“这是小于1的数”
ElseIf x < = 10 Then
Text2.Text =“这是1到10之间的数”
End If
End Sub
Dim Im As Integer, i As Integer, j As Integer, a As Integer
Randomize
For i = 1 To 1000‘取第1000个随机数
Im = Int(100 * Rnd) + 1‘产生1~100之间的随机数
a = 0
For j = 1 To 1000‘产生1000次随机数
End If
Next i
Print f
End Sub
[例题5-5]一个从由字母、数字组成的字符串中找到所有大写字母并逆序输出。
界面设计:两个文本框,三个按钮,一筛选,一清除,一结束
思路分析:从一个字符串找出符合要求的字符是采取对字符串的每一个字符逐个筛选的方法实现的,利用Mid函数可从字符串中提取单个字符,循环控制处理过程,循环的终值使用Len函数;对于符合要求的字符采用连接运算组成新字符串;逆序输出则是过从后往前逐个提取字符再连接
[例题5-6]一个模拟摇奖器的程序。设有100个人中签,要从中找出中奖人。由机器自动产生1000个1~100间的数据,第1000个随机数据即为中奖人的号码。
问题分析:产生0~1之间随机数的函数Rnd(x),其中0=<Rnd(x)<1,x为单精度或者任何有效的表达式。在调用Rnd(x)函数之前,可先使用无参数的Randomize语句初始化随机数生成器,该生成器具有从系统计时器获得的种子。
‘v是循环控制变量,应为整型或单精度型;e1、e2、e3为控制循环的参数。e1为初值,e2为终值,e3为步长(e1 =1时可省)。
For-Next循环的正常循环次序可用下式计算:循环次数= Int((e2-e1)/e3) +1
如下面程序代码:
Private Sub Form_Click()
For i = 1 To 10 Step 2
End If
e为判决条件,可以是逻辑变量,关系表达式或逻辑表达式。
当A组语句仅有一个时,可简化为:If e Then <语句>
例如,程序代码:If Text1.Text =“”Then
Text1.SetFocus
End If
可以简化为:‘当文本框中文本为空时,则使得文本框成为焦点。
If Text1.Text =“”Then Text1.Setfocus (省去End If)
s = s + i
If i < 10 Then
Print i; "+";
Else
Print i; "=";
End If
Next i
Print s
f = 1
Print "f=";
For i = 1 To 10
f = f * i
If i < 10 Then
Print i; "*";
Else
Print i; "=";
5.1.2Select-Case-End-Select结构语句
一般形式如下:
Select Case e‘e为测试表达式
Case c1‘c1是测试项,可取(1)具体数值(当表达式为算数表达式时)
A组语句(2)连续的数据范围(8 To 20,B To H)
Case c2(3)满足某个判决条件(Is >20, Is <“P”)
B组语句(4)多个范围的组合

Case Else
n组语句
End Select
例题5-2的程序代码也可用本结构语句实现:
Private Sub Command1_Click ( )
Dim x as Integer
x = Val(Text1.text)
Select Case x
Case Is < 1
Text2.Text =“这是小于1的数”
Printi;
Next i
Print“i =”;i
End Sub
[例题5-4]求1 ~ 10这十个数的和与连乘积的程序。
Option Explicit
Private Sub Form_Click()
Dim i As Integer, s As Integer
s = 0
Print "s=";
For i = 1 To 10
Dim r as Long
m = Val(Text1.Text)‘取数据m
n = Val(Text2.Text)‘取数据n
If m <1 Or n<1 Then‘检验数据合法性
Text3.Text =“数据错误!”
Else
Do‘求最大公约数
r = m Mod n
m = n
n = r
Loop Until r = 0
[例题5-7]一个简单的函数计算器程序。
设计思路:一个是设计基本函数程序,包括输入按钮和两个文本边框;一个是设计出错提示,包括未输入值和数据超出定义域的情况。程序中使用的IsNumeric(s)函数用于检测自变量是否是一个可转化成数值的数字串,如果是返回逻辑值True,否则返回False
End Sub
5.2.3循环嵌套
大循环套小循环,小循环一定包含在大循环之内,而不得相互交叉。
程序示例:
Private SubForm_Click ( )
Fori = 1 to 9
For j = 1 to 9
Print i;“*”; j ;“=”;i*j
Next j
Print
Next i
End Sub
Text1.text =“”
Text2.text =“”
Text3.text =“”
Text4.text =“”
Text1.SetFocus
End Sub
[例题5-2]一个有多个分支的示例程序数学表达式: ,试写出该程序。
程序界面设计:两个文本框和一个命令按钮及相应的说明标签,文本框1中输入测试数据,单击命令按钮,在文6本框2给出测试结果。
a = Val(Text1.text)‘Text属性为字符串型,转为数值型
b= Val(Text2.text)
c= Val(Text3.text)
If a + b > c and a + c > b and b + c > a Then
p = (a+b+c)/2
s= sqr(p*(p-a)*(p-b)*(p-c))
算法设计:开始——输入a、b、c——判断a + b > c & a + c > b & b + c > a,通过则求p,求S,否则提示:“输出数据错误信息”——结束。
设计程序代码如下:
Private Sub Command1_Click( )
Dim a As single, b As single, c As single
四种结构形式:
(1)Do While e(2) Do
……
[ Exit Do ][ Exit Do ]
……
Loop Loop While e
(3)Do Until e (4) Do
……
[ Exit Do] [ Exit Do]
……
Loop Loop Until e
前两种为当型结构,后两种为直到型结构,Do语句Loop语句之间为循环体语句,循环体语句包含一条或多条Exit Do语句,如果程序执行到Exit Do语句,就会直接退出循环,转而执行Loop语句的下一条语句。
Case 1 To 10
Text2.Text =“这是1到10之间的数”
Case Else
Text2.Text =“这是大于10的数”
End Select
End Sub
5.2循环结构与循环结构语句
循环语句按结构分:当型结构和直到型 结构的区别仅仅是False和True位置交换,下为当型的两种结构:
5.2.1 Do-Loop循环语句结构
Text3.Text = Csr(m)
End Sub
Private Sub Command3_Click ( )‘清除原有数据
Text1.text =“”
Text2.text =“”
Text3.text =“”
Text4.text =“”
Text1.SetFocus
End Sub
Private Sub Command3_Click ()
t = t & Mid( a ,I, 1)‘从字符串a左边第I个位置开始向右取一个字符
End If
Next I
ForI= Len(t)to 1 Step -1
d = d &Mid( t ,I, 1)
Next I
Text2.Text = d
End Sub
Private sub Cmd2_Click ( )
相关文档
最新文档