内容正文:
模块4 程序设计结构
学习目标
认识程序流程图
掌握不同程序设计结构的格式
能够选择合适的程序设计结构来解决实际问题
任务1 认识流程图
任务要点
认识程序流程图
知道流程图中符号的含义
3
任务1 认识流程图
案例4-1:求一个数的平方。
用户单击窗体,在输入框中输入一个数,如图4-1所示,然后将这个数的平方打印在窗体上,如图4-2所示。
图4-1 输入一个数
图4-2 打印这个数的平方
4
任务1 认识流程图
案例4-1:求一个数的平方。
案例分析:这是一个简单的小案例,由于是单击窗体触发程序运行,因此代码写在窗体的单击事件中。先利用InputBox函数获取一个数,再计算出这个数的平方,最后将这个数的平方打印在窗体上。
任务1认识流程图
内容讲解
描写算法的方法有很多,使用程序流程图表示算法可以使程序的结构清晰直观。程序流程图使用若干规定的图框来表示算法,框内简要说明具体操作内容,用流程线条表示先后顺序。表4-1列出了ANSI(美国国家标准协会)规定的一些常用的程序流程图符号及其含义。
内容讲解
表4-1 流程图中的符号及其含义
图形符号 名称
开始/结束框
处理框
判断框
输入/输出框
流程线
显示
预定义过程
任务1 认识流程图
任务1 认识流程图
案例4-1:求一个数的平方。程序流程图如图4-3所示:
求这个数的平方
开始
获取一个数
打印
结束
图4-3 案例4-1的程序流程图
任务2 运用顺序结构
任务要点
掌握顺序结构的程序流程图
能够利用顺序结构解决实际问题
案例4-2:求圆的面积。
要求:先在文本框中输入圆的半径,单击“计算”按钮后计算圆的面积,最后将此面积在标签中显示出来。运行界面如图4-4所示。
任务2 运用顺序结构
图4-4 “求圆的面积”运行界面
10
案例4-2:求圆的面积。
案例分析:这是一个典型的顺序结构的案例。必须先输入圆的半径,再单击“计算”按钮,然后才能计算圆的面积,最后将面积显示出来,这个顺序不能有一丝改变,否则程序便会出错。
任务2 运用顺序结构
11
任务2 运用顺序结构
案例4-2:求圆的面积。
内容讲解
1.顺序结构是按照程序或程序段书写顺序执行的语句结构,是最基本的一种结构,它表明了事情发生的先后顺序。在日常生活中有很多这样的例子,比如在淘米煮饭的时候,总是先淘米,然后才煮饭,不可能是先煮饭后淘米。
2.顺序结构流程图如图4-5所示:
语句2
语句1
图4-5 顺序结构流程图
12
课堂小练手
4-1:设计程序,求解y=a+b*c,a、b、c由用户输入。
任务3 运用分支结构
任务要点
掌握If语句
掌握Select Case语句
任务3 运用分支结构
一、If语句
案例4-3:运用If语句放大图片。
要求:利用单分支结构 If…Then…实现单击图片放大,直至完全显示。如图4-6所示。
图4-6 运行界面
任务3 运用分支结构
一、If语句
案例4-3:运用If语句放大图片。
案例分析:这是一个单分支结构程序,单击图片时进行判断,如果图片的宽度和高度没有达到最大值,则每次在原有的基础上增加一定值,此时需要事先知道图片的大小,才能进行正确判断。
任务3运用分支结构
一、If语句
内容讲解:
单分支结构最简单的分支结构,它只对满足条件的情况进行处理,对不满足条件的情况置之不理。
1.单分支结构的格式
格式1:If<条件>Then<语句组>
格式2:If<条件>Then
<语句组>
End If
任务3 运用分支结构
一、If语句
内容讲解
2.说明
(1)条件可以是关系表达式、逻辑表达式或算术表达式。
(2)若条件为True,则执行语句组,否则,不执行任何操作。
(3)语句组可以是单条语句,也可以是多条语句,若多条语句写在同一行应以冒号分开。
(4)单分支结构流程图
课堂小练手
4-2:设计程序,判断成绩,如果大于90,则显示“成绩优秀,望保持!”
任务3 运用分支结构
一、If语句
案例4-4:运用双分支结构放大图片。
要求:利用双分支结构 If…Then…Else…End If实现单击图片放大,当图片已经完全显示时,则不再继续放大,而是向用户给出提示“图片已经完全显示”,如图4-8所示。
图4-8 运行界面
任务3 运用分支结构
一、If语句
案例4-4:运用双分支结构放大图片。
案例分析:案例4-3中单击图片放大,但是对图片已经完全显示的情况没有给出处理方法,用户继续单击图片,没有反应。为了使程序更人性化,此例中我们考虑到图片完全显示的情况,及时向用户给出提示。这就需要双分支结构来完成。
任务3运用分支结构
一、If语句
案例4-4:运用双分支结构放大图片。
内容讲解:双分支结构最较常见的分支结构,它对一个条件成立与否的两种情况都做出了处理,比较符合人们的认知逻辑。
1.双分支结构的格式
格式1: If<条件>then<语句组1> Else<语句组2>
格式2:If<条件>Then <语句组1>
Else<语句组2>
End If
任务3运用分支结构
内容讲解:
2.说明
(1)若条件为True,则执行语句组1,否则,执行语句组2。
(2)双分支结构流程图如图4-9所示:
图4-9 双分支结构流程图
条件
语句组1
T
F
语句组2
一、If语句
案例4-4:运用双分支结构放大图片。
课堂小练手
4-3:设计程序,由用户输入两个数,输出其中较大的数。
小贴士:
这个练习还可以用条件函数IIf来实现,条件函数IIf用来实现简单的选择结构。其格式为:
IIf(<测试表达式>,<真值部分>,<假值部分>)
对测试表达式进行判断,如果成立,返回真值部分,否则返回假值部分。
假设用户输入的两个数分别为a和b,将其中较大的数赋给c,则c = IIf(a > b, a, b)。
任务3运用分支结构
一、If语句
案例4-5:从列表中选择要观看的电影,点击“确定”按钮后将提示到指定的放映厅观影,利用多分支结构 If…Then…ElseIf…Then…实现,如图4-10所示。
图4-10 运行界面
任务3运用分支结构
一、If语句
案例4-5:从列表中选择要观看的电影。
案例分析:很多时候,需要判断的条件可能出现的情况分支并不只有一个或两个,而是有很多。比如此案例,可供选择的电影有4个,因此就需要进行多次判断,对每个情况分别做出处理,这就需要多分支结构来实现。
任务3运用分支结构
一、If语句
案例4-5:从列表中选择要观看的电影。
内容讲解:
1.多分支结构的格式
If<条件1>Then<语句组1>
ElseIf<条件2> Then<语句组2>
…
ElseIf<条件n> Then<语句组n>
[Else<语句组n+1>]
End If
任务3运用分支结构
一、If语句
案例4-5:从列表中选择要观看的电影。
内容讲解:
2.多分支结构说明
(1)执行的时候,首先判断<条件1>,若<条件1>为True,则执行<语句组1> ;否则如果<条件2>为True,则执行<语句组2> ;依此类推 ,否则如果<条件n>为True,则执行<语句组n> ;否则执行<语句组n+1> 。
任务3运用分支结构
图4-11 多分支结构流程图
一、If语句
案例4-5:从列表中选择要观看的电影。
内容说明:
2.说明
(2)多分支结构流程图如图4-11所示:
条件1
语句组1
T
F
条件2
T
语句组2
F
条件n
T
语句组n
F
……
……
F
语句组n+1
课堂小练手
4-4:设计程序,给出一个不多于6位的整数,求出它是几位数。运行效果图可参考图4-12所示:
图4- 12 课堂小练手运行效果参考图
任务3运用分支结构
二、 Select Case语句
案例4-6:设置程序,用于提醒今天星期几。
利用多分支结构 Select…Case…实现在标签上显示当前日期,单击“星期”按钮,则显示此日期对应星期几,如图4-13所示。
图4-13 运行界面
任务3运用分支结构
二、 Select Case语句
案例4-6:设置程序,用于提醒今天星期几。
案例分析:众所周知,一个星期有七天,因此这个案例中的条件就有七种情况需要考虑。此案例用If…Then…ElseIf…Then…结构也可以实现,但是书写代码相当繁琐,还容易出错,也不易于理解,对待这样多个分支的问题我们还有一个选择便是“Select…Case…”结构,而且在一定程度上,此结构更清晰,易于理解。
任务3运用分支结构
二、 Select Case语句
案例4-6:设置程序,用于提醒今天星期几。
小贴士:
本程序,使用了几个关于日期和时间的函数。
Weekday(Now):今天是星期几。
Year(Now):今天的年份。
Month(Now):今天的月份。
Day(Now):今天的日期。
任务3运用分支结构
二、 Select Case语句
案例4-6:设置程序,用于提醒今天星期几。
内容讲解:
1. Select Case多分支结构的格式
Select Case <测试表达式>
Case <表达式列表1>
<语句组1>
Case <表达式列表2>
<语句组2>
……
Case <表达式列表n>
<语句组n>
[Case Else
<语句组n+1>]
End Select
任务3运用分支结构
二、 Select Case语句
内容讲解:
2.说明
(1)Select Case结构的执行过程是:将<测试表达式>的值与Case后面的<表达式列表>进行比较,选择与其匹配的分支,并执行其后面的语句组,然后跳出Select Case分支结构,执行下面的程序代码。
(2)每个Case语句出现的次序不影响执行结果。
(3) <测试表达式>是数值型或字符串型表达式。
任务3运用分支结构
二、 Select Case语句
案例4-6:设置程序,用于提醒今天星期几。
内容讲解:
(4)表达式取值必须与测试内容的取值类型一致,表达式列表有以下3种书写方式:
方法1:<表达式1>,<表达式2>,…,<表达式n>
方法2:<表达式1> To <表达式2>
方法3:is<比较运算符><表达式>
任务3运用分支结构
图4-14 Select Case分支结构流程图
二、 Select Case语句
案例4-6:设置程序,用于提醒今天星期几。
内容讲解:
(5) Select Case分支结构流程图如图4-14所示:
表达式列表1
语句组1
T
F
T
语句组2
F
T
语句组n
F
……
……
F
语句组n+1
测试表达式
表达式列表2
表达式列表n
课堂小练手
4-5:设计一个程序,根据儿童身高来判断买火车票的优惠程度。当儿童身高低于1.2米免费乘车,介于1.2米与1.5米之间半价乘车,高于1.5米全价乘车。
任务4运用循环结构
任务要点
掌握For…Next循环
掌握Do…Loop循环
任务4运用循环结构
一、 For…Next循环
案例4-7:单击窗体,打印三角形。
案例分析:
打印一个由“*”组成的直角三角形,共8行,第一行1个“*”,以后每行“*”的个数依次增加1个。也就是说行数从1~8, “*”的个数依次也是从1~8,每行的操作都相同,都是打印“*”。对于这种重复性的操作,利用 For…Next循环就可以轻松完成,关键在于找到每行“*”的个数与行数之间的关系。
图4-15 运行界面
任务4运用循环结构
一、 For…Next循环
案例4-7:单击窗体,打印三角形。
内容讲解:
1. For…Next循环结构的格式
For <变量> = <初值> To <终值> [Step <步长>] [Exit for]
<语句组>
Next <变量>
任务4运用循环结构
一、 For…Next循环
案例4-7:单击窗体,打印三角形。
内容讲解:
2.说明
(1)首先循环变量被赋初值,然后与终值比较。当步长为正且变量小于终值或步长为负且变量大于终值时,重复执行语句组,即循环体,否则退出循环,执行下面的语句。每次执行完循环体,循环变量按步长增加或减少。
(2)步长为1时可以省略不写。
(3)Exit for语句的作用是强制退出循环,可以省略。
图4-16 For…Next循环结构流程图
任务4运用循环结构
一、 For…Next循环
案例4-7:单击窗体,打印三角形。
内容讲解:
2.说明
(4)For…Next循环结构通常用于循环次数可定的循环语句。其循环结构流程图如图4-16所示:
变量与终值比较
语句组
T
F
变量值加步长
变量=初值
课堂小练手
4-6:利用循环语句,求1~10之间偶数的和。
任务4运用循环结构
二、Do While…Loop循环
案例4-8:设计一个摇奖装置。
这个摇奖装置通过一个水平滚动条来给出中奖号码的数目n,单击“抽奖”按钮,随机产生n(1≤n≤10)个数的中奖号码,如图4-17所示。
图4-17 运行界面
任务4运用循环结构
二、Do While…Loop循环
案例4-8:设计一个摇奖装置。
案例分析:这是一个循环案例,当满足重要条件时,执行循环体中的语句。既然是循环结构,就要确定循环体是什么。在这个案例中,循环体中要执行的操作是随机产生一个个位数。产生个位数的数目由循环变量即中奖号码位数决定。当循环变量小于等于号码位数时,不断产生个位数,然后将这个个位数转换为字符串与号码连接起来,最终将这个号码显示在文本框中。
任务4运用循环结构
二、Do While…Loop循环
案例4-8:设计一个摇奖装置。
小贴士:
Rnd是随机函数。
Rnd本身返回一个大于或等于0,但小于1的随机数,它往往要与某些数字相乘或相加后使用,使产生数字的范围符合一定的要求。比如:9 * Rnd的意思是产生一个0~9之间的随机数,即个位数。
如果要产生一个1~3之间的随机数,可以写成:3 * Rnd + 1。
任务4运用循环结构
二、Do While…Loop循环
案例4-8:设计一个摇奖装置。
内容讲解:
1. Do While…Loop循环结构的格式
Do While <条件>
<语句组>
Loop
任务4运用循环结构
二、Do While…Loop循环
案例4-8:设计一个摇奖装置。
内容讲解:
2.说明
(1) Do While…Loop循环结构又称为“当型循环”,即当满足一定条件时,执行某些操作。
(2)先判断条件,当条件为True时,执行语句组,否则退出循环,执行下面的语句。
(3) Do While…Loop循环结构通常用于循环次数不定的循环语句。
图4-18 Do While…Loop循环结构流程图
任务4运用循环结构
二、Do While…Loop循环
案例4-8:设计一个摇奖装置。
内容讲解:
2.说明
(4)Do While…Loop循环结构流程图如图4-18所示:
条件
语句组
T
F
课堂小练手
4-7:打印1~100之间能被7整除的数,运行界面可参考图4-19。
图4-19 运行界面
任务4运用循环结构
三、Do…Loop While循环
案例4-9:输入学生5门课程的成绩,并求平均成绩。
用户单击窗体时弹出输入框,可以输入学生5门课程的单科成绩,并将单科成绩打印出来,输入完成将显示出这5门课程的平均成绩。运行界面如图4-20所示。
图4-20 运行界面
任务4运用循环结构
三、Do…Loop While循环
案例4-9:输入学生5门课程的成绩,并求平均成绩。
案例分析:首先要确定循环变量的范围为5门课程,故循环变量可以设置为从0~4;其次要确定循环体,很明显能看出来这个案例中重复进行的操作是接收输入的学生单科成绩和打印单科成绩,再仔细分析,其中还隐含着将这5门单科成绩相加的操作,以便于用总成绩来求平均成绩。
任务4运用循环结构
三、Do…Loop While循环
案例4-9:输入学生5门课程的成绩,并求平均成绩。
内容讲解:
1. Do…Loop While循环结构的格式
Do
<语句组>
Loop While <条件>
任务4运用循环结构
三、Do…Loop While循环
案例4-9:输入学生5门课程的成绩,并求平均成绩。
内容讲解:
2.说明
(1)先执行一次语句组,然后再判断条件,当条件为True时,继续执行语句组,否则退出循环,执行下面的语句。
(2)Do…Loop While循环结构也是“当型循环”,它与Do While…Loop循环结构的区别在于,是先判断条件还是先执行语句组。
图4-21 Do…Loop While循环结构流程图
任务4运用循环结构
三、Do…Loop While循环
案例4-9:输入学生5门课程的成绩,并求平均成绩。
内容讲解:
2.说明
(3)Do…Loop While循环结构流程图如图4-21所示:
条件
语句组
T
F
课堂小练手
4-7:求10!的值。
提示:10!=10×9×8×7×6×5×4×3×2×1。
任务4运用循环结构
四、循环嵌套
案例4-10:打印九九乘法表。运行界面如图4-22所示。
图4-22 乘法表运行界面
任务4运用循环结构
四、循环嵌套
案例4-10:打印九九乘法表。
案例分析:这是一个双重循环的案例,外层循环控制打印行数,内层循环控制每行打印的列数。通过观察总结行与列之间的数值关系,发现行数从1~9,而列数是每个行数的值。循环体的语句就是打印乘法表的内容,虽然只有一条语句,却要经过仔细的分析才能得到,因为这里涉及乘法表的间隔问题。
任务4运用循环结构
四、循环嵌套
案例4-10:打印九九乘法表。
内容讲解:
1.一个循环体内又包括另外一个完整的循环体结构,即为循环的嵌套。
2.内层循环和外层循环的变量不能同名,并列的循环变量可以同名。
3.循环层次要清晰,内外循环不能交叉。
课堂小练手
4-9:打印“数学金字塔”。运行界面如图4-23所示。
图4-23 程序运行界面
敬请指正
$$