APP下载

《选择结构》教学设计

2017-02-24姚佳俊曹恒来

中国信息技术教育 2017年1期
关键词:分支代码程序设计

姚佳俊 曹恒来

● 学习者分析

本课的教学对象是高二年级的学生,他们思维活跃,具有一定的逻辑思维和推理演绎的能力,但归纳总结能力较弱。在前面的课程中,学生已经掌握了VB的常量、变量、表达式、Let语句、Print方法等基本知识,了解了程序设计的一般过程,急切地想编写程序解决生活中更为复杂的实际问题,但他们现有的知识结构仅限于解决顺序结构的问题,而且将实际问题转化为VB程序的能力也有待提高。

● 学习内容分析

本课是教育科学出版社出版的《算法与程序设计》(选修)第二章“程序的基本结构”中第三节第二部分的内容。任何规范的程序都可以分解为三种基本结构,即顺序结构、选择结构和循环结构,教材的前一节介绍了顺序结构程序设计。选择结构是用于判断给定的条件,并根据判断的结果控制程序的执行流程,它分为单分支、双分支及多分支选择结构,而不同的分支结构有不同的语法格式和适用场合。牢固掌握选择结构程序设计,是学习程序设计的基本要求,是学会编写结构清晰、易读易懂的程序的前提。

● 教学目标

知识与技能目标:掌握选择结构的基本格式,理解选择结构的执行过程。

过程与方法目标:能根据问题建立合适、正确的条件,利用选择结构解决实际问题。

情感态度与价值观目标:领悟选择结构的思想,体验选择在生活中的应用。

● 教学重点、难点

重点:选择结构的基本格式,利用选择结构解决实际问题。

难点:选择结构的嵌套。

● 教学策略

本课教学采用了案例模拟教学法。笔者通过呈现问题、观察代码、模仿尝试、归纳小结、问题解决、拓展应用、总结提升等课堂教学环节,设计了递进式的学习活动。学生通过“比较两个数的大小”“出租车计费器”“月饼促销”“计算三角形面积”“BMI等级的判断”等程序的完善,在解决一个个问题的同时,层层深入地认识选择结构。学生在模仿中,通过对多个“个”的尝试,找出“个”背后“类”的规律性问题,归纳出选择结构的一般格式,实现从“个”到“类”的提升。这样的设计有助于学生从整体上认识选择结构,并不断地向纵深发展。同时,真实的问题情境能有效地激发学生的学习兴趣,让他们积极思考、主动建构,获得程序设计的成就感。

● 教学过程

1.代码呈现

运行上节课编写的“计算两个数的商”程序,代码如下:

Private Sub cmddiv_Click()

Dim x As Single ' 被除数

Dim y As Single ' 除数

Dim q As Single ' 商

x = Val(InputBox("請输入被除数:"))

y = Val(InputBox("请输入除数:"))

q = x / y

Print q

End Sub

学生运行上述程序,分析程序的漏洞:当除数为0时,程序提示出错,说明这样的程序是不完善的。实际上,在除数不为零的情况下,学生才能计算它们的商,否则应提示“除数为零”。

用VB程序来描述如下:

If y <> 0 Then

q = x / y

Print q

Else

Print "除数为零"

End If

教师小结:根据条件判断的结果,选择执行不同语句的结构,称为选择结构。

设计意图:教师从上一节课的顺序结构程序引入,让学生通过观察、分析,发现其中的If语句结构起着引导程序走向的作用。这样的设计使学生的学习不是被动接受,而是一个以已有知识经验为基础的主动建构过程。

2.模仿尝试

活动1:模仿上例完善程序,尝试解决下面两个问题。

①输入两个数x和y,比较它们的大小,使x大于y。

Private Sub cmdxy_Click()

Dim x As Single,y As Single,t As Single

x = Val(InputBox("输入x的值:"))

y = Val(InputBox("输入y的值:"))

If _________ Then

t = x

x = y

y = t

End If

Print "x的值为:"; x

Print "y的值为:"; y

End Sub

②出租车计费程序,三公里以内(含)起步价9元,超出三公里的部分每公里2.4元。

Private Sub cmdtaxi_Click()

Dim s As Single,y As Single

s = Val(InputBox("输入里程数:"))

If s <= 3 Then

y = 9

Else

___________

End If

Print y

End Sub

设计意图:学生通过模仿完善两个半成品程序,进一步深化对选择结构的认识。教师有目的地将部分核心代码留空,让学生将有限的注意力集中到核心问题的解决上,做到有的放矢;另外,关键代码的填写可以为学生理解程序提供支架,降低活动难度。

3.归纳提升

选择结构根据条件判断的结果控制程序的走向,不同的问题可能有不同的条件判断,但If语句的基本格式是固定的。

单分支选择结构(如图1),代码如下:

If 条件 Then

语句块

End If

双分支选择结构(如图2),代码如下:

If 条件 Then

语句块1

Else

语句块2

End If

教师小结:单分支的选择结构,当条件为真时才执行指定语句,否则跳过;双分支的选择结构根据条件是否成立,程序选择执行相对应的语句,然后执行End If后面的语句。

设计意图:教师通过适时地归纳总结,让学生在对选择结构有了感性认识的基础上,系统地认识单分支和双分支选择结构的一般格式,并借助流程图分析选择结构的执行过程,帮助学生建构清晰而完整的知识框架,这将为他们后面的学习打下扎实的基础。

4.问题解决

活动2:利用单分支和双分支选择结构,完善程序,解决问题。

①中秋节前夕,商店月饼促销,购满3盒(含)即可享受八折优惠。请根据输入的购买盒数,计算出应付金额。

Private Sub cmdmk_Click()

Dim qty As Integer ' 购买 盒数

Dim price As Single ' 应付 金额

Dim sum As Single

price = 80

qty = Val(InputBox("购买盒数:"))

' 如果购买盒数低于3盒,不打折

' 购满3盒(含)享受八折优惠

_______________

Print "应付金额:"; sum; "元"

End Sub

②已知三角形的三条边a、b、c,求三角形的面积(判断三条边是否构成三角形的条件为:任意两边之和大于第三条边)。

Private Sub cmdsquare_Click()

Dim a As Single,b As Single,c As Single

Dim p As Single,s As Single

a = Val(InputBox("input a:"))

b = Val(InputBox("input b:"))

c = Val(InputBox("input c:"))

p = (a + b + c) / 2

' 如果输入的三边值(a,b,c)能够构成三角形则计算其面积

' 否则提示用户"不能构成三角形"

_______________

End Sub

教師小结:条件一般为关系表达式,如活动1中的两个程序,以及活动2中的程序①;也可为逻辑表达式,如活动2中的程序②。

设计意图:活动2能使学生对双分支If语句有了较为清晰的理解之后实现完整的应用,学生要考虑的不再只是选择结构中各个分支的内容,而是站在一个更高的层面考虑整个选择结构的设计,在思维深度上与前面的活动呈递进关系。同时,此活动的两个问题分别通过关系表达式和逻辑表达式实现条件判断,帮助学生进一步拓展对条件表达式的认知。

5.拓展应用

活动3:身体质量指数(BMI)是目前国际上常用的衡量人体胖瘦程度的标准,WHO组织设定中国人的参考标准为:BMI<18.5表示偏瘦;BMI介于18.5~23.9表示正常;BMI>=23.9表示偏重。学生借助数轴(如图3)分析问题,形成算法:①先判断x<18.5是否成立,成立则输出“偏瘦”;②否则判断x<23.9是否成立,成立则输出“正常”,否则输出“偏重”。

Private Sub cmdbmi_Click()

Dim w As Single,h As Single,bmi As Single

w = Val(InputBox("输入体重(公斤):"))

h = Val(InputBox("输入身高(米):"))

bmi = w / h / h

If bmi < 18.5 Then

Print "偏瘦"

Else

_______________

End If

End Sub

教师小结:在第一次判断的基础上,进行再次判断。这种在一个If语句的内部又出现了另一个If语句,称为If语句的嵌套。实际上,VB对程序有多个分支的问题,有一种专门的If语句形式简化嵌套的问题。

多分支选择结构:

If 条件1 then

语句块1

ElseIf 条件2 then

语句块2

Else

语句块3

End If

多分支的If语句实现BMI值判断,代码如下:

Private Sub cmdbmi_Click()

Dim w As Single,h As Single,bmi As Single

w = Val(InputBox("输入体重(公斤)"))

h = Val(InputBox("输入身高(米)"))

bmi = w / h / h

If bmi < 18.5 Then

Print "偏瘦"

ElseIf bmi < 23.9 Then

Print "正常"

Else

Print "偏重"

End If

End Sub

教師小结:多分支选择结构首先测试条件1,如果它为假,就测试条件2,依此类推,直到找到一个为真的条件,并执行相应的语句块;如果条件都不为真,执行Else后的语句,然后再执行End If后面的代码。

设计意图:学生通过“数轴分析法”分析出第二次判断“BMI<23.9”是以第一次判断“BMI<18.5”为前提,是在第一次条件判断为“假”的基础上再次进行判断。教师在完善程序的过程中,帮助学生理解嵌套的缘由,理清嵌套的脉络,并在此基础上提出多分支If语句,分析其执行过程。这样的设计既重过程又重结论,让学生在问题解决的过程中,轻松愉快地完成知识的建构。

6.思维导图,复习巩固

笔者用思维导图对知识点进行巩固(如图4)。

点 评

传统的编程学习总是与编写代码、设计算法和生成可运行的程序紧密联系在一起,教师常会选择一些“经典”的数学题作为例题,如鸡兔同笼、百钱百鸡、找素数、求水仙花数等,内容缺少趣味性和综合性。本节课设计的例题和练习与学生的学习和生活息息相关,把解决“真实”问题作为编程学习的首要任务,这样既能使学生有一个愉快的学习过程,又能激发他们加倍投入到编程学习中。

程序设计的学习主要围绕环境、语言和应用三个方面的知识和内容展开,语言视图学习的核心主要是语言规则本身。从教学方式来看,以往的程序设计语言规则的学习常采用三步走的形式,即提出问题,给出解答,再加点解释。特别是“解释”,往往过多地纠缠于程序设计语言的语法知识的细枝末节之中,学生很少能体验到成功解决问题的喜悦。本节课姚老师运用了案例教学法,先为学生提供了一个需要解决的生活中的具体任务——计算两个数的商,让学生在分析解决这个问题的程序、尝试补充程序模板中关键代码的过程中,逐步认识If选择结构,并引导他们提取出If语句的基本格式,再应用到类似问题的解决中,最终得到功能强大的If语句指令集。

同时,程序设计是一种高强度的脑力劳动,学生不是听会的,也不是看会的,而是自己练会的。在这节课中,学生通过模仿尝试、独立解决等方式,完成了6个以上的程序,在有限的课堂教学时间内,较好地达到了“量”的要求。

(点评人:江苏省盐城市教育科学研究院 曹恒来)

猜你喜欢

分支代码程序设计
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
基于git工具的多分支并行开发上线流程
用“分散数论”对“哥德巴赫猜想”的初等证明
含有二阶幂零鞍点的双同宿环附近的极限环分支
神秘的代码
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细