《《基本控制结构》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基本控制结构》PPT课件.ppt(43页珍藏版)》请在三一办公上搜索。
1、第4章 基本的控制结构,4.1 算法的表示 4.2 顺序结构 4.3 选择结构 4.4 循环结构 4.5 跳转控制Goto语句(略)4.6 实例,4.1 算 法,算法(Algorithm):解决问题的方法和步骤。特点:有穷性:算法必须在执行有穷个计算步骤后终止。确定性:算法中的每个计算步骤,必须精确定义,无二义性。可行性:算法的每一个计算步骤,可以在有限时间内完成。输入:算法要求有一个或多个输入信息,作为初始数据。输出:算法要求有一个或多个输出信息,是对输入信息计算的结果。,算法的表示(书76页 图示),有多种表示算法的形式,如:传统的流程图、自然语言、N-S结构化流程图等。用流程图来表示算法
2、,非常直观、形象:起止框:表示算法的开始或结束。处理框:表示初始化或运算赋值等操作。输入输出框,表示数据的输入输出操作。判断框:表示根据条件决定程序的流向。流程线:表示流程的方向。,示例1:幸运数字游戏程序(Lucky Seven)。游戏规则:单击“旋转”按钮,右边的三个标签中会各出现一个数字,只要三个数字中有一个为“7”,窗体下方会显示出一张图片。(教科书77页),“旋转”按钮 算法设计,4.2 顺序结构,顺序结构是最简单、最基本的程序控制结构。类似“流水账”,按语句块的顺序自上至下顺序执行。例如:两个变量a、b的值互相交换。Dim a%,b%,temp%temp=a:a=b:b=temp算
3、法如下:(1)输入数据a,b(输入)(2)交换数据(数据处理)(3)显示交换后的结果(输出)。,运用“条件判断语句”。当满足某种条件时,执行某些语句(流程),否则程序将按照另一个流程执行。,4.3 选择结构,If Then 语句块1Else 语句块2End If,If 语句,格式1:行 If 语句 If Then Else 行If 语句必须在同一行内写完。例如:If X=Y Then Print“X=Y”Else Print“X Then If X=Y Then 语句块1 Print“X=Y”Else Else 语句块2 Print“XY”End If End If,格式3:多重分支If 条件
4、1 then 语句块1ElseIf 条件2 Then 语句块2 ElseIf 条件3 Then 语句块3 Else 语句块nEnd If,示例2:单击窗体,屏幕上以红色和兰色交替显示“欢迎使用VB编程”。(参见书79页)Private Sub Form_Click()Static flag as integer 定义静态变量 flag Cls 清除当前窗体字迹 If flag=0 Then Form1.ForeColor=vbRed 窗体呈现红色字体 flag=1 Else Form1.ForeColor=vbBlue 窗体呈现蓝色字体 flag=0 End If Print“欢迎使用VB编程
5、”End Sub,示例3:将学生成绩(score)按五个等级输出:优90-100,良80-89,中70-79,及格60-69,不及格 60。将成绩输入文本框(只允许文本框接受数值数据),按回车后,在一个标签中显示成绩等级。(详见书80页)算法上的安排:(1)判断是否按了回车键(If Then)(2)若按了回车,则-获取成绩数据-设置标签相应属性-评定成绩等级,显示结果-清空文本框,等待下一次成绩输入(3)过滤输入的非数值数据,Select Case 语句,根据表达式的不同取值,来决定执行哪一个语句块。格式:Select Case 测试表达式 用来测试条件变量 Case 表达式列表1 表达式的可
6、能取值 语句块1 Case 表达式列表2 语句块2 Case Else 语句块n End Select,如果条件变量的值符合表达式的某个列表,则执行该列表下面相应的语句块。表达式列表 举例:Case 1 To 10 如果条件变量的值在1,10之间Case Is 100 如果条件变量的值大于100Case“a”To“z”如果条件变量的值在a到z之间Select Case 语句 与 If 语句的作用类似。示例4.前面示例3的学生成绩输入与评定问题,也可用Select Case语句替代 If 语句。(参见书83页),选择结构的嵌套,在一个选择结构中可以包含另一个选择结构,称为选择结构的嵌套。例如:I
7、f 条件 Then 语句块1“语句块1”可能包含另一个选择结构 Else 语句块2 语句块2可能包含另一个选择结构 End If注意:每个 If 语句要与其 Else、ElseIf、End If 配对。,示例5:已知方程AX2+BX+C=0的系数A、B、C,用文字说明方程的解:(参见书84页)当A=0时,若:B0,显示:“有一个实根”B=0,C=0,显示:“无定解”B=0,C0,显示:“无解”当A0时,若:D=B*B-4*A*C0,显示:两个实根 D=0,显示:两个相等的实根 D0,显示:两个共轭复根,If a=0 Then If b0 Then Print“有一个实根”Else b=0 If
8、 c=0 Then print“无定解”Else print“无解”End If End If Else a不等于0 d=b*b-4*a*c If d0 Then print“有两个实根”ElseIf d=0 Then print“有两个相等的实根”Else print“有两个共轭复根”End If End If,IIF 函数,1、IIF 用于执行简单的条件判断操作。2、IIF是“IfThenElse”结构的简写版本。IIF函数的调用格式:变量=IIF(条件,True部分,False部分)功能:当条件成立时,变量取“True”部分的值,否则变量取“False”部分的值。例如:Dim A as
9、Integer,S as String 或 Dim A%,S$A=25 S=IIF(A10,“A大于10”,“A小于等于10”)此时 S 的值为:S=“A大于10”满足条件A10,变量S 取True部分,4.4 循环结构,在实际应用中,有些操作(程序段)需要反复执行,可以使用循环结构来实现。,FOR/NEXT 结构,当循环次数确定时,可使用For/Next 循环语句。格式:For 循环变量=初值 To 终值 Step 步长 循环体(程序体)Next 参数说明:(1)循环变量的初值、终值和步长都必须是数值型表达式或数值型变量。(2)若步长0,则应该初值 终值,循环变量递减;若步长=1,循环变量递
10、增为1,此时步长可以省略。,FOR/NEXT 循环结构 流程图(书85页),示例6:计算阶乘 N!计算阶乘的常用方式(常用定式)方法1.从文本框获取输入数据N:Dim N as integer,i as integer,Dim item%:整型数Integer N=Text1.text 从文本框获取N的数值 item=1 阶乘初始值 For i=1 to N 计算N的阶乘,缺省步长为1 item=item*iNext IPrint N;“!=”;item,计算阶乘 N!方法2.利用输入框(InputBox)获取数据。Private Sub Form_Click()Dim N As Intege
11、r,i As Integer Dim item%N=InputBox(“请输入一个整数”;“计算阶乘”)item=1 For i=1 To N item=item*i Next i Print N;“!=”;item End Sub,DO/LOOP 语句,循环次数不确定,但已知循环开始或结束的条件,可使用 DO/LOOP 语句实现循环。格式1:先判断条件,后执行循环体 Do while|until 循环体(语句块)Loop格式2:先执行循环体,后判断条件 Do 循环体(语句块)Loop while|until,格式说明(详见书86页 图4-9)While:当满足条件时,执行循环。Until:当
12、满足条件时,跳出(结束)循环。循环体中必须有使循环条件的逻辑值发生变化的语句,否则程序将进入死循环,“永无止境”。,计算累加值的常用定式:sum=0 sum=sum+累加项最后得到的 sum 即为累加结果。示例7:求 1+2+100 的累加值。方法1.用For/Next 循环求累加。sum=0 For i=1 to 100 sum=sum+i Next i,方法2.用 DOLOOP 循环求累加。sum=0 初值i=1 i 是循环条件变量,初值设为1。Do While i 100 当满足条件时,跳出循环,While/Wend语句,功能与 Do While/Loop 语句类似。格式:While 语
13、句块 Wend例:倒计时(书88-89页)Sub Form_Click()Dim TimeLeft As Integer TimeLeft=5 While TimeLeft=1 满足条件就继续执行循环体 Print TimeLeft TimeLeft=TimeLeft 1 WendEnd Sub,示例8:求自然对数的近似值。按下面公式累加,直到最后一个累加项的值小于10-6 为止。(参见书86-87页)程序算法结构可表达为:sum=1 sum存放累加值。初始累加值=1(1)开始循环:-先计算相应阶乘 i!(item=item*i)-再计算相应累加 sum=sum+(1/i!)(2)结束循环。结
14、束条件:(1/i!)10-6,用 Do while/loop 循环计算自然对数近似值:Private Sub Form_Click()Dim sum As Single,item As Single Dim i As Integer,n As Integer item=1 sum=1 i=1 Do While 1/item=0.000001 item=item*i sum=sum+(1/item)i=i+1 Loop Print“自然对数近似值:”;sum,“累加项数:”,i-1End Sub,从循环体中退出:Exit 语句,根据需要,可以在不满足条件时,中途强迫循环结束,直接退出。用 Exi
15、t 语句可以直接退出For循环、Do循环。,Do While|Until条件 语句序列 Exit Do 语句序列Loop,For 循环初值 To 终值 Step 语句序列 Exit For 语句序列 Next 循环控制变量,循环嵌套(参见书91页 图4-11),1、一个循环体内可以包含其它选择结构或循环结构。2、内外循环体不能交叉。3、内循环体可跳出来,外循环体不能跳进去。4、并列的若干循环体彼此不能互相跳转。5、先执行内循环,再执行外循环。6、注意循环结构的完整性。每个For与Next、Do与Loop、While与Wend 要配对。,示例9:在窗体上用“*”打印菱形。(参见书91页)算法安排
16、:-根据行数,确定在该行输出“*”的数量。-确定每行第一个“*”出现的位置。-换行,准备在下一行输出“*”。,Private Sub form_Click()Dim i%,j%,k%CurrentY=1000 For i=1 To 9 共打印9行 If i=5 Then 15行 k=i k:前5行每行打印的*号个数 Else 69行 k=10-i 后4行打印的*号个数与前5行对称相等 End If CurrentX=1000 Print Space(20-k);确定每行的*号起始位置 从第 i 行*号起始位置开始按列j输出每个*号 For j=1 To 2*k-1 Print“*”;Next
17、j 下一列 Print 回车换行 Next i 下一行End Sub,示例10.打印“斐波那契”数列1、1、2、3、5、8 中的前40项,要求每行打印10项。(参见教科书95页)分析:“斐波那契”数列(Fabonacci)的每一项是前两项之和。首两项的值为1。可用三个变量F1,F2,F3表示这样的数列:F1=1,F2=1,F3=F1+F2,由此开始循环,求出第3项之后的数列。,Private Sub Form_Click()Dim i%,f1 If i Mod 10=0 Then Print 换行 a=0 End If Next iEnd Sub,示例11.密码检验程序。(教科书95页)在文本
18、框中输入预制的密码“123456”,并按回车键,标签显示“欢迎光临!”;如果输入的密码与预制密码不吻合,标签显示“密码不对,请重新输入!”,同时清空文本框,允许再输入一遍;如果连续三次输入的密码都不对,标签显示“已超时,请退出程序!”,文本框失效。运行界面如下图所示。,算法:利用文本框的KeyPress事件。定义一个局部静态变量a,用来记录输入密码次数(0、1、2)。具体步骤如下:判断是否按了回车键?若是,判断密码是否正确?若正确,标签显示“欢迎光临!”若不正确 判断a是否大于等于2?若a=2:标签显示“已超时,请退出程序!”文本框设为不可用(enabled=false)若a2:标签显示“密码
19、不对,请重新输入!并清空文本框。a=a+1(输入次数加1),Private Sub Text1_KeyPress(KeyAscii As Integer)Static a As Integer If KeyAscii=13 Then 按下回车键 If Text1.Text=“1234567”Then 密码输入正确 Label2.Caption=“欢迎光临!”Else 密码错误 If a=2 Then Label2.Caption=“已超时,请退出程序!”Text1.Enabled=False Else Label2.Caption=“密码不对,请再输入一遍!”Text1.Text=“”a=a+
20、1 输入密码次数加1 End If End If Label2.Visible=True End IfEnd Sub,4.5 跳转控制 Goto 语句(略),Goto 语句格式:Goto 语句标号功能:无条件地转移到语句标号指定的程序行去执行。例:Private Sub form_click()Dim x As Integer Dim sum As IntegerStart:Start:语句标号 x=InputBox(请输入一个整数:)If x=0 Then Goto 100 If x Mod 2=0 Then sum=sum+x End If Goto Start100 Print“偶数和为
21、=”;sum 100:语句标号End Sub,On Goto 语句 格式:On Goto|功能:根据“数值表达式”的值,把控制转移到几个指定的语句行中的一个语句。执行过程:先计算“数值表达式”的值,将其四舍五入成为整数,然后根据该整数值,决定跳到第几个行标号去执行:若“数值表达式”的值为1,转移到OnGoto语句后的第1个行标号所指出的语句行;若为2,转移到第2个行标号所指出的语句行;依次类推。如果“数值表达式”的值为0或大于“|”中的项数,将自动执行OnGoto语句的下一条语句。,第4章 小结,1、常用的基本控制结构:顺序结构、选择结构、循环结构。2、三种基本结构的语句格式、执行流程、用途。编程求解问题时,选用合适的结构来设计算法。3、掌握一些常用的编程定式:(1)阶乘(连乘)定式(书8586页)(2)累加定式(书86页尾)(3)两数交换(书78页)(4)规则的二维图形的输出(例如打印菱形,91页)(5)控制一行输出的数据个数(例如书95页 实例4.2),作业与实验,1、课后练习:教科书 98页 习题42、上机实验 实验四 选择结构 实验五 循环结构 必做:基础题,要求上交实验作业。选做:拓展题,