《2.2程序的顺序结构》 
一、教材分析 
粤教版《算法与程序设计》(选修1)第二章第二节《程序的顺序结构》主要介绍了如何使用顺序控制结构解决现实中简单的问题的思维过程,讲述了利用赋值语句和输入语句功能将外界数据输入程序内部并保存的方法,讲述了输出语句的功能用法。涵盖了变量存储及引用的特点、数据类型转换的方法、不同数据类型数据输出特点、数据输出格式控制、整除运算等知识点。 
本节的作用和地位 
通过本节的学习,让学生掌握VB语言中的赋值语句和输入输出语句,学会使用程序设计语言实现顺序控制结构,解决简单的问题,并初步掌握调试、运行程序的方法。本节课在整个程序设计的学习过程中起到一个承前启后的作用,“前”是对语句、语法使用的深化认识,“后”是指程本节内容为后续选择结构、循环结构的学习打下了基础。 
二、学情分析 
本课的学习对象是高一年级学生,在本节课前,他们已经接触了VB程序设计语言的部分内容,对VB程序的编辑界面和程序代码都不陌生,已经消除了对程序设计的神秘感。他们现阶段具备的逻辑思维、分析问题、表达思想等能力及掌握的数学知识已经能够支撑起其对程序代码寓意的理解。同时,在本节内容前学生已学习了VB程序设计环境、变量、赋值语句、算术表达式等知识已经为本节内容奠定了基础。这样一来,掌握本节的知识难度相对不大。 
由于本模块前期内容侧重于知识及思路方面内容的传授,学生没有亲历程序的设计过程,而本节内容是学生第一个规划设计的程序,在设计过程中容易陷入迷茫,无所适从,无从下手,故此在授课过程中应注重对学生思路的引导,加强对设计环节中细节的把握。 
三、教学目标 
1、知识与技能: 
①、了解顺序结构程序的特点,掌握程序设计的基本思路 
②、理解VB语言中赋值语句和输入输出语句的功能和格式。 
③、能够编写简单的顺序结构的程序,以解决生活中的一些计算问题 
2、过程与方法: 
本节采用“任务驱动教学法”,从“测量不可抵达物体高度”问题入手,引导学生体验程序的设计过程,在过程中渗透赋值语句和输入输出语句的学习,通过调试、单步运行程序的操作让学生了解顺序结构的特点。通过解决问题的思路让学生明了解析法的思路。通过观察分析运行结果让学生认识到数据需划分类型的必要性,通过表达式的设计让学生体验智慧的魅力,激发参与的兴趣。 
3、情感态度与价值观: 
①、培养学生初步的程序设计思维,形成辩证思想的模式。 
②、培养学生发现问题、思考问题和解决问题的习惯,树立策略优化的意识。。 
四、教学重点和难点 
(1)重点:VB语言中的赋值语句和输入输出语句的功能与格式。 
(2)难点:1、变量赋值的特点 
2、Inputbox()函数返回数据的数据类型 
五、教学方法 
任务驱动法、诱思导学法、实践探究法、类比推理法 
六、教学准备 
1、多媒体网络教室;2、LearnSite网络教学平台; 3、VB6.0软件;4、自制的教学课件 
七、教学时间 
1课时 
八、教学过程 
环节 
名称 
用时 
教学设计 
设计 
意图 
导入 
2分钟 
师:在前几次的课程中我们了解了关与程序设计的一些知识,但是我们还没有机会亲手编写一个完整的程序,今天这节课我们就一起来实现这个目标。请大家观看屏幕上的图片,(稍顿)知道这是哪座建筑物吧? 
生:埃及金字塔 
师:是的,金字塔。假设现在我就在这座金字塔附近,我想知道这座金字塔的高度,咱们同学们有没有办法帮我精确地测出它的高度来? 
生:…… 
师:刚才的方法基本上都不完善,要么得到的结果不精确,不符合需要,要么方法不具备可行性,其主要原因是金字塔底部的测量点我们无法到达。这节课我给同学们介绍一种测量不可抵达物体的高度的方法 
建立 
情境 
引出 
问题 
需求 
呈现 
问题 
中数 
学关 
系的 
形成 
过程 
展现 
算法 
步骤 
的形 
成过 
程 
6分钟 
 (PPT按逻辑顺序展示测量不可抵达物体的高度的理论依据:) 
在水平面上选取一条与N点处在同一直线的线段AB作为基线,AM与AN之间的夹角为仰角α,BM与BN之间的夹角为仰角β,AB长度a、AM与AN之间的夹角α和BM与BN之间夹角β都可以通过测量得到。 
师:借助这三个量,我们如何能把MN的值求出来?大家彼此讨论一下 
生:(讨论) 
师:稍停,哪位同学来分享一下自己的思路? 
生:........ 
师:这位同学的思路很准确,总结一下他的思路,大致是这样 
师:通过同学们的努力,我们得到了一个核心公式:MN=a/(1/ tanβ-1/ tanα)。 
师:这样一来,一个具体的现实问题就转化成了一个单纯的数学问题。刚才我们进行的就是程序设计过程中的分析问题的环节 
师:从过往的学习经历中我们了解的程序设计的一般过程是哪几步? 
生:... 
师:既然编程方向有了,分析问题过程已完成,下一步我们该设计算法了 
师:我们需要的结果要从这个关系式得出,使用这个式子时需要我们首先明确哪些值? 
生:确定两个仰角和一条线段的值 
师:这是第一个步骤,第二步呢? 
生:将值代入刚才的公式进行计算 
师:第三步呢? 
生:…… 
师:在现实中,到了第二步就应该结束了,但在编程中则不行,因为经过计算得到的结果还存在计算机内部,我们看不到,还需要让计算机把结果显示出来。所以第三步是输出结果。 
师:这样我们就可以确定了解决这个问题的算法了。 
1、输入基线a的长度和仰角α、β的值 
2、计算1/ tanβ、1/ tanα 
3、计算MN的值 
4、输出结果 
呈现 
具体 
问题 
转化 
数学 
问题 
过程 
为解 
析法 
概念 
的形 
成埋 
下伏 
笔 
回顾 
知识 
引导 
编写 
代码 
思路 
4分钟 
师:算法确定后,我们就该进行程序设计过程的第三个环节了-编写程序了。过往的课程中我们没有编过程序,该如何入手呢?在这我们不妨借鉴一下上次课的一个案例。看看程序中有哪些内容需要我们考虑? 
师:既然一个完整的程序分成这四部分,我们编只要逐一做好数据的说明输入、处理计算以及输出工作就可以了。首先根据关系式我们来看这个问题中有哪些量需要说明? 
生:基线a的长度和仰角α、β的值。 
师:这些值只是初始值,中间的两个余切值和最后的结果值不用说明吗? 
生:用 
师:所以我们要进行说明的量共有六个,请看常量和变量的说明语句。通过语句格式可知:常量、变量说明的工作不仅要定义它们的名称,还要指明其数据类型及值。现在用A、J1、J2、COT1、COT2、MN这六个变量来存放上面六个量的值。根据它们的取值范围,这六个变量的数据类型都应该为单精度类型。在此提醒一句,由于正切函数中参数用到的是弧度值,计算弧度要用Π值,而Π值为定值,所以最终要声明的量是七个:六个变量,一个常量。 
展现数据说明部分代码 
回顾 
借鉴 
上节 
知识 
知旧 
引新 
形成 
数据 
说明 
代码 
自主 
学习 
赋值 
语句 
6分钟 
数据说明部分完成后,下面就该处理数据的输入和处理了。 
任务1:赋值语句 
师:登录LearnSite学习网站,进入我的学案。点击学案“程序的顺序结构”处的链接。在学案界面按照提示进行操作。 
生:(自主学习)…… 
师:好了,请抬起头来。通过刚才的学习,我们发现了变量赋值的一些特点,让我们一起来看看变量赋值有哪些特性。 
师:1、变量中的值被引用后,其值保持不变 
2、变量被重新赋值后,其总保持最后一次被赋予的值 
实际不给变量赋值以及引用变量值的状况类似于我们生活中常见的印章的使用,赋值=》空白印章上刻字,值的引用=》盖印,重新赋值=>重新刻字。 
通过刚才的学习,我们应该意识到时赋值语句在给变量赋值的同时,还具备数值计算功能,计算功能仅能完成数据的处理工作,我们还学习输入数据的语句。 
利用 
互联 
网+ 
技术 
进行 
高效 
学习 
为 
形成 
数据 
输出 
代码 
铺垫 
自主 
学习 
输入 
函数 
10分钟 
任务2:输入数据的函数inputbox 
师:点击段落后方的“输入数据的函数inputbox.PPT”链接,将本部分的PPT资源下载,保存至本地磁盘。用PowerPoint打开,按功能键F5进行播放,进行InputBox()函数的学习。。 
生:(自主学习)…… 
师:好,请抬起头来。下面我们来看一下在使用InputBox()函数时应该注意的问题。 
使用InputBox( )函数时就注意的问题: 
X=InputBox( "提示信息","标题",默认值,坐标位置) 
1、如果函数中有缺省内容,对应位置的间隔符","不能缺少! 
 例:A=InputBox(“A的值为”, , ,300,90) 
 提示信息 标题 默认值 坐标位置 
 2、 InputBox()函数将接收的数据默认为字符型数据! 
例:Age=InputBox("请输入你的年龄:", "调查", 18) 
 当该语句被执行时,单击“确定”按钮后,Age的值为字符串“18” 
观察下面三组代码执行后的结果 
思考:为什么会出现这种现象? 
代码1 
Private Sub command1_click() 
A = InputBox("A=", "输入A的值") 
B = InputBox("B=", "输入B的值") 
A = A + B 
Print "代码1的结果为"; A 
End Sub 
代码2 
Private Sub command1_click() 
A = Val(InputBox("A=", "输入A的值")) 
B = Val(InputBox("B=", "输入B的值")) 
A = A + B 
Print "代码2的结果为"; A 
End Sub 
代码3 
Private Sub command1_click() 
Dim A As Integer, B As Integer 
A = InputBox("A=", "输入A的值") 
B = InputBox("B=", "输入B的值") 
A = A + B 
Print "代码3的结果为"; A 
End Sub 
程序运行时:两次分别输入123,456 
在刚才的过程中,我们观察到结果分别为: 123456、579、579,明明输入数据相同,为何会出现两种不同的反馈?大家互相讨论一下。 
对比三组代码,区别在于两处,1、2之间差别是2中使用了VAL()函数。VAL()函数的功能是将数字符号转化成对应数值,Inputbox()函数返回的是字符串。代码1、2中给A、B变量赋值时一组赋的是字符串类型,一组赋予的是数值类型。由此可见当变量没说明进行使用时,其数据类型取决于其第一次赋予的数据。1、3之间差别是1中变量没说明就直接用了,3中变量是先说明后使用的,正因为第3组代码中变量声明过了,所以当赋给不相符的数据类型时,系统会自动将数据转换成相符的类型。从而证明,对数据进行说明是有助于避免程序出错。 
输入函数和赋值语句有了,数据输入和处理部分的代码也就手到擒来了。 
数据输入部分的代码: 
A=Inputbox("基线A=","输入基线A的长度") 
J1=Inputbox("仰角α=","输入仰角α的弧度值") 
J2=Inputbox("仰角β =","输入仰角β的弧度值") 
数据处理部分的代码: 
Cot1=1/Tan(J1*Pi/180) 
Cot2=1/Tan(J2*Pi/180) 
Mn=A/(Cot2-Cot1) 
利用 
互联 
网+ 
技术 
进行 
高效 
学习 
形成 
数据 
输入 
处理 
代码 
自主 
学习 
输出 
语句 
3分钟 
下面我们来看如何将数据进行输出。 
任务3:输出语句print 
师:点击段落后方的“输出语句print.PPT”链接,将本部分的PPT资源下载,保存至本地磁盘。用PowerPoint打开,按功能键F5进行播放,进行输出语句Print的学习。 
生:(自主学习)…… 
师:好了,请抬起头来。下面我们来总结一下输出语句print的用法。 
格式:Print 输出内容[,输出内容][,输出内容][,输出内容][,……] 
输出内容可以是数、变量、表达式,也可以是用双引号括起来的字符串。输出内容可以是一项,也可以是多项。 
 多项输出格式有2种: 
 1.输出项目间用逗号隔开为分区输出格式 
 2.输出项目间用分号隔开为紧凑输出格式 
有了输出语句 数据输出部分的代码就水到渠成了。 
数据输出部分的代码 
Print "被测物的高度为";Mn;"米" 
现在,各组成部分的代码已经齐备了,只须将各部分代码按照其逻辑顺序汇总一起,就形成了整个程序的代码。 
如图所示: 
利用 
互联 
网+ 
技术 
进行 
高效 
学习 
形成 
数据 
输出 
代码 
录入 
代码 
2分钟 
代码编写完毕,还要将其输入计算机。 
构建程序界面、输入程序代码: 
打开VB程序界面,将窗体调整至合适大小。在窗体内添加一个命令按钮(CommandBox1),双击CommandBox1按钮,将网站上“代码资源”处提供的代码复制至 Private Sub command1_click() 和 End Sub 两行之间。 
运行 
调试 
程序 
8分钟 
师:代码已经输入完成,下面就要进行调试过程了。我们想一下,调试工作的目的是什么? 
生:...... 
师:对。调试工作额两个目的:1、检查程序代码中的语法错误;2、检查程序的功能性错误。对应方法是:1、单词拼写之类的错误在编辑期间系统能查出报错,其他错误在程序运行时会自动报错。2、用测试数据验证。下面你运行一下程序,看看它能不能实现设计功能?a、α、β的取值分别为20、38.4、22.8 
生:(尝试运行) 
师:结果出来没有?报一下你得到的数值。 
生:...... 
师:下面你再运行一次程序,a值不变,α、β的值 互换。告诉我运行后的现象。 
生:...... 
师:结果是负值了,这明显不对,为什么呀? 
生:.... 
师:由于几何原理的原因,这里角α、β之间隐藏了一个约束关系,角α永远大于角β,我们程序中没有体现出这层关系,所以我们的程序是有缺陷的。如何能避免这种情况,我们下节课解决。 
师:在刚才的调试过程,程序代码一下子就执行完了,我们无法观察到过程中变量的值是如何变化的。现在我来介绍一种方法,用这种方法可以观察到时程序运行期间变量值的变化情况: 
教师演示单步执行代码,监控程序运行过程的方法: 
1、在代码中选中要监控的表达式,打开VB界面“调试”菜单,选择“快速监视”,将要监控的表达式逐一添加。 
2、打开“调试”菜单,选择“逐语句”,然后单击命令按钮执行程序,出现黄色提示后,继续按功能键F8可执行后续代码,同时在监视窗口内可观察到表达式值的变化。 
(单步执行程序代码) 
师:同学们观察一下目前变量A、B的值与初始值有什么变化? 
生:A、B的值发生了互换 
师:对,这就是用中间变量法来交换两个变量的值 。再继续看 
(单步执行程序代码) 
师:再观察一下目前变量A、B的值与初始值有什么变化? 
生:A、B的值又发生了互换 
师:是的,这就是用数学法来交换两个变量的值 
掌握 
调试 
方法 
通过 
引入 
单步 
调试 
方法 
铺垫 
顺序 
结构 
概念 
形成 
教师 
总结 
本节 
概念 
1分钟 
师:我再运行一次程序,你们观察程序代码执行的先后顺序,它有什么规律? 
生:程序是按语句排列的先后顺序依次执行 
师:从程序语句执行流向的角度上看(程序结构上),此程序是一典型顺序结构的程序。 
什么是顺序结构? 
 执行时按语句排列的先后顺序依次执行的控制结构称为顺序结构。 
特点: 
1.这个结构按由上到下书写的顺序执行。 
2.只有一个入口和一个出口。 
这是一种最简单,最基本的结构。 
同时,从解决问题的模式来看,此程序又是典型的用解析法来解决问题的方法 
 所谓解析法是指通过分析问题中各要素之间的关系,用最简练的语言或形式化的符号来表达它们的关系,得出解决问题所需的表达式,然后设计程序求解问题的方法。 
简单的说,解析法就是把具体问题中的各种关系转化成数学公式,用解数学题的模式解决具体问题。 
归纳 
总结 
本节 
核心 
课堂 
测试 
2分钟 
经过一节课的学习,我们来检查一下你掌握的效果 
点右上方的“返回”按钮,在LearnSite学习网站主界面上方的导航栏中单击“常识测验”一栏,在右侧找到 “开始测验”按钮,进行测验。答题结束后在相同位置单击“查看答案”按钮可查看参考答案。鼠标指向题目后方的“提示”位置时可以查阅本题的分析解释。 
消化 
巩固 
新授 
知识 
课堂 
小结 
1分钟 
1、什么是顺序结构? 
执行时按语句排列的先后顺序依次执行的控制结构称为顺序结构。 
2、什么是解析法? 
简单的说,解析法就是把具体问题中的各种关系转化成数学公式,用解数学题的模式解决具体问题。 
3、赋值语句基本格式:变量 = 表达式 
4、键盘输入数据的函数InputBox( ) 
格式: X=InputBox( "提示信息","标题",默认值,坐标位置) 
5、输出数据语句Print基本格式: Print 输出内容 
总结 
本节 
主要 
内容 
附:评测试题 
一、选择题 
1、判断A、B最终的值() 
A=330,B=640 
T=A 
A=B 
B=T 
A=?,B=? 
A、330 330 B、330 640 C、640 330 D、640 640 
2、在一窗体上有一命令按钮,其对应代码如下: 
Private Sub command1_click() 
Dim A AS Integer 
A=0 
A=A+1 
Print “结果为";A 
End Sub 
某一同学好奇,连续单击了此按钮10次,问最后一次窗体上显示的值为() 
A、1 B、 0 C、10 D、无法确定 
3、在一窗体上有一命令按钮,其对应代码如下: 
Private Sub command1_click() 
Dim A AS Integer 
A=A+1 
Print “结果为";A 
End Sub 
这一同学又好奇,连续单击了此按钮10次,问最后一次窗体上显示的值为() 
A、1 B、 0 C、10 D、无法确定 
4、下列程序的功能是求两个数a,b的( ) 
Private SubCommand1_Click() 
Dim a As Integer, b As Integer 
a =InputBox("a=", "输入") 
b =InputBox("b=", "输入") 
Max = (a + b) / 2 + Abs(a - b) / 2 
Print "Max="; Max 
End Sub 
A.最大值 B.最小值 C.中间值 D.无法确定 
5、写出下列代码的运行结果 
Private SubCommand1_Click() 
Dim X As Integer, X1 As Integer, X2 As Integer 
Dim X3 As Integer, Y As Integer, 
X =InputBox("X=", "输入") 
X1=X\100 
X2=(X-X1*100)\10 
X3=(X-X1*100-X2*10 
Y=X3*100+X2*10+X1 
Print "Y="; Y 
End Sub 
当程序运行时,输入值650时,最终显示的值为() 
A.650 B.56 C.056 D.不一定 
6、下列说法中哪些是Print语句的输出格式 
 A、标准格式 B、紧凑格式 C、松散格式 D、分区格式 
7、Inputbox()函数返回的提供给程序的数据一定是字符串类型 
8、赋值号“”=“没有计算功能 
9、要交换两个变量必须使用中间变量 
10、顺序结构的程序在执行过程中可以跳过一些语句不去执行。