资源预览内容
第1页 / 共68页
第2页 / 共68页
第3页 / 共68页
第4页 / 共68页
第5页 / 共68页
第6页 / 共68页
第7页 / 共68页
第8页 / 共68页
第9页 / 共68页
第10页 / 共68页
亲,该文档总共68页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四章基本的控制结构1.顺序结构(顺序结构(Sequence)2.选择结构(选择结构(Selection)3.循环结构(循环结构(Repetition)4.其它辅助控制语句其它辅助控制语句5. 常用算法(一)常用算法(一)Summaryl 顺序结构 按照各语句出现的先后顺序执行 包括:l 赋值语句l 输入 / 输出语句 4.1 顺序结构顺序结构l 赋值语句是任何程序设计的最基本语句。l 语法结构: 变量名 表达式 其中: 变量名:已经定义(声明)的变量名称 表达式:任何类型表达式(算术、逻辑、 函数等等),类型与变量名的 类型一致。1 赋值语句赋值语句l 赋值语句的作用: 先计算等号右边表达式的值,然后赋给等号左边的变量。l VB赋值语句的两项任务 给变量赋值 给控件的属性赋值l 例如: sngRate! =0.1 将0.1赋给单精度变量sngRate txtName.Text = “Hu” 赋值处理l当赋值等号左右数值类型不相同时,强制转换成左边变量的类型(精度) n%=3.5 结果为4(四舍五入)l当赋值等号左边是数值类型,而右边表达式是数字字符串,则VB自动转换成数值类型再赋值,如表达式不是数字字符串,则出错。 n%=“123” 结果为123,与n%=Val(“123”)效果一样 n%=“1a23” 出现“类型不匹配”错误 l当逻辑类型赋值给数值类型时,True转换为1,False转换为0; 反之,当数值型赋值给逻辑类型,则非零转换为True,0转换为False。l任何非字符类型赋值给字符类型,自动转换为字符类型。 注意:l尽量采用转换函数进行转换,避免VB系统自动转换。这样能避免出现意想不到的错误。lVB系统会自动判断赋值符号“=“ 和关系运算符等于符号”=“。l 赋值符号”=“左边只能是变量,不能是常量、或者表达式。l 赋值语句: intX = intX + 1l VB与用户之间的数据交互通过两个函数和一个过程完成。l 函数有返回值,过程没有返回值。(第六章)l 函数: InputBox(), MsgBox()l 过程: MsgBox2 人机交互函数和过程人机交互函数和过程l 语法: 变量名InputBox(提示,标题,默认 ,x坐标位置,y坐标位置) 其中: 提示:字符串表达式,显示信息。如果 要显示多行,则在每行未加上回 车Chr(13)和换行Chr(10),或者, 加上VB系统常数vbCrLf。1 InputBox函数 标题:字符串表达式,在对话框的标题 显示。如果省略,则显示应用程 序的名称。 默认:字符串表达式。当对话框中没有 输入时,则该默认值作为输入的 内容。 x坐标位置,y坐标位置:整数表达式, 确定对话框左上角在屏幕上的位 置,屏幕左上角为坐标原点,单 位:twip。1000 twip = 1 inch。l 打开一个标准对话框,等待用户输入内容,用户单击“确定(OK)”或者按回车键,则该函数返回输入的值,其类型为字符型。l例如: Dim strName As String * 40, strS1 As String strS1 = 请输入你的姓名 + vbCrLf + 然后回车确定 strName = InputBox(strS1, 输入框, , 100, 100)InputBox函数的作用l 语法: 变量名MsgBox(提示,按钮,标题) 其中: 提示:与InputBox函数相同 标题:与InputBox函数相同 按钮:整数表达式,决定信息框按钮的 数目和类型及其图标类型。参见 P77,表1.4.12 MsgBox()函数分分 组组内部常数内部常数按钮值按钮值描述描述vbOkOnlyvbOkCancelvbAbortRetryIgnorevbYesNoCancelvbYesNovbRetryCancel012345“确定确定” “确定确定”、“取消取消”“终止终止”、“重试重试”, “忽略忽略”“是是”、“否否”、“取取消消”“是是”、“否否”“重试重试”、“取消取消”按按 钮钮数数 目目表表1.4.1 “按钮按钮”设置值及其意义设置值及其意义vbCriticalvbQuestionvbExclamationvbInformation16324864红色红色STOP标志标志询问信息图标询问信息图标 ?警告信息图标警告信息图标 !信息图标信息图标 i按按 钮钮类类 型型vbDefaultButton1vbDefaultButton2 vbDefaultButton3 0256512第一个按钮为默认第一个按钮为默认第二个按钮为默认第二个按钮为默认第三个按钮为默认第三个按钮为默认默默 认认按按 钮钮vbApplicationModevbSystemMode 04096应用模式应用模式系统模式系统模式模式模式注意:注意:l四组方式可以组合使用。一般采用内部常数形式,而不采用按钮值形式。 例如: I=MsgBox(“密码错误”,vbRetryCancel+vbExclamation,”输入密码”) I=MsgBox(“密码错误”,53,”输入密码”) l模式:若应用模式建立对话框,则必须响应对话框才能继续当前的应用程序,但可以切换到其它应用程序。若应用系统模式建立对话框,则所有的应用程序都被挂起,直到用户响应对话框为止。 内部常数内部常数按钮值按钮值被单击的按钮被单击的按钮vbOkvbCancelvbAbortvbRetryvbIgnorevbYesVBNo1234567确定确定 取消取消终止终止重试重试忽略忽略是是否否表表1.4.2 MsgBox函数返回值意义函数返回值意义l 语法: MsgBox(提示,按钮,标题) 其中: 提示、标题、 按钮:与MsgBox函数相同l作用:Msgbox()函数和Msgbox过程的作用都是打开一个信息框,等待用户选择一个按钮。l区别: Msgbox()函数返回所选按钮的整数值; Msgbox过程没有返回值。3 MsgBox过程编程实现账号和密码的输入程序,要求:(1)账号不超过6位数字,密码为4位字符,假设为“Gong”(2)密码输入时,不显示输入的字符,用“*”代替。(3)输入不正确,显示有关信息。单击“重试”,则清除原来输入的内容,等待重新输入;单击“取消”,终止程序运行。例题:分析分析l 账号账号不超过6位数字,则将文本框的MaxLength属性设置为6;输入结束后,通过LostFocus事件,来判断账号输入的正确性。若出错,则显示出错信息,重新输入。l 密码要显示“ * ”, 将PasswordChar属性设置为“ * ”即可。 输入结束按确定键后,判断密码的正确性。正确没有显示,出错显示出错信息。l 选择结构作用对条件进行判断,根据判断结果,选择执行不同的分支。lIf 条件语句lSelect case语句l条件函数4.2 选择结构选择结构l If 条件语句有多种形式单分支双分支多分支4.2.1 If 条件语句条件语句If Then 语句1 单分支结构(1) If Then End If(2)If Then l 表达式 可为关系表达式、逻辑表达式、算术 表达式。非零为True,零为False。l语句块:一条或者多条语句。l形式(2)中的语句只能是一条,或者多多条简单语句,之间用冒号分开。条简单语句,之间用冒号分开。l 尽量用第一种形式编程。其中,FT表达式表达式语句块语句块l当表达式为当表达式为TrueTrue时,执行时,执行ThenThen后的语句后的语句块。块。l否则,不作任否则,不作任何处理何处理If ThenElse 语句2 双分支结构(1) If Then Else End If(2)If Then Else l 当表达式为非零(True)时,执行Then后的语句块1(或语句1),否则,执行Else后面的语句块2(或语句2)。作用F表达式表达式语句块语句块1语句块语句块2TIf ThenElseif 语句3 多分支结构 If Then Elseif Then Else End If 注意:l不管有几个分支,程序执行一个分支后,就不再执行其它分支。l ElseIf不能写作Else Ifl 当多个分支有多个表达式同时满足时,则只执行第一个匹配的语句块。P82, 例4.3l在If 或者Else后面的语句中又有If 语,称为If 嵌套。4 If 语句的嵌套 If Thenif Then End If End If l If 嵌套一般采用锯齿型,增强程序的可读性。l 一个If 必须与一个End If匹配,End If与最近的If语句配对。例题4.4 (P83)注意l Select Case 语句是多分支结构的另一种表示。比If 语句更直观。l 选择多于三个以上,采用Select Case较好。4.2.2 Select case语句语句 Select case 变量或表达式 Case 表达式列表1 Case 表达式列表2 Case Else End Select其中, 变量或表达式:数值型或字符串表达式 表达式列表 : 类型必须相同,可以为 (1)表达式 (2)一组逗号分开的值 (3)表达式1 To 表达式2 (4)Is关系运算符表达式例如:Case 1 to 10 110范围内Case “a”,”e”,”I”,”o”,”u” 元音字母Case 2,4,6,Is10 2,4,6,或大于10作用 根据变量或表达式中的结果,与各case语句中的表达式列表的值进行比较,匹配则执行该语句块。如果有多个匹配,则只执行第一个匹配的语句块。表达式列表1语句块1表达式列表2语句块2表达式列表n语句块n语句块n+1TTTFFF注意:lSelect Case 语句只能有一个变量,不能对多个变量进行条件判断。l多个变量只能采用IfThenElseIf 语句l P85,例题4.6组合应用:l算术运算:要求给出随机的110的操作数和四则运算符,计算机根据学生的答案判断准确是否,结束时给出成绩。分析:(1)运算符 “ “ 采用1, 2, 3, 4 表示;(2) 随机数用Rnd函数确定;(3) 产生表达式由Form_load过程给出,在标签(label)控件显示。 (4)学生在文本框中输入答案;(5) 图形框中显示正确是否;(6) 最后单击“计分”时,显示成绩。控件名控件名lblExpressiontxtAnswer amdCalculationpicDisplay主要属性主要属性Caption=“ ”Text=“ ” Caption=“计分”Picture默认值空 说说 明明 显示产生的题目输入计算结果 最后计分显示题目、结果和正确是否l VB提供了两个条件函数IIF( )函数 代替 If 语句Choose( )函数 代替 Select语句4.2.3 条件函数条件函数(1) IIf( )函数 IIf(表达式,当条件为T的值,当条件为F的值)例如:求x, y中的大的数,放入Tmax变量中 TMax = IIf ( x y, x, y )等效于: If xy thenTmax=x ElseTmax=y End If(2) Choose( )函数 Choose(整数表达式,选项列表)根据整数表达式的值,选择选项列表的项: 1 第一项 2 第二项 . 选项数目 NullstrOp=Choose(intNOp, “+” , ”-”, ”x”, ” ”) l 最好不要采用这两个函数IIF( )函数 Choose( )函数 忠告:忠告:l 循环是在指定的条件下重复执行某些指令。l两种类型的循环语句:计数型循环语句:用于循环次数确定的情况 (FOR循环语句) 条件循环语句:用于循环次数未知的情况 (Do Loop循环语句)4.3 循环结构循环结构For 循环变量循环变量 初值初值 To 终值终值 Step 步步长长 Exit For Next 循环变量4.3.1 For循环语句循环语句循环变量:整数型;步长:可正可负;正,初值小于终值;负,初值大于终值。默认为1语句块:一或多句指令;Exit For:退出循环;循环次数:int(终值初值)/步长1)如图1.4.11(a) (b) 所示。其中:1. 循环变量被赋初值,仅赋一次;2. 判断循环变量是否在终值内,是,执行循环体;否,结束循环,执行Next后的下一句语句。3. 循环变量加步长,转(2),继续循环。执行过程:1. 当退出循环时,循环变量的值保持退出时的值;2. 循环变量的值一般在循环体外赋值;参见:P89, 例4.93. 例如:P90,例题4.10注意:l有两种形式的循环结构(1) Do While | Until Exit Do Loop4.3.2 Do Loop循环语句循环语句(2) Do Exit Do Loop While | Until (1)形式1先判断,再执行。形式2先执行,再判断。流程图参见P91。(2) 关键字While用于指明条件为真(True)时就执行循环体的语句;Until则相反。(3) 当省略 While | Until 时,即仅有 DoLoop 关键字,表示无条件循环。此时,循环体内必须有Exit Do 语句,否则为死循环。其中:l用辗转相除法求两个自然数m、n的最大公约数和最小公倍数。l分析l先求最大公约数已知两个数 m, n,使得 m n m 除以 n ,得余数 r 若 r 0,则 n 为求得的最大公约数,算法结束;否则,执行以下步骤 m n, n r, 转步骤(2)l最小公倍数等于两数相乘除以最大公约数例题4.12l在一个循环体内包含了另一个完整的循环结构。l 循环嵌套对 For 循环和 DoLoop 循环均适用。l注意:内循环变量和外循环变量不能相同 外循环必须完全包含内循环l例题:参见P92,例4.134.3.3 循环的嵌套循环的嵌套l Go To 语句l Exit语句l End 语句l With 语句4.4 其它辅助控制语句其它辅助控制语句1 Go To 语句语句 l 形式: Go To 标号|行号l 该语句的作用是无条件转移到标号或者行号指定的那行语句。l Go To语句只能转移到同一个过程的标号或行号。标号是一个字符序列,行号是一个数字序列。l 采用Go To语句编制的程序称为 BS 程序(Bowl of Spaghetti Program, 乱麻似的程序),程序结构不清晰,可读性差。l 结构化程序设计中要求尽量少用或不用Go To语句,用选择结构或者循环结构来代替。lExit语句用于退出某种控制结构的执行。l 包括: Exit For Exit Do Exit Sub Exit Function2 Exit 语句语句lEnd 语句用于结束一个程序的运行。 End 语句可以在任何事件过程中。l End 还可以用来结束一个过程或者控制块,在控制语句或过程中经常使用。l End If, End Select, End Sub等等。3 End 语句语句lWith 的作用:可以对某个对象执行一系列的语句,而不必重复指出对象的名称。l 形式:With 对象语句块 End With l参见P95, 例题。l 个人意见:尽量不用。4 With 语句语句l算法是对某个问题求解过程的描述l 同一问题有多种算法描述l 算法分为两大类 数值算法非数值算法4.5 常用算法(一)常用算法(一)4.5.1 累加、连乘累加、连乘 l 累加:在原有和的基础上,一次一次地加上一个数。l 连乘:在原有积的基础上,一次一次地乘以一个数。l 书P9596 中的简单例子。l 例题4.14 求自然对数e的近似值。l采用 For Next语句如何实现?l 变量赋初始值语句若放在循环体内,情况会如何?思考:4.5.2 求素数求素数 l素数,又称质数:大于2且只能被1和本身整除的整数。l求解想法:对于 m 从 i = 2,3,m-1 判断 m 能否被 i 整除,若有一个能整除,则 m 不是素数;否则, m 是素数l例题4.15, 求 100 以内的素数l实际上,m 不可能被大于 的数整除,故内循环为:For i = 2 To Int(Sqr(m), 将大大减少循环次数。l 不用 Go To 语句如何实现?l 增加一个标志位 Flag,根据Flag的值判断是否为素数。4.5.3 穷举法穷举法 l穷举法,又称牧举法,即将所有可能出现的各种情况一一测试,判断是否满足条件。l采用循环结构实现。l例题4.16, 百元买百鸡问题 (为了增加运算时间,100变为200)l方法一:三重循环,计算时间长。l 方法二:循环优化,二重循环。l 方法一:采用Variant类型,计算时间长,若改为整数型,则计算时间减少。结论:l尽量少用变体变量( Variant )类型,采用确定的数据类型。l 尽量减少循环的重数。l 合理选择内、外循环变量,将循环次数多的放在内循环。4.5.4 递推法递推法 递推法,又称迭代法,即把一个复杂的计算过程转化为简单过程的多次重复计算。l例题4.17, 猴子吃桃子。(P99) 小猴在一天摘了若干个桃子,当天吃掉 一半多一个;第二天吃了剩下的一半多一个;以后每天吃尚存桃子的一半多一个,到第7天早上只剩下一个了,问小猴摘了多少个桃子? 分析:l这是一个“”递推“问题l先从最后一天的数推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子l假设,第 n 天的桃子为 ,l则第 n-1 天的桃子为:4.5.5 求最大值或最小值求最大值或最小值 l求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的数,则取第一个数为最大值的初值,然后将每一个数与最大值比较,若该数大于最大值,则将该数替换为最大值,依次进行比较。l求最小值,一般先假设一个较大的数为最小值的初值,若无法估计较大的数,则取第一个数为最小值的初值,然后将每一个数与最小值比较,若该数小于最小值,则将该数替换为最小值,依次进行比较。l例题4.18(P100)
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号