




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第4章章 基本的控制结构基本的控制结构 4.1 算法的表示算法的表示 4.2 顺序结构顺序结构 4.3 选择结构选择结构 4.4 循环结构循环结构 4.5 跳转控制跳转控制goto语句(语句(略略) 4.6 实例实例4.1 算算 法法算法算法 (algorithm):解决问题的方法和步骤。:解决问题的方法和步骤。特点特点:有穷性有穷性:算法必须在执行有穷个计算步骤后终止。算法必须在执行有穷个计算步骤后终止。 确定性确定性:算法中的每个计算步骤,必须精确定义,算法中的每个计算步骤,必须精确定义,无二义性。无二义性。 可行性可行性:算法的每一个计算步骤算法的每一个计算步骤, ,可以在有限时间内可
2、以在有限时间内完成。完成。 输入输入:算法要求有一个或多个输入信息,作为初始算法要求有一个或多个输入信息,作为初始数据。数据。输出输出:算法要求有一个或多个输出信息,是对输入算法要求有一个或多个输出信息,是对输入信息计算的结果。信息计算的结果。算法的表示算法的表示(书(书76页页 图示图示 ) 有多种表示算法的形式,如:有多种表示算法的形式,如:传统的流程图传统的流程图、自然语言、自然语言、n-s结构化流程图等。结构化流程图等。用用流程图流程图来表示算法,非常直观、形象:来表示算法,非常直观、形象:n 起止框:表示算法的开始或结束。起止框:表示算法的开始或结束。n 处理框:表示初始化或运算赋值
3、等操作。处理框:表示初始化或运算赋值等操作。 n 输入输出框,表示数据的输入输出操作。输入输出框,表示数据的输入输出操作。n 判断框:表示根据条件决定程序的流向。判断框:表示根据条件决定程序的流向。n 流程线:表示流程的方向。流程线:表示流程的方向。 示例示例1:幸运数字游戏程序幸运数字游戏程序 (lucky seven)。游戏规。游戏规则:单击则:单击“旋转旋转”按钮,右边的三个标签中会各按钮,右边的三个标签中会各出现一个数字,只要三个数字中有一个为出现一个数字,只要三个数字中有一个为“7”,窗体下方会显示出一张图片。窗体下方会显示出一张图片。 (教科书(教科书77页)页) “旋转旋转”按钮
4、按钮 算法算法设计设计开始开始产生随机数字,分别放入各标签中。产生随机数字,分别放入各标签中。标签中有标签中有7?显示图片显示图片隐藏图片隐藏图片结束结束yn4.2 顺序结构顺序结构 顺序结构是最简单、最基本的程序顺序结构是最简单、最基本的程序控制结构。类似控制结构。类似“流水账流水账” ,按语句,按语句块的顺序自上至下顺序执行。块的顺序自上至下顺序执行。例如例如:两个变量:两个变量a、b的值互相交换。的值互相交换。dim a%, b%, temp%temp=a:a=b:b=temp算法如下:算法如下:(1) 输入数据输入数据a,b (输入)(输入)(2) 交换数据(数据处理)交换数据(数据处
5、理)(3) 显示交换后的结果(输出)。显示交换后的结果(输出)。 运用运用“条件判断语句条件判断语句”。当满足某种条件时,。当满足某种条件时,执行某些语句(流程),否则程序将按照另一个执行某些语句(流程),否则程序将按照另一个流程执行。流程执行。 4.3 选择结构选择结构if then 语句块语句块1else 语句块语句块2end ifif 语句语句格式格式1:行:行 if 语句语句 if then else 行行if 语句必须在语句必须在同一行内同一行内写完。写完。例如例如:if x=y then print “x=y” else print “xy”格式格式2:二分支:二分支 if the
6、n if x = y then 语句块语句块1 print “x=y” else else 语句块语句块2 print “xy” end if end if 格式格式3:多重分支:多重分支if 条件条件1 then 语句块语句块1elseif 条件条件2 then 语句块语句块2 elseif 条件条件3 then 语句块语句块3 else 语句块语句块nend if示例示例2:单击窗体,屏幕上以红色和兰色交替显:单击窗体,屏幕上以红色和兰色交替显示示“欢迎使用欢迎使用vb编程编程”。 (参见书参见书79页页) private sub form_click() static flag as i
7、nteger 定义定义静态静态变量变量 flag cls 清除当前窗体字迹清除当前窗体字迹 if flag = 0 then form1.forecolor=vbred 窗体呈现红色字体窗体呈现红色字体 flag = 1 else form1.forecolor=vbblue 窗体呈现蓝色字体窗体呈现蓝色字体 flag = 0 end if print “欢迎使用欢迎使用vb编程编程”end sub示例示例3 :将学生成绩:将学生成绩(score)按五个等级输出:按五个等级输出:优优90-100,良,良80-89,中,中70-79,及格,及格60-69,不及格,不及格 100 如果条件变量的值
8、大于如果条件变量的值大于100case “a” to “z” 如果条件变量的值在如果条件变量的值在a到到z之间之间select case 语句语句 与与 if 语句的作用类似。语句的作用类似。示例示例4. 前面前面示例示例3的学生成绩输入与评定问题,也的学生成绩输入与评定问题,也可用可用select case语句替代语句替代 if 语句。语句。(参见书(参见书83页)页)选择结构的嵌套选择结构的嵌套 在一个选择结构中可以包含另一个选择结在一个选择结构中可以包含另一个选择结构,称为选择结构的构,称为选择结构的嵌套嵌套。例如:例如: if 条件条件 then 语句块语句块1 “语句块语句块1” 可
9、能可能包含另一个选择结构包含另一个选择结构 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,显示:
10、两个实根,显示:两个实根 d=0, 显示:两个相等的实根显示:两个相等的实根 d0, 显示:两个共轭复根显示:两个共轭复根 if a=0 then if b0 then print “有一个实根有一个实根” else b=0 if 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
11、 if end ifiif 函数函数1、iif 用于执行简单的条件判断操作。用于执行简单的条件判断操作。2、iif是是“ifthenelse” 结构的简写版本。结构的简写版本。iif函数的调用格式:函数的调用格式: 变量变量 = iif(条件条件, true部分部分, false部分部分)功能功能: 当条件成立时,变量取当条件成立时,变量取“true”部分的值,否则部分的值,否则变量取变量取“false”部分的值。部分的值。例如例如: dim a as integer, s as string 或或 dim a%, s$ a=25 s = iif(a10, “a大于大于10”, “a小于等于小
12、于等于10” )此时此时 s 的值为:的值为: s = “a大于大于10” 满足条件满足条件a10,变量,变量s 取取true部分部分4.4 循环结构循环结构 在实际应用中,有些操作(程序段)需在实际应用中,有些操作(程序段)需要要反复执行反复执行,可以使用,可以使用循环结构循环结构来实现。来实现。 for / next 结构结构 当当循环次数确定循环次数确定时,可使用时,可使用for / next 循环语句。循环语句。格式:格式:for 循环变量循环变量 = 初值初值 to 终值终值 step 步长步长 循环体循环体 (程序体程序体) next 参数说明参数说明:(1) 循环变量的循环变量的
13、初值初值、终值终值和和步长步长都必须是都必须是数值型数值型表达表达式或式或数值型数值型变量。变量。(2) 若若步长步长0,则应该初值,则应该初值 终值,循环变量递增;终值,循环变量递增; 若若步长步长 终值,循环变量递减;终值,循环变量递减; 若若步长步长=1,循环变量递增为,循环变量递增为1,此时,此时步长步长可以省略可以省略。for / next 循环结构循环结构 流程图流程图(书(书85页)页)示例示例6:计算阶乘计算阶乘 n!计算阶乘的常用方式(计算阶乘的常用方式(常用定式常用定式)方法方法1. 从从文本框文本框获取输入数据获取输入数据n:dim n as integer, i as
14、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 integer, i as integer dim item% n = inputbox(“请输入一个
15、整数请输入一个整数” ; “计算阶计算阶乘乘”) item = 1 for i = 1 to n item = item * i next i print n; “! =”; item end subdo / loop 语句语句 循环次数不确定循环次数不确定,但已知循环开始或结束,但已知循环开始或结束的条件,可使用的条件,可使用 do / loop 语句实现循环。语句实现循环。 格式格式1:先判断条件,后执行循环体:先判断条件,后执行循环体 do while|until 循环体(语句块)循环体(语句块) loop格式格式2:先执行循环体,后判断条件:先执行循环体,后判断条件 do 循环体(语句
16、块)循环体(语句块) loop while|until 格式说明格式说明(详见书详见书86页页 图图4-9)while : 当满足条件时,当满足条件时,执行执行循环。循环。until : 当满足条件时,当满足条件时,跳出跳出 (结束结束) 循环。循环。 循环体中循环体中必须有必须有使使循环条件循环条件的的逻辑值逻辑值发发生生变化变化的语句,否则程序将进入死循环,的语句,否则程序将进入死循环,“永无止境永无止境”。 计算累加值计算累加值的常用定式:的常用定式: sum=0 sum = sum +累加项累加项最后得到的最后得到的 sum 即为累加结果。即为累加结果。示例示例7:求求 1+2+100
17、 的累加值。的累加值。方法方法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 语句块语句块 wend例例:倒计时倒计时(书(书88-89页)页)sub for
18、m_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)开始
19、循环:开始循环: - 先计算相应阶乘先计算相应阶乘 i !(item=item*i) - 再计算相应累加再计算相应累加 sum = sum + ( 1 / i! )(2) 结束循环。结束条件结束循环。结束条件: (1 / i! ) = 0.000001 item = item * i sum = sum + (1 / item) i = i + 1 loop print “自然对数近似值自然对数近似值:”; sum, “累加项数累加项数:”, i-1end sub从循环体中退出:从循环体中退出:exit 语句语句 根据需要,可以在不满足条件时,中途强迫循根据需要,可以在不满足条件时,中途强迫循
20、环结束,直接退出。环结束,直接退出。用用 exit 语句可以直接退出语句可以直接退出for循环、循环、do循环。循环。do while | until条件条件 语句序列语句序列 exit do 语句序列语句序列loopfor 循环初值循环初值 to 终值终值 step 语句序列语句序列 exit for 语句序列语句序列 next 循环控制变量循环控制变量循环嵌套循环嵌套(参见书(参见书91页页 图图4-11)1、一个循环体内可以包含其它选择结构或循、一个循环体内可以包含其它选择结构或循环结构。环结构。2、内外循环体不能交叉。、内外循环体不能交叉。3、内循环体可跳出来,外循环体不能跳进去。、内
21、循环体可跳出来,外循环体不能跳进去。4、并列的若干循环体彼此不能互相跳转。、并列的若干循环体彼此不能互相跳转。5、先执行内循环,再执行外循环。、先执行内循环,再执行外循环。6、注意循环结构的完整性。、注意循环结构的完整性。每个每个for与与next、 do与与loop、 while与与wend 要要配对配对。 示例例9:在窗体上用:在窗体上用“ * ”打印菱形。打印菱形。(参见书(参见书91页)页)算法安排:算法安排: - 根据行数,确定在该行输出根据行数,确定在该行输出“ * ”的数量。的数量。 - 确定每行第一个确定每行第一个“ * ”出现的位置。出现的位置。 - 换行,准备在下一行输出换
22、行,准备在下一行输出“ * ”。private sub form_click() dim i%, j%, k% currenty = 1000 for i = 1 to 9 共打印共打印9行行 if i =2:标签显示:标签显示“已超时,请退出程序!已超时,请退出程序!” 文本框设为不可用(文本框设为不可用(enabled=false) 若若a= 2 then label2.caption = “已超时,请退出程序!已超时,请退出程序!” text1.enabled = false else label2.caption = “密码不对,请再输入一遍!密码不对,请再输入一遍!” text1.t
23、ext = “” a = a + 1 输入输入密码次数加密码次数加1 end if end if label2.visible = true end ifend sub4.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 “偶数和为偶数和为=”; sum 100:语句标号语句标号end sub on goto 语句语句 格式:格式:on goto |功能:根据功能:根据“数值表达式数值表达式”的值,把控制转移到几个指定的的值,把控制转移到几个指定的语句行中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025企业软件外包合同
- 2025建筑室内设计合同协议书范本
- 2025年北京房屋买卖合同范本
- 2025合同法深度解析:无固定期限合同条款详解
- 苏州工业园区翰林小学等苏教版三年级数学下册单元试卷15份
- 二零二五版地质勘察技术服务合同
- 二零二五二手房公积金贷款买卖合同书
- 水田承包使用权转让合同书二零二五年
- 二零二五海外工程项目投标策略及合同管理
- 二零二五家庭居室装饰装修合同书
- 动物类-中药鉴定课件
- 沪教2011版五年级美术下册《装点我们的生活》评课稿
- 股东出资协议书(公司未成立之前注册股期股回购)
- 21 青蛙卖泥塘(一等奖创新教案)
- 《矿业权评估指南》
- 专题01《水银花开的夜晚》 高考语文二轮复习
- 电工日常巡视维修工程记录
- GB/T 14388-1993木工硬质合金圆锯片
- 二月份循证护理查房课件
- JJF(湘) 09-2018 纯水-超纯水系统监测仪表(电导率)计量校准规范-(高清现行)
- 大一下【世界古代史】期末复习资料
评论
0/150
提交评论