第4章控制语句与程序调试.ppt

上传人:本田雅阁 文档编号:2256303 上传时间:2019-03-11 格式:PPT 页数:66 大小:619.01KB
返回 下载 相关 举报
第4章控制语句与程序调试.ppt_第1页
第1页 / 共66页
第4章控制语句与程序调试.ppt_第2页
第2页 / 共66页
第4章控制语句与程序调试.ppt_第3页
第3页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第4章控制语句与程序调试.ppt》由会员分享,可在线阅读,更多相关《第4章控制语句与程序调试.ppt(66页珍藏版)》请在三一文库上搜索。

1、第四章 基本控制结构,王林景 wlj_,目录,4.1 顺序结构 4.2 选择结构与相关语句 4.3 循环语句 4.4 其它语句 4.5 程序调试,学习目标:,掌握三种基本控制结构 掌握If 条件语句和Select Case选择语句 掌握ForNext和DoLoop循环语句 掌握两重循环,了解多重循环 了解Exit、End和Goto语句 掌握程序的简单调试方法,结构化程序设计及算法表示,算法概述 什么是算法: 广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。 狭义地讲:算法是解决一个问题采取的方法和步骤的描述。 下面通过两个简单的例子加以说明

2、:,1) 输入A、B、C。 2) A与B中大的一个放入MAX中。 3) 把C与MAX中大的一个放入MAX中。 4) 输出MAX,MAX即为最大数。,例 输入三个数,然后输出其中最大的数。 将三个数依次输入到变量、B、C中,设变量MAX存放最大数。其算法如下:,结构化程序设计及算法表示,例 输入10个数,打印输出其中最大的数。 算法设计如下: (1)输入1个数,存入变量A中,将记录数据个数的变量N赋值为1,即N=1 (2)将A存入表示最大值的变量Max中,即Max=A (3)再输入一个值给A,如果AMax 则 Max=A, 否则Max不变 (4)让记录数据个数的变量增加1,即N=N+1 (5)判

3、断N是否小于10,若成立则转到第(3)步执行,否则转到第(6)步 (6)打印输出max,结构化程序设计及算法表示,算法的特性,有穷性 确定性 有0个或多个输入 有一个或多个输出 有效性,结构化程序设计及算法表示,算法的表示 一、自然语言与伪代码表示算法 自然语言:就是指人们日常使用的语言,可以是汉语、英语或其它语言。 伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。,结构化程序设计及算法表示,例如:例4.1可用如下的伪代码表示 Begin(算法开始) 输入 A,B,C IF AB 则 AMax 否则 BMax IF CMax 则 CMax Print Max E

4、nd (算法结束),结构化程序设计及算法表示,用传统流程图表示算法,处理框,起止框,I/O框,判断框,流程线,连接点,1、传统流程图中的基本符号,结构化程序设计及算法表示,2、三种基本结构的表示 (1)顺序结构,(2)选择结构,结构化程序设计及算法表示,(3)循环结构,a) 当型循环,b) 直到循环,结构化程序设计及算法表示,三种基本结构的特点:,(1)只有一个入口 (2)只有一个出口 (3)不存在死语句 (4)不存在死循环,例: 例4.2输入10个数,打印输出其中的最大的数的流程图,结构化程序设计及算法表示,从10个数中选出最大的数的算法流程图,结构化程序设计及算法表示,用NS流程图表示算法

5、,将全部算法写在一个矩形框内,在矩形内还可包含其它从属于它的框,三种基本结构的NS图表示:,1、顺序结构,2、选择结构,结构化程序设计及算法表示,(3)循环结构,a) 当型循环,b) 直到循环,例: 画出从10个数中选出最大的数的NS 流程图,结构化程序设计及算法表示,传统流程图,NS流程图,结构化程序设计及算法表示,Private Sub Form_Click() Dim a%, max%, i% a = Val(InputBox(“A=?“) max = a For i = 1 To 10 a = Val(InputBox(“A=?“) If a max Then max = a Next

6、 i Print “Max=“; max End Sub,下面是例4.2的计算机 程序,即为用计算机语言表示算法:,结构化程序设计及算法表示,(一)、用计算机解决问题的过程,提出、分析问题,确定算法模型,设计算法,编写程序,调试程序,分析输出结果,正确合理,结束,不正确,结构化程序设计方法,(二)、结构化程序设计思想,自顶向下、逐步细化、模块化,自顶向下:先从全局、整体设计 逐步细化:将一个问题分解成几个较小的问题解决 模块化:将一个大任务分解成若干个较小的部分, 每个部分承担一定功能,称为“功能模块”,例:给100个整数,打印输出其中的素数,结构化程序设计方法,结构化程序设计方法,结构化程序

7、设计方法,细化后的流程图,4.1 三种基本控制结构-顺序结构,VB具有结构化程序设计的三种程序控制结构,即顺序结构、选择结构、循环结构,是程序设计的基础 各语句按出现的先后次序执行,4.1 三种基本控制结构-选择结构,根据条件决定执行的语句,4.1 三种基本控制结构-循环结构,根据条件重复执行语句(称为循环体),I 、 当型循环结构,II 、直到型循环结构,4.1 三种基本控制结构-顺序结构,一般程序设计语言中顺序结构的语句主要: 赋值语句和 输入/输出语句等。 在VB.net中 赋值语句 输入/输出通过: 文本框控件、标签控件、 InputBox函数、MsgBox函数 Write方法,4.1

8、 三种基本控制结构-顺序结构-赋值语句,形式: 变量名表达式 对象名. 属性名=表达式 功能:计算表达式的值,再将此值赋给变量或对象属性。 给变量赋值和设定属性是VB编程中常见的两个任务. 例如: x!=0.1 x为单精度变量,赋值0.1 TextBox1.Text “ 清除文本框的内容 TextBox1.Text “欢迎使用VB.Net “,4.1 三种基本控制结构-顺序结构-赋值语句,复合赋值运算符,其作用简化程序代码,提高程序编编译的效果。语句形式: 变量名 复合赋值运算符 表达式 首先计算右边表达式的值,然后与左边的变量进行相应的运算,最后赋值给变量。 复合赋值运算符: +=、- =、

9、*=、=、/=、=、&= 例如:a *= b+4 等价于 a = a*(b+4),4.1 三种基本控制结构-顺序结构-赋值语句,累加 sum +=x 等价于 sum = sum+x 计数 n += 1 等价于 n = n+1 显示多行信息 利用 &= 来实现 如下语句,TextBox1显示结果? TextBox1.Text = “ VB.NET “ & vbCrLf TextBox1.Text &= “程序设计教程“,4.1 三种基本控制结构-顺序结构-赋值语句,“=”符号有两个意义 赋值号、关系运算符等号 形式相同,系统会根据所处的位置判断符号的意义。 赋值号左边只能是变量,不能是常量、常数

10、符号、表达式。下面均为错误的赋值语句: Now()=x+y 左边是表达式(函数) 5=sqrt (s)+x+y 左边是常量 X+y=z 左边是表达式,1. InputBox函数 打开一个对话框,等待用户输入,返回字符串类型的输入值。 形式:InputBox(提示,标题,默认值,x坐标位置,y坐标位置),4.1 三种基本控制结构-顺序结构-数据输出和输入,注意:提示项不能省略。 若要多行提示,可在每行 行末加回车换行vbCrLf。,例4.1利用InputBox输入基本工资和营业额,按营业额的5%提成,计算实发工资并显示。,打开一个信息框,等待用户选择一个按按钮。 MsgBox函数返回所选按钮的值

11、, 变量% = MsgBox(提示,按钮,标题) MsgBox函数无独立的语句: MsgBox 提示,按钮,标题 按钮项是一整型表达式或枚举值( MsgBoxStyle) 决定信息框按钮的数目和类型及出现在信息框上的图标形式。 返回结果整型表达式或枚举值(MsgBoxResult枚举),,2.MsgBox函数,本章目录,4.1 三种基本控制结构-顺序结构-数据输出和输入,MsgBox按钮设置,本章目录,枚举 MsgBoxStyle,MsgBox所选按钮返回值,例4.2 编一账号和密码输入的检验程序,当输入不正确,如账号为非数字字符,密码不正确等,显示有关信息,再输入。,代码说明,枚举 MsgB

12、oxRetry,3.Write、WriteLine方法,在调试窗口输出信息。Write输出时不换行、WriteLine输出时换行。输出方法: Debug. WriteLine(表达式) Debug. Write (表达式) 例 将例4.1输出改为如下语句: Debug.WriteLine(“本月营业额为:“ & x & “ 基本工资为:“ & jbgz) Debug.Write(“本月实发工资为:“ & sfgz) 选择“视图|其它窗口|输出”显示输出窗口,本章目录,4.1 三种基本控制结构-顺序结构-数据输出和输入,4.日期输出控制,常用日期和时间格式符,本章目录,4.1 三种基本控制结构-

13、顺序结构-数据输出和输入,4.1 三种基本控制结构-顺序结构,举例,4.2 选择结构,选择结构:当设定条件成立时执行某些语句,条件不成立时则跳过这些语句或执行其它的语句。 选择结构中要使用选择语句,有两路分支和多路分支两种情况 ,对应的选择语句有If语句(两路出口)和Select Case语句(多路出口)。,4.2 选择结构If条件语句,1. If Then 其中,是一个条件表达式或逻辑表达式 例如,If Data=90 Then Print “优秀” 例4.2输入一个数,如果是3的 倍数则通过消息框输出。 Private Sub Form_Click() Dim Data As Intege

14、r Data = InputBox(“请输入一个值:“) If Data Mod 3 = 0 Then MsgBox Data End Sub,Data是3的倍数,4.2 选择结构If条件语句,2. If Then Else 例如,Dim Data As Integer Data = InputBox(“请输入成绩:“) If Data = 90 Then Print “优秀” Else Print “合格” Print “计算完毕“ 上例的If 语句可以改写为: If Data 90 Then Print “合格“ Else Print “优秀“,4.2 选择结构If条件语句,3. 块状If

15、语句,A = InputBox(“A值”) : B = InputBox(“B值“) Print A, B If A B Then T = A : A = B : B = T End If Print A, B,4.2 选择结构If条件语句,4. If语句嵌套 If语句嵌套使用可形成多分支的条件语句结构 If Then ElseIf Then Else End If,说明: ElseIf之间不要加空格。 Else和位于其上方的最近的If配对,4.2 选择结构If条件语句,例4.3 Weight = InputBox(“输入西瓜重量:“, “计算西瓜款“) If Weight 4 Then Pr

16、ice = 1 ElseIf Weight = 7 Then Price = 1.3 Else Price = 1.1 End If Money = Price * Weight MsgBox “西瓜重” & Weight & “公斤,单价” & _ Price & “元,应收瓜款“ & Money & _ “元“, , “计算西瓜款“,4公斤以下:1.00元/公斤 4至7公斤: 1.3元/公斤 超过7公斤: 1.1元/公斤 If Weight = 4 And Price 7 Then Price = 1.1,4.2 选择结构If条件语句,例4.5 Char = InputBox(“输入一个字

17、符“, “测试字符值“) If Char = “0“ And Char = “A“ And Char = “a“ And Char = “z“ Then MsgBox “输入的字符是小写字母“ Else MsgBox “输入的字符是其它符号“ End If,判断输入的是大写字母、小写字母、数字还是其它符号,4.2 选择结构If条件语句,例3.5 Private Sub Command1_Click() 单击“正确无误”按钮 If Len(TxtCode.Text) 8 Then LblWarn.Caption = “考核证号必须输入,长度为8位“ TxtCode.SetFocus ElseIf

18、 Len(TxtName.Text) = 0 Then LblWarn.Caption = “考生姓名必须输入“ TxtName.SetFocus ElseIf Len(TxtSeat.Text) = 0 Then LblWarn.Caption = “座位号必须输入“ TxtSeat.SetFocus Else LblWarn.Caption = “ Debug.Print TxtCode.Text Debug.Print TxtName.Text Debug.Print TxtSeat.Text End If End Sub,4.2 选择结构Select Case选择语句,语法格式: Se

19、lect Case Case Case Case Else End Select 功能:根据测试表达式的值,决定程序的流向。,值的类型是数值型、字符串型、日期型等,一旦与某个Case后的值相等,则执行这个Case中的,完成后执行End Select后的语句。 如果所有的Case后的都不与项匹配,则执行Case Else后的。,4.2 选择结构Select Case选择语句,例3.6 学生成绩分等 Data = InputBox(“请输入一个成绩“, “成绩分等“) Select Case Int(Data / 10) Case 10 MsgBox “满分“, , “成绩分等“ Case 9 M

20、sgBox “优秀“, , “成绩分等“ Case 8 MsgBox “良好“, , “成绩分等“ Case 7 MsgBox “一般“, , “成绩分等“ Case 6 MsgBox “合格“, , “成绩分等“ Case Else MsgBox “不合格“, , “成绩分等“ End Select,4.2 选择结构Select Case选择语句,例3.7 测试输入的字符 Char = InputBox(“请输入一个字符“, “测试“) Select Case Char Case “0“ To “9“ MsgBox “字符是数字“, , “测试“ Case “a“ To “z“ MsgBox

21、 “字符是小写字母“, , “测试“ Case “A“ To “Z“ MsgBox “字符是大写字母“, , “测试“ Case Else MsgBox “字符是其它符号“, , “测试“ End Select 关于Select Case语句的一些说明见教材,4.3 循环语句,程序的另一种结构是循环结构 循环结构作用是重复执行一段程序 循环是有条件的、次数是有限的 VB的循环语句:ForNext、Do WhileLoop For EachNext、WhileWend 应用最多的:ForNext与Do WhileLoop,4.3 循环语句ForNext循环,ForNext循环一般应用于循环次数已

22、知的场合 For = 初值 To 终值 Step 步长 语句块(循环体) Next 循环变量 工作原理,Step缺省为 1,4.3 循环语句ForNext循环,例3.8 求1+3+5+7+99 Private Sub Form_Click() Dim Sum As Integer, I As Integer Sum = 0 保存累加和,先清零 For I = 1 To 99 Step 2 Sum = Sum + I Next I MsgBox “1+3+5+99=“ & Sum, , “求和“ End Sub,本例的特点是数据项之间相差2, 即Step的值为2,思考: 例中当输出对话框出现时,

23、I 的值是多少? 如果省略Step 2,程序的结果如何? For语句能不能改写成For I=99 To 1 Step -2 ?,4.3 循环语句ForNext循环,例3.9 求平均成绩 Const N = 40 学生人数 Private Sub Form_Click() Dim Sum As Integer, I As Integer Dim Data As Integer, Average As Single Sum = 0 存放累加值的变量清零 For I = 1 To N 循环40次,步长值为1省略 Data = InputBox(“输入第“ & I & “位同学的成绩“, “求平均分“

24、) Sum = Sum + Data Next I Average = Sum / N MsgBox “全班“ & N & “名学生的平均分为“ & Average, , “求平均分“ End Sub,本例的循环变量 I 控制人数,4.3 循环语句DoLoop循环,1. 当型循环,先判断后执行,先执行后判断,特点:条件表达式成立执行循环体内容,4.3 循环语句DoLoop循环,例4.22 计算平均分 Private Sub Form_Click() Dim Data As Integer, Sum As Integer, N As Integer Dim Average As Single S

25、um = 0 : N = 0 Data = InputBox(“输入第“ & N + 1 & “个同学的成绩“, “求平均分“) Do While Data -1 -1表示结束输入 Sum = Sum + Data N = N + 1 Data = InputBox(“输入第“ & N + 1 & “个同学的成绩“, “求平均分“) Loop Average = Sum / N MsgBox N & “位同学的平均分为“ & Average, , “求平均分“ End Sub,4.3 循环语句DoLoop循环,在VB程序中,以下程序段执行后,x的值为 ( ) x=1 y=4 Do While

26、y4 x=x*y y=y+1 Loop Print x A、1 B、4 C、8 D、20,4.3 循环语句DoLoop循环,2. 直到型循环,特点:条件表达式不成立执行循环体内容,4.3 循环语句DoLoop循环,例4.24计算平均分(要求同例4.22) Private Sub Form_Click() Dim Data As Integer, Sum As Integer, N As Integer Sum = 0 : N = 0 Data = InputBox(“输入成绩“, “计算总分“) Do Until Data = -1 Sum = Sum + Data N = N + 1 Dat

27、a = InputBox(“输入数据“, “计算总分“) Loop Print “全班平均分为:“; Sum / N End Sub,Do While Data -1 Sum = Sum + Data N = N + 1 Data = InputBox(“输入数据“, “计算总分“) Loop,4.3 循环语句两重循环,例4.26 输出乘法口诀表 Private Sub Form_Click() Dim I As Integer, J As Integer, M As Integer For I = 1 To 9 For J = 1 To I M = I * J Print J Next J

28、Print 打印换行 Next I End Sub,4.3 循环语句多重循环,多重循环:循环次数在两重以上的循环结构 例4.29 计算将1角钱兑换成零钱有多少种方案 Private Sub Form_Click() Dim I, J, K, S As Integer S = 0 统计兑换1角钱的方案数 For I = 0 To 10 1分钱个数 For J = 0 To 10 Step 2 2分钱个数 For K = 0 To 10 Step 5 5分钱个数 If I + J + K = 10 Then S = S + 1 Next K Next J Next I MsgBox “1角钱兑换成

29、零钱的方案有“ & S & “种“, , “兑换零钱“ End Sub,1角钱以下的硬币有1分、2分和5分种 1角钱全换成1分需10个 1角钱全换成2分需5个 1角钱全换成5分需2个,4.3 其他语句Exit与End,1. Exit语句 Exit Do:跳出DoLoop循环 Exit For:跳出ForNext循环 例4.30 判断一个正整数是否为素数(质数) N = InputBox(“请输入一个正整数“, “验证素数“) For I = 2 To N - 1 If N Mod I = 0 Then Exit For End If Next I If I = N Then MsgBox N

30、& “是素数“, , “验证素数“ Else MsgBox N & “不是素数“, , “验证素数“ End If,素数:一个正整数N除了能被1和自身所整除外,不能被其它任何数所整除。,4.3 其他语句Exit与End,2. End语句 End:终止程序的运行 End Sub:终止一个过程; End Function:终止函数过程 End If:终止条件语句 End Type:终止类型声明 End Select:终止情况语句 End Property:终止属性过程 End With:终止With语句,例如: Private Sub Command1_Click() End End Sub,4.

31、5 程序调试程序的错误类型,语法错误 运行错误,中文逗号,逻辑错误:算法不正确。显然系统不会报告这类出错信息。,4.5 程序调试简单调试,方法:在程序中适当插入Print语句跟踪变量值的变化,4.5 程序调试使用调试工具,1. 断点调试 断点:程序执行到该此自动暂停 单击“继续”按钮 ,程序可继续执行。,设置断点:在代码窗口中单击该语句左侧的阴影边框。 暂停时,将鼠标指针移动到程序中的各个变量上略作停留,系统将以浮动标签的方式显示该变量的值。,4.5 程序调试使用调试工具,2. 逐语句执行 启动逐语句执行:“调试逐语句” 或 按F8 终止逐语句执行: “调试跳出” 3. 使用立即窗口 程序运行处于暂停状态时, 在立即窗口中输入: Print 或 ? 4. 逐过程 启动逐过程执行:“调试逐过程”或 按Shift+F8 终止逐过程执行: “调试跳出”,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1