定义通用过程
课题:定义通用过程(第4章
第4节
第3课时)
一、教材分析
本节课主要介绍VB过程的通用过程,过程是VB模块化编程思想的体现,通用过程是实现模块化编程思想的方法和手段。旨在通过通用过程的学习,体验和理解模块化编程思想,学会封装重复、复杂的程序段的方法,培养将复杂问题分解成简单子问题的思维意识。定义和调用通用过程的实践操作并不复杂,但是其概念抽象、作用与意义难以理解,教学需将其置于合适的问题情境中,真实问题的产生,能促进学生理解和掌握通用过程,对其结构组成和语法规则的教学宜采用实验探究方法去分析、验证和理解。为了突出教学重难点、降低编程难度,提供任务的半成品,让学生将注意力集中在本节教学内容上。
二、学情分析
在本节内容之前,学生已经理解常量、变量、函数、表达式、语句等基础知识概念,已掌握输入信息、处理信息和输出信息的一般方法。对于一般问题,虽能提出解决问题的算法,但尚不具备编写复杂程序去解决复杂问题的能力,缺乏将复杂问题转化成为简单子问题的思维意识,也不具备掌握将任务模块化的一般编程方法的技能,而它们正是这节课的教学目标。
三、教学目标
1.
知识与技能
掌握VB通用过程的定义及其调用。
2.
过程与方法
逐步引导学生学会发现、思考、编程解决学习生活中的问题;学会实验探究学习程序编程;运用通用过程体验编程的模块化思想。
3.
情感、态度和价值观
编程像搭积木,不难学。善思乐学,培养举一反三,灵活应用所学知识能力。
四、教学方法
讲解、演示、讨论学习、实验探究。
五、教学重点与难点
1.
重点
通用函数过程的定义和调用。
2.
难点
分解复杂问题为小问题,并运用通用过程来解决小问题。
六、教学策略
课前组织学生利用学案自主学习,做好相关知识准备。创设问题情境,提出学生学习生活中的简单问题——“小北和小南”,在实践中,两次重复编写复杂表达式求步行和骑行到校时间较小值的情境下,引入通用过程教学。在学习定义和调用通用函数的方法后,通过实验探究,理解通用函数的基本组成和编写通用函数的一般语法规则,并且掌握定义和调用通用函数的方法。以解决输出(小北或小南)先到校时间的问题,进一步体验和理解通用过程的作用和意义。通过观察计算小北和小南到校时间的相似程序段,让学生运用所学知识,实践定义和调用通用函数fTime,进一步将任务模块化,培养学生举一反三、灵活应用所学知识的能力。在完成通用函数的学习后,鼓励学生通过学案自主学习通用子程序的定义和运用。最后,通过算法流程图,引导学生小结、归纳通用过程知识,体会模块化编程思想。
七、教学过程
(一)问题导入
1.
教师活动
小北和小南的家距离学校不远,他们一般步行上学(速度均为1.2米/秒),最近他们发现他们家和学校都设有共享单车站点,虽然骑车比步行速度快(均为2米/秒),但取车和还车要花费1分钟,如果告诉你他们家和学校的距离,你能算出他们尽快到学校的时间吗?
2.
学生活动
阅读、思考问题。
图1
3.
设计意图
围绕学生的学习生活案例,思考其中的问题,快速进入学习情境。
(二)分析问题,提出算法
1.
教师活动
组织学生分析、归纳课堂的讨论、发言,提出算法。
图2
2.
学生活动
讨论、发言并提出解决方法。
发现解决问题的算法基本流程可以分为四个步骤:
(1)输入小北、小南的家到学校的距离b,n;
(2)计算小北到学校的较短时间bt;
(3)计算小南到学校的较短时间nt;
(4)输出bt,nt。
3.
设计意图
培养使用计算机编程解决问题的一般过程习惯:首先分析问题、确定算法、然后编写程序。
(三)引入课题
1.
教师活动
(1)组织学生打开工程文件,填写空行。
图3
(2)观察、分析填写的计算小北和小南到学校较短时间的语句。
是否能把这些复杂、常用的语句封装起来,然后像使用VB标准函数、过程一样调用,方便编程?
利用VB中的通用过程可以实现想法。
2.
学生活动
(1)打开工程文件及其窗体文件,填写“计算”按钮的事件程序空行。
参考:
Let
bt=(x+y-Abs(x-y))/2
Let
nt=(x+y-Abs(x-y))/2
(2)发现两条赋值语句的右侧表达式虽然较为复杂,但是一样。
3.
设计意图
(1)为新知学习做好铺垫。
(2)用问题导入课题。知识迁移学习通用过程的功能。
(四)定义函数过程
1.
教师活动
(1)VB通用过程分为子程序过程和函数过程。
(2)定义通用过程的操作:
在“代码窗口”视图下,执行“工具”-〉“添加过程”命令。
图4
(3)组织学生定义“fMin”通用函数过程实践活动。
2.
学生活动
(1)利用学案学习定义通用过程的基本操作。
(2)实践:定义一个名称为“fMin”,范围为“公有的”的函数。
(3)编写函数体程序。
参考:
Public
Function
fMin(x,y)
Let
m=(x+y-Abs(x-y))/2
Let
fMin=m
End
Function
3.
设计意图
掌握定义通用过程的基本操作。
(五)调用函数过程
1.
教师活动
(1)我们定义好了fMin函数,接下来我们就可以像使用标准函数一样使用fMin函数。
(2)组织学生修改计算较短时间的语句。
观察学生实践过程,找出典型问题,组织讨论,解决问题
2.
学生活动
(1)修改语句:
Let
bt=fMin(x,y)
Let
nt=fMin(x,y)
运行调试程序。
(2)展示程序,分析、讨论出现的问题,修改程序,解决问题。
3.
设计意图
在实践中发现、分析问题、解决问题过程中掌握通用函数。
(六)知识梳理
1.
教师活动
(1)组织观察fMin函数的组成:
图5
(2)组织实验探究。
2.
学生活动
(1)深入了解通用函数的组成。
(2)实验探究:
如果不写参数列表,编译程序会出现什么问题?
如果不写函数返回值赋值语句,是否可行?
3.
设计意图
实践后再学习通用函数定义和调用的疑难点,让经验和知识相统一。
(七)问题拓展
1.
教师活动
(1)如果小北和小南同时从家里出发,你能迅速算出先到达学校的人所需的时间吗?
思考是否可以写成
Let
t=fMin(x,y)?
(2)讨论分析函数参数列表的作用。
(3)再观察程序计算小北和小南到校时间的程序段:
Let
x
=
b
/
1.2
Let
y
=
b
/
2
+
60
Let
bt
=
fMin(x,
y)
Let
x
=
n
/
1.2
Let
y
=
n
/
2
+
60
Let
nt
=
fMin(x,
y)
(4)是否也可以定义一个通用函数fTime(d)来封装三条语句?
组织学生实践尝试。
2.
学生活动
(1)思考问题,实践尝试。
参考:
Let
t=fMin(bt,nt)
(2)结论:调用函数时,参数是将数值赋值给函数内部。
(3)发现计算小北的三条语句与计算小南的基本相同。
(4)学生实践。
参考:
Public
Function
fTime(d)
Let
x
=
d
/
1.2
Let
y
=
d
/
2
+
60
Let
t
=
fMin(x,
y)
Let
fTime=t
End
Function
Let
bt=fTime(b)
Let
nt=fTime(n)
3.
设计意图
培养学生举一反三,灵活应用所学知识的能力。
(八)定义子程序过程
1.
教师活动
如果交换小北和小南家到学校的距离数据,计算先到达学校的人所需的时间的结果会不会不一样?
我们用程序来验证一下:
为了快速验证,免去重复输入数据的操作,添加一个“交换”按钮,如图所示。
图6
与通用函数类似,我们可以使用子程序过程来封装交换过程。
组织学生实践。
观察子程序Swap,与通用函数fMin、fTime有什么区别?
子程序过程调用与函数也有区别,子程序过程需要Call语句才可以调用。
格式:
Call
子程序过程名称
组织学生编写“交换”按钮的事件过程程序。
组织实验探究:删除或注释Dim
n,b语句,会出现什么结果,你有什么结论?
2.
学生活动
学生思考、回答。
学生实践。
定义一个名称为Swap,范围为“公有的”的子程序过程。
并填写代码。
参考:
Dim
n,b
Public
Sub
Swap()
Let
t=n
Let
n=b
Let
b=t
End
Sub
观察、讨论。
结论:最主要的区别是子程序过程没有函数返回值赋值语句。
实践:在“交换”按钮事件过程中调用子程序过程Swap()。
“交换”按钮事件程序参考:
Let
n=Text1.Text
Let
b=Text2.Text
Call
Swap
Let
Text1.Text=n
Let
Text2.Text=b
运行、调试程序并验证设想。
实验探究。
结论:定义在通用过程内部的变量只在通用过程内部有效。
3.
设计意图
(1)知识迁移学习子程序过程的定义。
(2)比较子程序过程和通用函数,掌握它们定义和调用的不同点。
(九)小结
1.
教师活动
(1)通用过程要先定义,才可以调用;
(2)通用过程让程序易编、易读;
(3)使用通用过程让编程像搭积木一样,将问题分解成容易解决的小问题,利于我们解决复杂的问题
2.
学生活动
浏览流程图,归纳总结。
3.
设计意图
归纳和梳理所学知识。
附件:流程图
“计算”按钮事件过程流程图
“交换”按钮事件过程流程图《定义通用过程》学习指导
小组成员:?????
TOC
\o
"1-2"
\h
\u
一、知识准备
1
二、小北和小南
1
三、实践步骤
2
三、学习小结
6
一、知识准备
求出数值型变量a,b较大或较小的一个值。可利用数学代数式
计算出较大的值,计算出较小的值。
1.假设a,
b的值分别为3和5,请你验证一下:
=?????
=?????
2.请你尝试将上述的数学代数式写成VB表达式。
1)
将a,b中较小的值赋值给x。
Let
x=?????
将a,b中较大的值赋值给x。
Let
x=?????
提示:可使用VB内部函数(标准函数)Abs(a-b)求
|a-b|。
小北和小南
小北和小南的家距离学校不远,他们一般步行上学(速度均为1.2米/秒),最近他们发现他们家和学校都设有共享单车站点,虽然骑车比步行速度快(均为2米/秒),但取车和还车一共要花费1分钟,如果告诉他们家和学校的距离,你能算出他们尽快到学校的时间吗?
请尝试填写【表格1】
人物
离校距离(米)
步行到校(秒)
骑行到校(秒)
较短时间(秒)
小北
120
?????
?????
?????
小南
240
?????
?????
?????
请思考,并与同学探讨解决问题的算法。
三、实践步骤
1.计算小北和小南各自尽快到校时间。
(1)编写程序来解决上面的问题。请打开“上学.vbp”工程文件,双击打开窗体上的“计算”按钮,完善“计算”按钮的单击事件代码。
(2)运行程序,输入上面【表格1】数据,进行验证。
2.通用过程(函数)。
(1)定义通用函数的方法:在“代码窗口”视图下,执行“工具”-〉“添加过程”命令。定义如图所示的通用过程fMin
(2)编写通用函数fMin(
)的程序,参考如下:
Public
Function
fMin(x,y)
Let
m=(x+y-Abs(x-y))/2
Let
fMin=m
End
Function
(3)调用通用函数fMin(
),重新修改语句。
实验探究
观察通用函数fMin(x,
y)的结构组成。
实验1:尝试将参数列表删除,观察编译运行结果;
实验2:尝试删除或注释函数返回值赋值语句,观察编译运行结果;
新的问题
如果小北和小南同时从家里出发,你能迅速算出先到达学校的人的所需时间吗?
编写代码
提示:调用通用函数fMin,并将其赋值给文本框Text5的Text属性。
观察计算小北和小南到校时间的程序段,你能发现什么?
计算小北的到校时间的程序段
计算小南的到校时间的程序段
Let
x
=
b
/
1.2Let
y
=
b
/
2
+
60Let
bt
=
fMin(x,
y)
Let
x
=
n
/
1.2Let
y
=
n
/
2
+
60Let
nt
=
fMin(x,
y)
定义通用函数fTime(d
)来封装这三条语句(参数d是指小北或小南家离校距离)
提示:
Public
Function
fTime(d)
Let
x
=
?????
‘计算步行d距离所需时间x
Let
y
=
?????
‘计算骑行d距离和取放车所需的时间y
Let
t
=
?????
‘求出较短时间
Let
fTime=t
‘
将t作为函数值返回
End
Function
调用通用函数fTime,修改程序重新计算小北和小南的尽快到校时间。
计算小北的到校时间
计算小南的到校时间
Let
bt
=
?????
Let
nt
=
?????
通用过程(子过程)
问题:如果交换小北和小南家到学校的距离数据,计算先到达学校的人所需时间的结果会不会不一样?
验证想法,添加“交换”按钮对象,迅速交换小北和小南的数据。
定义子程序过程swap来封装交换过程
提示:交换n,b的值。
Dim
n,b
Public
Sub
Swap()
Let
t=?????
‘将
n赋值给t
Let
n=?????
‘将
b赋值给n
Let
b=?????
End
Sub
编写“交换”按钮的事件过程。
子过程调用方法:Call
子过程名称。
提示:“交换”按钮事件程序参考:
Let
n=Text1.Text
Let
b=Text2.Text
?????
‘调用子过程
Let
Text1.Text=n
Let
Text2.Text=b
实验探究
若删除或注释Dim
n,b,启动程序,观察结果,思考出现的问题。
学习小结
“计算”按钮事件过程的算法流程图
“交换”按钮事件过程的算法流程图
今天我们小组发现,对程序中需要重复编写、重复运行的语句可以通过定义请选择进行模块化,今天我们学习了如何定义请选择和请选择,通过它们有利于解决复杂问题。(共6张PPT)
小北和小南
Public
Function
f
Min(x,
y)
Let
m
=
(x
+
y
-
Abs(x
-
y))
/
2
Let
f
Min
=
m
End
Function
函数首部
参数列表
函数返回值赋值语句
函数尾部
开始
自定义函数
自定义函数
开始
自定义过程
fTime(d)
EMin(x,y)
Swap()
输入b,
nsText1.
Text
x=d1.2
(x+y-Abs(x-y))/2
t
bt=ETime(b)
b=Text2Text
y=d/2+0
tMin=m
=b
nt=fTime(n)
Call
Swap
t=fMin(x,y)
自定义函数
b=t
结束
t=Min(bt,
nt)
Text1.
Text=n
fTime=t
自定义过程
结束
输出bt,nt,t
Text2Text=b
自定义函数
结東
结束
结束