大学VB教学课件:第4章程序设计的3种基本结构.ppt

上传人:w****2 文档编号:6702377 上传时间:2020-03-02 格式:PPT 页数:88 大小:737.01KB
返回 下载 相关 举报
大学VB教学课件:第4章程序设计的3种基本结构.ppt_第1页
第1页 / 共88页
大学VB教学课件:第4章程序设计的3种基本结构.ppt_第2页
第2页 / 共88页
大学VB教学课件:第4章程序设计的3种基本结构.ppt_第3页
第3页 / 共88页
点击查看更多>>
资源描述
第4章程序设计的3种基本结构 VB采用事件驱动方法 但仍需要结构化程序设计方法 用控制结构控制程序执行的流程 程序流程有三种最基本的结构 顺序结构 选择结构 循环结构 引言 4 1算法及算法的表示 算法 是解决问题而采取的方法和步骤的描述 4 2顺序结构程序 在VB中 采用OOP 程序的执行是事件驱动的 但就某个过程而言 过程本身代码的执行仍采用顺序结构 即按照语句代码出现的先后次序执行 一 几个常用语句1 赋值语句Let 格式 Let 表达式功能 将表达式的值赋给变量或对象属性例 s 0Label1 BackColor RGB 255 0 0 Let表示赋值可以省略 注意事项 赋值号与数学中的等号意义不同 例如 语句X X 1表示将变量X的值加1后的结果值再赋给变量X 而不是表示两边的值相等 2 赋值号左边必须是变量或对象属性 例 X 1MyStr GoodMorning Command1 Caption 确定 X 1 X 错误 3 变量名或对象属性名的类型应与表达式的类型相容 例如 DimAAsInteger BAsSingle CAsDouble SAsStringA 100S 123 45 A S A 123S A S 123 B 12345 67A B A 12346四舍五入后取整C 123456 789B C B 123456 8单精度有效数字为7位S abc A S 4 变量未赋值时 数值型变量的值为0 字符串变量的值为空串 例4 1 交换两个变量的值 设变量A中存放3 变量B中存放4 交换两个变量的值 使变量A中存放4 变量B中存放3 2 注释语句注释语句是非执行语句 仅仅对相应位置上的代码起到注释作用格式1 Rem注释内容格式2 注释内容格式1中的关键字Rem和注释内容之间必须用空格隔开格式2的注释语句在使用时较格式1更加灵活 可以不用加语句间的分隔符 直接出现在某行语句后面进行注释 例 R 12 3 RemR表示圆的半径S 3 14 R 2 S表示圆的面积 3 暂停语句Stop格式 StopStop常用于程序调试 用它来设置断点 当Stop语句执行时 会中断程序运行 并自动打开立即窗口 方便用户对程序代码进行检查和调试 4 卸载对象语句Unload格式 UnloadUnloadForm1 卸载窗体Form1UnloadMe 卸载当前窗体 5 结束语句End格式 EndEnd语句不调用Unload QueryUnload或任何其它VisualBasic代码 只是生硬地终止代码执行 6 响铃语句Beep格式 Beep 不管多么复杂的问题 一般在解决时 都可分为三个步骤 输入数据 数据处理 输出结果1 使用文本框输入数据利用文本框接收用户通过键盘输入的内容 而用户输入的内容是保存在文本框的Text文本属性中 要获取Text文本属性的值即用户输入的内容 可通过赋值语句实现 A Text1 Text 二 数据输入 例题4 1 例4 1 输入长方体的长 宽和高 然后计算其体积和表面积 运行界面如图所示 Text1 Text2 Text3 Text4 Text5 计算 命令按钮Command1的Click事件的代码 PrivateSubCommand1 Click DimLAsSingle WAsSingle HAsSingleL Val Text1 Text W Val Text2 Text H Val Text3 Text Text4 Text L W HText5 Text L W L H W H 2EndSub 关闭 命令按钮Command2的Click事件代码 PrivateSubCommand2 Click UnloadMeEndSub 2 焦点与Tab键顺序 TabIndex属性 Tab键顺序TabStop属性 焦点是否能停留在该控件上 TabIndex 0 TabIndex 1 TabIndex 2 TabStop False TabStop False 3 输入框函数 Inputbox 格式 InputBox 说明 字符串表达式 在对话框内显示提示信息 提示用户输入的数据的范围 作用等 如果要显示多行信息 则可在各行行末用回车符Chr 13 换行符Chr 10 回车换行符的组合Chr 13 Chr 10 或系统常量vbCrLf来换行 字符串表达式 可选项 运行时该参数显示在对话框的标题栏中 如果省略 则在标题栏中显示当前的应用程序名 字符串表达式 可选项 显示在对话框上的文本框中 在没有其他输入时作为缺省值 如果省略 则文本框为空 例4 2 例4 2 输入圆的半径 计算其周长和面积 运行界面如图所示 PrivateSubCommand1 Click DimRAsSingle LAsSingle SAsSingleR Val InputBox 圆的半径 请输入 0 L 3 1416 2 RS 3 1416 R RText1 Text LText2 Text SEndSub 三 数据输出 在程序设计中对输入的数据进行加工后 往往需要将数据输出 在VB中 可以使用 文本框 Text 控件标签 Label 控件消息框 MsgBox 函数或语句Print方法 1 文本框2 标签 3 消息框函数 Msgbox 在windows中 如果操作有误 通常会在屏幕上显示一个对话框 提示用户进行选择 然后系统根据选择确定其后的操作 例如 VB提供的MsgBox函数可以实现此功能 它可以向用户传送信息 并可以接收用户在对话框上的选择 以此作为程序继续执行的依据 格式 MsgBox 功能 在对话框中显示消息 等待用户单击按钮 并返回一个整数告诉用户单击了哪个按钮 说明 字符串表达式 用于指定显示在对话框中的信息 可以使用回车符Chr 13 换行符Chr 10 或是回车与换行符的组合Chr 13 Chr 10 进行换行 数值型数据 是可选项 用来指定对话框中出现的按钮和图标的种类及数量 该参数的值由三类数值相加产生 这三类数值分别表示按钮的类型 显示图标的种类及默认按钮的位置 字符串表达式 是可选项 它显示在对话框的标题栏中 如果省略 则在标题栏中显示应用程序名 格式 MsgBox 按钮类型 的设置值及含义 MsgBox函数的返回值 若不需要返回值 则可以使用MsgBox语句 其格式为 MsgBox 例 PrivateSubCommand1 Click a MsgBox 提示信息 EndSub PrivateSubCommand1 Click a MsgBox 提示信息 Chr 13 换行显示 EndSub PrivateSubCommand1 Click a MsgBox 提示信息 标题 EndSub PrivateSubCommand1 Click a MsgBox 提示信息 1 标题 EndSub 显示 确定 取消 按钮 PrivateSubCommand1 Click a MsgBox 提示信息 1 16 标题 EndSub PrivateSubCommand1 Click a MsgBox 提示信息 2 32 0 标题 EndSub 若不需要返回值 则可以使用MsgBox语句直接输出 其格式为 MsgBox 例 Dima a1 a2a 中华人民 a1 共和国 a2 a a1Msgbox a2 a2 输出数据 例4 3 对例4 1的 关闭 按钮作如下改进 单击该按钮时弹出一消息框 询问是否真的要关闭 单击 是 则关闭 单击 否 则不关闭 PrivateSubCommand1 Click IfMsgBox 真的要关闭吗 vbYesNo vbQuestion 确认 vbYesThenUnloadMeEndIfEndSub 4 使用Print方法输出数据 调用格式 对象名 Print 输出项列表 对象除了可以是窗体外 还可以是图片框 PictureBox Debug或打印机 Printer 若缺省对象名 表示将文本输出到当前窗体上输出项列表 是由0个 1个或多个待输出的数值表达式或字符串表达式构成 当输出项是由多个项构成 则中间必须用逗号或分号分隔 若Print后什么都不跟 则表示输出一个空行例 Form1 Print1 2 3Print1 2 3Picture1 Print1 2 3 分号 和 逗号 分隔符 用于分隔前后两个输出项 并决定分隔符后的下一个输出项的输出位置分号 表示下一个输出项将以紧凑格式 紧跟着上一个输出项输出 中间没有空格逗号 表示采用标准格式 下一个输出项将在下一个打印区 每隔14列开始一个打印区 每列的宽度是所有字符的平均宽度 的起始位置输出Print1 2 3Print We study VB 标准格式紧缩格式 Print1 2 3Print We study VB5 0 运行结果123WestudyVB 标准格式 Print各数据分别存储在各自的标准输出区内 数据之间留有一定的空格字符 数据划分非常明显 读取数据容易 对于一个数值型数据 前面有一个符号位 对于正号 不显示但留有一个空格 数据后留有一个空格作为分隔符 Print1 2 3Print We study VB5 0 运行结果1 23WestudyVB 紧凑格式 Print各数据紧凑地显示 节省空间对于一个数值型数据 前面有一个符号位 对于正号 不显示但留有一个空格 数据后留有一个空格作为分隔符对于字符串数据 输出的各字符串数据间没有空格而连成一片 造成读取数据的困难 定位输出函数 Spc n 可选的 在显示或打印列表中的下一个输出项前插入n个空格 从而实现对输出进行定位Tab n 可选的 用来将输出定位在绝对n列号上 使用无参数的Tab 表示将输出定位在下一个打印区的起始位置 例题用Print方法和定位函数输出数据Spc n 下一个输出项前插入n个空格Tab n 输出定位在绝对n列号上 PrivateSubForm Click PrintTab 8 A PrintTab 6 B Spc 2 B PrintSpc 3 C Spc 2 C Spc 2 C PrintTab 2 D Spc 2 D Spc 2 D Spc 2 D EndSub 4 3选择结构程序设计 有些实际问题中 往往需要根据条件成立与否 决定程序的执行方向 在不同的条件下 进行不同的处理 使用顺序结构是无法解决这一问题的 需要用选择结构 单行结构条件语句If Then Else 块结构条件语句If Then EndIf多分支选择语句SelectCase EndSelect以上语句又统称为条件语句 其功能都是根据条件或表达式的值有选择地执行一组语句 一 If语句 1 单行结构的If Then Else语句格式1 功能 如果成立 则执行 否则执行 可以是关系表达式 逻辑表达式 数值表达式或字符串表达式 对于数值表达式 VB将0作为False 非0作为True处理 对于字符串表达式 VB只允许包含数字的字符串 当字符串中的数字值为0时 则认为是False 否则认为是True 和可以有多条语句 各语句之间用冒号隔开 单行If语句必须在一行内写完 IfThen Else 例4 4 输入一个数 求其绝对值 运行界面如图所示 方法一 PrivateSubCommand1 Click DimXAsSingle YAsSingleX Val Text1 Text IfX 0ThenY XElseY XText2 Text YEndSub 方法二 PrivateSubCommand1 Cliok DimXASSingleX Val Text1 Text IfX 0ThenX XText2 Text XEndSub 单行结构条件语句可以嵌套 也就是说 在或中可以包含另外一个单行结构条件语句 例 1 X 0 Y 0 X 0 1 X 0THENIFX 0THENY 1ELSEY 0ELSE ELSEY 1 续行符 2 块结构双分支条件语句If Then Else语句 T F 语句体2 功能 如果成立 则执行 否则执行 格式1 IfThen Else ENDIf PrivateSubCommand1 Click DimaAsSingle bAsSingle cAsSingle xAsSinglea Val Text1 Text b Val Text2 Text c Val Text3 Text Ifa bThenx aElsex bEndIfIfx cThenx cEndIfText4 Text xEndSub 例4 5 输入三个数 求其中最大数 例4 6 输入三个不同数 将它们从大到小排序 分析 t aa bb t Label4 caption 排序结果为 Str a Str b Str c 例4 6 输入三个不同数 将它们从大到小排序 PrivateSubCommand1 Click DimaAsSingle bAsSingle cAsSingle tAsSinglea Val Text1 Text b Val Text2 Text c Val Text3 Text Ifa bThent aa bb tEndIfIfa cThent aa cc tEndIfIfb cThent bb cc tEndIfLabel4 Caption 排序结果为 Str a Str b Str c EndSub 3 块结构多分支条件语句If Then ElseIf语句 格式 IfThen ElseIfThen ElselfThen Else EndIf 功能 实现多分支选择 例4 7 求一元二次方程ax2 bx c 0的根 分析 PrivateSubCommand1 Click DimaAsSingle bAsSingle cAsSingle dAsSingleDimx1AsSingle x2AsSinglea Val Text1 Text b Val Text2 Text c Val Text3 Text d b b 4 a cIfd 0ThenX1 b Sqr d 2 a X2 b Sqr d 2 a Text4 Text x1 保留两位小数Text5 Text x2ElseIfd 0Then 有重根X1 b 2 a Text4 Text x1Text5 Text x1Else 复根X1 b 2 a X2 Sqr d 2 a Text4 Text x1 x2 i Text5 Text x1 x2 i EndIfEndSub IfThenIfThenIfThen ElseEndIfIfThenElse EndIfEndIfEndIf 二 If语句的嵌套 If语句的嵌套指的是在If或Else后的语句体中又包含If语句 例如 IFX 0THENY 1ELSEIFX 0THENY 0ELSEY 1ENDIFENDIF 例4 8 某书店为了促销 采用购书打折扣的销售办法 每位顾客一次购书 在100元以上200元以下者 按九折优惠 在200元及以上300元以下者 按八五折优惠 在300元及以上者 按八折优惠 编写程序 输入购书款数 计算输出优惠价 PrivateSubCommand1 Click DimXAsSingle YAsSingleX Val Text1 Text IfX 100ThenY XElseIfX 200ThenY 0 9 XElseIfX 300ThenY 0 85 XElseY 0 8 XEndIfEndIfEndIfText2 Text YEndSub 三 多分支条件选择语句 SelectCase 格式 SelectCaseCase表达式列表1Case表达式列表2 CaseElse EndSelect 功能 根据的值 按顺序匹配Case后的表达式表 如果匹配成功 则执行该Case下的语句组 然后转到EndSelect语句之后继续执行 如果的值与各表达式表都不匹配 则执行CaseElse之后的 再转到EndSelect语句之后继续执行 可以是任何数值表达式或字符表达式 case的三种形式 1 如 Casel 3 52 TO如 Casel0TO30Case A TO Z 3 Is如 CaseIs 10以上三种方式可以同时出现在同一个Case语句之后 各项之间用逗号隔开 如 Casel 3 10T020 Is 0 PrivateSubCommand1 Click DimXASSingle YASSingleX Val Text1 Text SelectCaseXCaseIs 100Y XCaseIs 200Y 0 9 XCaseIs 300Y 0 85 XCaseElseY 0 8 XEndSelectText2 Text YEndSub 例4 8 方法二 四 IIf函数 格式 IIf 条件表达式 条件为True时的值 条件为False时的值 例 iif a b a b 返回a b中较大值 例 PrivateSubCommand1 Click IfText1 Text 王刚 ThenIfUCase Text2 Text ABCDE ThenMsgBox 口令正确 ElseBeepMsgBox 口令错误 EndEndIfElseBeepMsgBox 用户名错误 EndEndIfPrintPrintSpc 20 欢迎使用 EndSub 4 4循环结构程序设计 学习重点和难点 循环的概念循环的基本语句结构和流程循环在常用算法中的应用 在解决实际问题中 经常要对某一处理过程反复执行多次 这就是循环 由两部分组成 循环体 即要重复执行的语句序列 循环控制部分 即用于规定循环的重复条件或重复次数 同时确定循环范围的语句 引例 单击窗体 要求在窗体上显示6行星号分析 要求显示的信息是每行是由16个星号所构成的字符串 所以可以通过连续6次调用窗体的Print方法实现图形的显示 PrivateSubForm Click Print Print Print Print Print Print EndSub 若要求显示10行或更多行这样的信息若打印信息的行数要求是由用户决定专门用于进行重复操作的语句结构 循环结构 Do Loop循环结构当型循环 While 直到型循环 Until While型循环结构For Next循环结构 1 Do Loop循环语句 格式一 前测式当型循环DoWhile ExitDo Loop 格式二 前测式直到型循环DoUntil ExitDo Loop 格式三 后测式当型循环Do ExitDo LoopWhile 格式四 后测式直到型循环Do ExitDo LoopUntil Do Loop循环结构的四种格式 当型循环 While 格式1DoWhile循环条件循环体Loop 格式2Do循环体LoopWhile循环条件 True 循环条件 循环体 False 循环条件 循环体 True False 直到型循环 Until 格式1DoUntil循环条件循环体Loop 格式2Do循环体LoopUntil循环条件 False 循环条件 循环体 True 循环条件 循环体 False True 例 求1 2 3 100 方法一 PrivateSubCommand1 Click DimsASSingle iASSingles 0 i 1DoWhilei 100s s ii i 1LoopText1 Text sEndSub 方法二 PrivateSubCommand1 Click DimsASSingle iASSingles 0 i 1Dos s ii i 1LoopWhilei 100Text1 Text sEndSub 方法三 PrivateSubCommand1 Click DimsASSingle iASSingles 0 i 1DoUntili 100s s ii i 1LoopText1 Text sEndSub 方法四 PrivateSubCommand1 Click DimsASSingle iASSingles 0 i 1Dos s ii i 1LoopUntili 100Text1 Text sEndSub While和Until的区别 While表示当条件成立时执行循环体 Until则是在条件不成立时执行循环体 前测式和后测式的区别 前测式先对进行判断 后执行循环体 如果第一次条件就不成立循环体一次也不执行后测式先执行循环体 后对进行判断 循环体至少执行一次 ExitDo语句 用于退出循环体 执行Loop语句之后的语句 该语句一般放在某条件结构中 用于表示当某种条件成立时 强行退出循环 引例 单击窗体 要求在窗体上显示6行星号分析 要求重复6次输出一行由16个星号所构成的字符串 因此 循环条件就是输出的行数 6 重复执行的循环体就是Print PrivateSubForm Click DimiAsInteger 定义计数器变量i来记录目前已输出的行数i 0DoWhilei 6 当输出行数未达到6行 反复执行下面语句Print i i 1 每输出一行信息 计数器i累加1Loop 返回到DoWhile行EndSub 练习 用其他几种DO LOOP语句改写程序 引例 单击窗体 要求在窗体上显示n行星号分析 要求输出的16个星号的行数由用户决定 InputBox PrivateSubForm Click n Val InputBox 请输入行数 接收用户输入的行数i 0DoWhilei n 当输出行数没有达到n行 就反复输出Print i i 1 每输出一行信息 计数器i累加1Loop 返回到DoWhile行EndSub 例4 10求1 2 3 n 3000的最小n值 PrivateSubCommand1 Click DimsAsInteger nAsIntegers 0n 0DoWhiles 3000n n 1s s nLoopText1 Text nEndSub PrivateSubCommand1 Click DimsASInteger nASIntegers 0 n 0DoUntilS 3000n n 1s s nLoopText1 Text nEndSub 例4 11求两个正整数的最小公倍数 PrivateSubCommand1 Click DimmAsInteger nAsInteger rAsInteger tAsIntegerDimaAsInteger bAsIntegerm Val Text1 Text n Val Text2 Text a m b nIfm0Label3 Caption 最小公倍数 a b m EndSub 2 While型循环控制语句 格式 While循环条件循环体Wend这种结构使用完全类似于Do Loop的当型循环 格式1 表示当循环条件为True时 反复执行循环体 直到循环条件为False为止一般 现在常用Do Loop结构化与适应性更强的当型循环格式替换这种格式 3 For Next循环结构语句 格式 For循环控制变量 初值To终值 Step步长 循环体Next循环控制变量循环控制变量也称为 循环变量 控制变量 或 循环计数器 它必须为数值型变量 但不能是下标变量或记录元素初值 终值和步长也必须是数值表达式 其中步长是指每次循环变量的增量 一般当初值终值 则步长应取负值 仅当步长为1时 Step步长可以省略 For循环控制变量 初值To终值 Step步长 循环体Next循环控制变量 For Next循环结构语句的执行流程图循环次数的一般计算公式 Int 终值 初值 步长 1事先已知循环次数 则可使用For Next循环结构语句 计数循环 True ForI 2to18step3c c 1NextI计算循环次数 1 2 2 5 3 8 4 11 5 14 6 17 20 c 18ForI 2tocstep3c c 1NextI上述代码段中虽然变量c在循环体内改变 但根据For循环执行流程 循环控制变量I的终值依旧为18 并未改变 因此循环次数 6 1 2 2 5 3 8 4 11 5 14 6 17 20 18 19 20 21 22 23 24 当循环变量在循环体内被重新赋值 则会影响和改变循环次数 c 18ForI 2to18step3c c 1I I 2NextI上面循环体中 循环控制变量I被改变 所以此时会影响循环次数 循环次数 4 1 2 2 4 3 9 4 14 19 18 19 20 21 22 7 12 17 22 4 循环嵌套 DoWhile循环条件循环体Loop 在一个循环的循环体中又包含另外一个循环 Fori 1To9Forj 1To9Printi j i j NextjPrintNexti 例题4 14 打印乘法 九九表 分析 9 9的二维表 用双重循环 PrivateSubForm Click FontSize 12PrintTab 25 九九表 PrintPrint Fori 1To9PrintTab i 6 i NextiPrintForj 1To9Printj Fork 1Tojm j kPrintTab k 6 m NextkPrintNextjEndSub 内层与外层循环不得交叉 如 ForxForxForyFory NextyNextxNextxNexty正确错误内层与外层循环的循环变量名不得相同Fora 1To10Fora 5To10PrintaNextaNexta错误 注意 例4 15 用下列近似式计算Sin x 的近似值 Sin x PrivateSubCommand1 Click DimxAsSingle yAsSingle nAsInteger fAslongx Val Text1 Text n Val Text2 Text y x s 1Fori 1Tonf 1 p 1Forj 1To2 i 1f f jp p xNextjs sy y s p fNextiText3 Text yEndSub 思考题 素数问题 素数就是大家在数学中熟知的质数 即一个大于1且只能被1和它本身整除的整数输入一个正整数 判断该正整数是否为素数分析 从素数的定义出发 既然素数除了1和它本身之外 不能被任何数整除 那么就把待判断的数X依次与除了1和它本身之外的其他所有的数进行除 看是否有整除的情况 若有 表示X不是素数 否则就是素数 除数的范围i从2开始到X 1 因为一个数不可能能整除比它自身大的数 由于要对这个范围内的每一个数都进行相同的重复除操作 所以使用循环 输入一个正整数 判断该正整数是否为素数 Fori 2Tox 1 如果能被某个数据整除 x就不是素数 直接提前结束循环IfxModi 0ThenExitForNextiIfix 1 即说明x是素数MsgBoxCStr x 是素数 EndIf Fori 2Tox 1 如果能被某个数据整除 x就不是素数直接提前结束循环IfxModi 0ThenExitForNextiIfix 1 即说明x是素数MsgBoxCStr x 是素数 EndIf 输入一个正整数 判断该正整数是否为素数 实际上数学上已经证明 x不可能被大于x 2的数整除 也不可能被大于的数整除 因此上述代码可以进一步优化 减少循环判断的次数 例 输出100 200间全部素数 Forx 100to200Fori 2Tox 1IfxModi 0ThenExitForNextIifi x 1thenprintx Nextx 改进 每行输出5个Forx 100to200Fori 2Tox 1IfxModi 0Thenn n 1 ExitForNextIifi x 1thenprintx ifnmod5 0thenprintNextx 谢谢
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!