一、 教学目标
1、 知识与技能
知识目标:
1.对“算法”的概念作进一步的了解。 2.了解解析算法的特点。
3.通过实例的学习,掌握解析算法的各环节。 4.掌握运用各学科知识解决实际问题的方法。
5.掌握从解决问题的解析式到设计相应程序的窗体和程序代码的方法。 6.通过实践掌握用解析算法编写程序代码的一些技巧。 7.能关注使用解析算法解决问题的意义。
8.在综合应用各种知识解决问题时提高自己的整体素质。
9.能运用学过的窗体和控件的基本知识是进行可视化编程。善于通过交流设计出简洁好用的界面。 技能目标
能够用解析法分析简单问题,设计算法,编写程序求解问题。 2、 方法与过程
以学生生活中最熟悉的测量物体、楼房的高度入手,引出有关测量的话题。通过测量不可到达底部的物体的高度的问题,导出了解析算法的基本概念,然后通过计算电阻和计算小球弹跳路程的两个例题,叙述了解析算法应用的两个重要手段:通过列出方程(或方程组) 然后求解和用重复结构对解析式进行计算。进一步提高学生对解析算法和可以通过多种方法设计程序的理解。 3、 情感态度和价值观
结合高中生想象具有较强的随意性、更富于现实性的身心发展特点,综合反映出提升学生在各个领域的计算机应用水平,提高学生交流和讨论,自己总结获得新的知识能力,培养学生正确寻找解决问题的方法和正确的学习方法。
二、 重点难点
1、 教学重点
(1) 理解解析法的基本概念。要培养学生善于综合运用数学、物理、化学等各学科的知识和思考方法,寻找问题中各要素之间的关系,导出解决问题的解析式或列出相关的方程,然后设计程序求解。
(2) 根据算法写出程序代码并且调试程序求得问题的正确解答的能力。当算法确定之后,应当能够熟练地根据算法写出程序代码,并且通过调试程序发现并改正错误,得出正确的解答。
(3) 根据问题的特点,找到系统提供的资源(如各种数据类型、内部函数等等) ,简化问题的求解过程。 2、 教学难点
(1) 解析式的导出或方程(组) 的列出并求解。这些工作要求对问题所涉及的领域有比较深的认识,它的困难是外在的,是由问题的性质决定的。
(2) 算法的合理设计。不论是使用重复结构还是寻找的运算顺序,对于经验不足的初学者是有困难的,特别是计算过程中可能会遇到计算误差的积累影响运行结果的情况,需要有较多的编程经验才能加以解决。 (3) VB 的数据类型。
三、 教学环境
1、 教材处理
教材选自《广东省普通高中信息技术选修一:算法与程序设计》第四章第一节,本节从古埃及测量金字塔高度故事引入,引出有关测量的话题。通过一道测量不可到达底部的物体的高度的问题,导出了解析算法的基本概念,然后通过计算小球弹跳路程的计算,和电阻计算两个例题,叙述了解析算法应用的两个重要手段:用重复结构对解析式进行计算和通过列出方程(或方程组) 然后求解。在此基础上教材安排了两个实践探究活动,进一步提高学生对解析算法的理解。
教材经处理后,以学生生活中最熟悉的测量物体、楼房的高度入手,引出有关测量
的话题。通过一道测量不可到达底部的物体的高度的问题,导出了解析算法的基本概念,然后通过计算电阻和计算小球弹跳路程的两个例题,叙述了解析算法应用的两个重要手段:通过列出方程(或方程组) 然后求解和用重复结构对解析式进行计算。进一步提高学生对解析算法和可以通过多种方法设计程序的理解。
教学方法是以实现“教—引—放—收”的教学过程,体现“问题情景式任务驱动”的教学方法。任务驱动强调让学生在密切联系学习、生活和社会实际的有意义的“任务”情景中,通过完成任务来学习知识、获得技能、形成能力、内化伦理。
采用任务驱动、讲解、分析归纳、探究、实践操作和学生自主学习相结合的学习方法。 2、 预备知识
学生已掌握了用计算机解决问题的过程,掌握了VB 界面设计的相关内容,掌握了程序设计的基础。 3、 硬件要求
建议本节课在计算机机房或多媒体电脑教室中完成,最好有广播教学系统或投影仪,为拓展学习,学生机应允许上互联网。
4、 所需软件
学生机要安装VB6.0或以上版本。 5、 所需课时 2课时(90分钟)
四、 教学过程 导入:
同学们,我想所有的同学都会测量物体和楼房的垂直高度,但如下的问题会测量吗? 4.1.1 用解析法求解问题的基本过程 1、测量高度问题的求解 问题:
4.1: 如图4-1所示,MN 是竖直于地面的物体,其底部N 不可到达。为了测量MN 的高度,在地面上选取一条与MN 在同一平面的水平线线段AB 为基线,测得AB 的长为a=20米,在A 点向M 点张望的仰角 A =38.40,在B 点向M 点张望的仰角B =22.80。试设计程序计算高度MN 。
图4-1(1)测量物体高度示意图
(1) 分析问题(以下内容由老师正确引导,学生小组协作完成)
我们不可能直接求出物体的高度。但我们可以利用所学的知识(三角函数)来完成该工作。
在直角三角形ANM 中可以得到: tanA 0=MN/AN 即:AN =MN/ tan A0
在直角三角形BNM 中可以得到: tan B0=MN/BN
即:BN =MN/ tan B0 所以:
AB =BN -AN
=MN/tan B0-MN/tan A0 =MN (1/ tan B0-1/tan A0 )
(2) 设计算法
① 设计输入输出界面,从三个文本框中输入基线长a ,仰角A 0用Alpha 代替、B 0用
Bata 代替
② 计算tan A0的倒数(用COTA 表示),即
COTA =1/tan(A 0*3.14159/180);
③ 计算tan B0的倒数(用COTB 表示),即 COTB =1/tan(B 0*3.14159/180);
④ 计算a/(COTB-COTA) ; ⑤ 输出结果
(3) 编写程序
设计窗体如图4-2
图4-1(2)测量高度问题程序的窗口
表4-1(1)对象属性表参考程序4-1:
Private Sub Command1_Click() a = Val(Text1.Text) Alpha = Val(Text2.Text)
bata = Val(Text3.Text) pi = 3.14159265
COTA = 1 / Tan(Alpha * pi / 180) COTB = 1 / Tan(bata * pi / 180) MN = a / (COTB - COTA) Text4.Text = MN End Sub
(4) 调试程序(运行源程序)
图4-1(3)参考程序4-1运行的结果
(5) 检验结果
探究:
在本问题里,如果输入的两个仰角相等,或其中一个仰角是900,都会导致程序非正常结束。如果,甚至会使输出的结果是负数!请讨论一下使用者输入数据时比较常见的错误会有哪些?我们在程序中可以怎样防范?
2、总结
解析法的基本概念
通过分析问题中各要素之间的关系,用最简练的语言或形式化的符号来表达它们的关系,得出解决问题所需的表达式,然后设计程序求解问题的方法称为解析法。
4.1.2 用解析法求解问题的实践 1、电阻计算问题 问题:
4-2:在一家工厂作社会调查时,张军了解到他们正在进行一项技术改革,
其中有一个环节是改变一个局部电路的电阻以观察对整个器件的影响。这个局部电路由并联的两个分支组成(如图4-5),其中一个分支的等效电阻是R 1,而另一个分支的等效电阻为R 2。因为电路特性的需要,必须保持R 2-R 1=2000Ω。工厂技术人员希望由这两个分支并联的电路的总电阻R 分别取为1000Ω、2000Ω……100000Ω。这样得多次计算R 1和R 2的电阻值,而这种计算
每次都很麻烦。于是张军就编制了一个程序帮他们解决问题,只要输入总电阻R 的值,程序就计算出相应的R 1和R 2的值。张军因此受到了技术员的称赞。你也能编出这个程序吗?
R 2
图4-
1(4)
并联电路示意图
(1)
分析问题。
(老师引导,学生完成) 张军是这样想的:
根据并联电路电阻的计算公式,1/R=I/R1十1/R2,以R2=R1+2000代入,
即得:
1/R=1/R1+1/(R1+2000)
以R1为未知量、R 为已知量,通过去分母整理可以得到关于R1的方程: R12+(2000-2*R)*R1-2000*R=0, 解这个关于R1的二次方程即可解决问题。
(2)设计算法。(老师引导,学生完成)
根据上述的分析,张军写出解决问题的算法如下: ①输入总电阻R ;
②计算方程R12+(2000-2R)*R1-2000*R=0的判别式=(2000-2*R)2+8000*R; ③如果D ≥0转④,否则转⑥;
④计算出方程R 12+(2000-2*R)*R1-2000*R=0的根R 1=(2*R-2000+sqr(D))/2,(R1’=(2*R-2000+sqr(D))/2肯定是增根,不必计算) ; ⑤把R1和R1+2000在两个文本框内输出,转⑦; ⑥输出方程没有解的信息“不可能”; ⑦结束。 (3)编写程序。
用文本框输入总电阻值,用两个文本框分别输出R 1和R 2的值,用3个标签 框对这些文本框作说明。另外设一个命令按钮触发程序执行,如图4-6所示。
图4-1(5)电阻设计问题的窗体设计图
表4-1(2)对象属性表
先设计好电阻计算问题的窗口,再根据算法写出程序代码:(其中带下划线的部分由学生讨论完成)
Private Sub Command1_Click() D = L * L + 4 * 2000 * R
R1 = (-L + Sqr(D)) / 2 Else
Text3.Text = "不可能" End If End Sub
(4)调试程序
图4-1(6)电阻计算问题解答示意图
(5)检测结果
小结:用解析法求解问题,有时需要根据问题列出方程,用解方程的方法得到答案。 例如:X 5+X3-2*X-9=0就没有现成的求根公式可用,这时就需要用数值逼近的方法求解。
新课:(本节第二课时)
导入:
复习解析法的概念:通过分析问题中各要素之间的关系,用最简练的语言或形式化的符号来表达它们的关系,得出解决问题所需的表达式,然后设计程序求解问题的方法称为解析法。
2、小球弹跳问题 问题:
4-3:小球从10米高处自由下落,每次弹起的高度是下落高度的70%。当小球弹起的高度不足原高度的千分之一时,小球很快就会停止跳动。计算小球在整个弹跳过程中所经历的总程(忽略弹起高度不足原高度千分之一的部分)。
(1) 分析问题:(老师详细分析整个运动过程,学生讨论完成带下划线的部分内容)
图4-1(7)小球运动分析图
根据上图的第一种分析方法,请思考并归纳规律:_小球每次弹起的距离就是本次下落距离的0.7倍,而每一次下落距离等于上一次弹起的距离 即: L n =0.7H n H n+1= Ln
其中H n 为第n 次下落的距离,L n 为第n 次弹起的距离,n=1,2,3,„,H 1=10。计算一直进行到第m 次(L m ≥H 1/1000而L m 〈H 1/1000〉,把它们都相加,即可求出问题的解:
S =(H 1+L 1)+(H 2+L 2)+(H 3+L 3)+„+(H m +L m ) (2)设计算法
①输入小球开始高度Home ; ②H =Home ; ③S =0; ④令L =0.7*H;
⑤S =S +H +L ;(讲解累加器)
⑥H =L ;
⑦如果L ≥Home/1000则返回④, 否则下一步; ⑧输出S 的值; ⑨结束。
(2) 编写程序(给出部分程序, 让学生补充完整)
Private Sub Command3_Click() Dim home As Single
Dim H As Single, s As Single, l As Single
home = Val(InputBox("请输入小球的开始高度(米):", , 10)) H = home s = 0 Do l=0.7*H
Loop While Print "小球移动的总路程是:"; s; "米" End Sub (运行源程序)
第二种分析方法 (1)分析问题
注意到:第一次下落是10米
第一次弹起和第二次下落的距离都是第一次下落的: 第二次弹起和第三次下落的距离都是第一次下落的:
第三次弹起和第四次下落的距离都是第一次下落的: · ·
第i 次弹起是第一次下落的:
当第i 次弹起的高度不足原高度的千分之一时,即0.7^i>1/1000 时,把它们都相加,即可求出问题的解
S=S+2 * H * 0.7 ^ I (2)设计算法
①输入小球开始高度Home ; ②__s=h____
③__i=0______
④ i = i + 1
⑤ s= s + 2 * H * 0.7 ^ i
⑥如果 0.7 ^ i >= 1 / 1000 则返回④,否则退出到⑦
⑦S=S-H * 0.7 ^ i
⑧输出s 的值
⑨结束
(3)编写程序
Private Sub Command1_Click()
Dim home As Single
Dim H As Single, s As Single
home = Val(InputBox("请输入小球的开始高度(米):", , 10))
H = home
Do
Loop While
S=S-H * 0.7 ^ i
Print "小球移动的总路程是:"; S; "米"
End Sub
(运行源程序)
(4)调试程序(略)
方法归纳:用解析法求解问题,并非只是象计算物体高度和电阻这样一个解析式就可以完事,很多时候还要根据问题给出的条件,运用归纳、演绎等逻辑方法,揭示问题各要素之间的关系,寻找表示这种关系的表达式,有时需要计算的解析式是一组而不仅仅是一条,需要使用合适的结构设计算法和编制程序,求得问题的答案。
图4-1(8)小球程序运行结果图
(5)检查结果(略)
小结:
用解析法求解问题,许多时候并非只是计算一个解析式就可以完事,还要根据问题给出的已知条件,运用归纳、演绎等逻辑方法,揭示问题各要素之间的关系,寻找表示这种关系的表达式,
有时需要计算一组解析式,需要使用合适的结构设计算法和编制程序,求得问题的答案。
学生实践与讨论
(1)计算下面表达式的值
试用三种运算方法计算此式的值,并上机调试,讨论三种方法算出来的结果为什么不同?
第一方法:先求分子和分母的乘积,再用分子除以分母。
Private Sub Command3_Click()
s = 1
v = 1
Next i
ss = s / v
Text1.Text = ss
End Sub
结果分析: 分子分S 和分母V 的结果均超出了取值范围
第二方法:1÷2÷4÷6÷8÷10÷„÷1000×3×5×7ׄ×999
Private Sub Command2_Click()
m = 1
n = 2
s = 1
Do Loop Until n >= 1000
Do Loop Until m >= 999
Text1.Text = s
End Sub
结果分析: 结果为零,因为做完第一次循环后S 的结果已经很小无限趋近零了
第三方法:1÷2×3÷4×5÷6ׄ×999÷1000
Private Sub Command4_Click()
s = 1
1×3×5ׄ×999
Next i
Text1.Text = s
End Sub
调试运行可以得出正确答案。
(2)设计通用倒计时程序
要求:输入目标日期,就可以算出目标日期离当天有多少天。
分析问题:VB 提供“日期型(Date )”的数据类型,日期型数据表示方法和运算方法如下:
①在一对“#”符号之间填入通常可以认为日期和时间的字符。如
#Jannuary 1,2000# #1 Jan 2000#
#01/01/2000# #2000-1-1#
注:在文本框输入日期时,不用输“#”
②日期型数据也可进行运算,方式有以下几种
两个日期相减,得到两个日期相隔的天数
#2007-6-7#-#2005-5-23#
#2007-6-7#-Date (该函数表示当天的日期)
一个日期型数据加(减)一个表示天数的整数,其结果是该整数值之后(之前)的日期。 #2005-5-23#+80(-80)
结果分别:#2005-8-11# #2005-3-4#
算法设计:
① 设计输入输出界面,在上面两个文本输入起始日期和目标日期,在下面的文本和标
签输出两者还有多少天。aa 表示起始日期,dd 表示目标日期。
图4-1(9)两个日期之间相差多少天的窗体设计图
标签 ②计算相距日期:比如想了解现在离07年高考还有多少天?可用ss 表示相距天数,依据上面分析,可得
ss=#7/6/2007#-Date_
③ 输出结果
Text1.Text=ss 编写程序:
Private Sub Command1_Click() aa = Text1.Text
Text3.Text = ss
Label3.Caption = Text2.Text & "离" & Text1.Text & "还有:"
End Sub
图4-1(10)两个日期之间相差多少天程序运行结果图
拓展提高
1)求出100到1000之间有哪些数字其数字之和是6。
2)在窗体上输出1至99之间的全部同构数。同构数是这样的一组数:它出现在它的平方数
的右边。例如:5是25的右边的数,25是625右边的数,因此,5和25都是同构数。
3)篮球比赛有一个倒计时的时钟,以每节15分钟为例,设计每节的倒计时的时钟。设置暂停功能。
注意书上所有练习答案均在参考程序文件夹中
学习网站
1)网络课程资料:
提供VB 网络课程
2)脑友网: VB 学习网站
3)学习VB 的网络课件:
4)VB 试题:
5)东莞中学信息技术网:
普通高中技术课程网:http://blog.cersp.com/6002/category/4662.aspx
一、 教学目标
1、 知识与技能
知识目标:
1.对“算法”的概念作进一步的了解。 2.了解解析算法的特点。
3.通过实例的学习,掌握解析算法的各环节。 4.掌握运用各学科知识解决实际问题的方法。
5.掌握从解决问题的解析式到设计相应程序的窗体和程序代码的方法。 6.通过实践掌握用解析算法编写程序代码的一些技巧。 7.能关注使用解析算法解决问题的意义。
8.在综合应用各种知识解决问题时提高自己的整体素质。
9.能运用学过的窗体和控件的基本知识是进行可视化编程。善于通过交流设计出简洁好用的界面。 技能目标
能够用解析法分析简单问题,设计算法,编写程序求解问题。 2、 方法与过程
以学生生活中最熟悉的测量物体、楼房的高度入手,引出有关测量的话题。通过测量不可到达底部的物体的高度的问题,导出了解析算法的基本概念,然后通过计算电阻和计算小球弹跳路程的两个例题,叙述了解析算法应用的两个重要手段:通过列出方程(或方程组) 然后求解和用重复结构对解析式进行计算。进一步提高学生对解析算法和可以通过多种方法设计程序的理解。 3、 情感态度和价值观
结合高中生想象具有较强的随意性、更富于现实性的身心发展特点,综合反映出提升学生在各个领域的计算机应用水平,提高学生交流和讨论,自己总结获得新的知识能力,培养学生正确寻找解决问题的方法和正确的学习方法。
二、 重点难点
1、 教学重点
(1) 理解解析法的基本概念。要培养学生善于综合运用数学、物理、化学等各学科的知识和思考方法,寻找问题中各要素之间的关系,导出解决问题的解析式或列出相关的方程,然后设计程序求解。
(2) 根据算法写出程序代码并且调试程序求得问题的正确解答的能力。当算法确定之后,应当能够熟练地根据算法写出程序代码,并且通过调试程序发现并改正错误,得出正确的解答。
(3) 根据问题的特点,找到系统提供的资源(如各种数据类型、内部函数等等) ,简化问题的求解过程。 2、 教学难点
(1) 解析式的导出或方程(组) 的列出并求解。这些工作要求对问题所涉及的领域有比较深的认识,它的困难是外在的,是由问题的性质决定的。
(2) 算法的合理设计。不论是使用重复结构还是寻找的运算顺序,对于经验不足的初学者是有困难的,特别是计算过程中可能会遇到计算误差的积累影响运行结果的情况,需要有较多的编程经验才能加以解决。 (3) VB 的数据类型。
三、 教学环境
1、 教材处理
教材选自《广东省普通高中信息技术选修一:算法与程序设计》第四章第一节,本节从古埃及测量金字塔高度故事引入,引出有关测量的话题。通过一道测量不可到达底部的物体的高度的问题,导出了解析算法的基本概念,然后通过计算小球弹跳路程的计算,和电阻计算两个例题,叙述了解析算法应用的两个重要手段:用重复结构对解析式进行计算和通过列出方程(或方程组) 然后求解。在此基础上教材安排了两个实践探究活动,进一步提高学生对解析算法的理解。
教材经处理后,以学生生活中最熟悉的测量物体、楼房的高度入手,引出有关测量
的话题。通过一道测量不可到达底部的物体的高度的问题,导出了解析算法的基本概念,然后通过计算电阻和计算小球弹跳路程的两个例题,叙述了解析算法应用的两个重要手段:通过列出方程(或方程组) 然后求解和用重复结构对解析式进行计算。进一步提高学生对解析算法和可以通过多种方法设计程序的理解。
教学方法是以实现“教—引—放—收”的教学过程,体现“问题情景式任务驱动”的教学方法。任务驱动强调让学生在密切联系学习、生活和社会实际的有意义的“任务”情景中,通过完成任务来学习知识、获得技能、形成能力、内化伦理。
采用任务驱动、讲解、分析归纳、探究、实践操作和学生自主学习相结合的学习方法。 2、 预备知识
学生已掌握了用计算机解决问题的过程,掌握了VB 界面设计的相关内容,掌握了程序设计的基础。 3、 硬件要求
建议本节课在计算机机房或多媒体电脑教室中完成,最好有广播教学系统或投影仪,为拓展学习,学生机应允许上互联网。
4、 所需软件
学生机要安装VB6.0或以上版本。 5、 所需课时 2课时(90分钟)
四、 教学过程 导入:
同学们,我想所有的同学都会测量物体和楼房的垂直高度,但如下的问题会测量吗? 4.1.1 用解析法求解问题的基本过程 1、测量高度问题的求解 问题:
4.1: 如图4-1所示,MN 是竖直于地面的物体,其底部N 不可到达。为了测量MN 的高度,在地面上选取一条与MN 在同一平面的水平线线段AB 为基线,测得AB 的长为a=20米,在A 点向M 点张望的仰角 A =38.40,在B 点向M 点张望的仰角B =22.80。试设计程序计算高度MN 。
图4-1(1)测量物体高度示意图
(1) 分析问题(以下内容由老师正确引导,学生小组协作完成)
我们不可能直接求出物体的高度。但我们可以利用所学的知识(三角函数)来完成该工作。
在直角三角形ANM 中可以得到: tanA 0=MN/AN 即:AN =MN/ tan A0
在直角三角形BNM 中可以得到: tan B0=MN/BN
即:BN =MN/ tan B0 所以:
AB =BN -AN
=MN/tan B0-MN/tan A0 =MN (1/ tan B0-1/tan A0 )
(2) 设计算法
① 设计输入输出界面,从三个文本框中输入基线长a ,仰角A 0用Alpha 代替、B 0用
Bata 代替
② 计算tan A0的倒数(用COTA 表示),即
COTA =1/tan(A 0*3.14159/180);
③ 计算tan B0的倒数(用COTB 表示),即 COTB =1/tan(B 0*3.14159/180);
④ 计算a/(COTB-COTA) ; ⑤ 输出结果
(3) 编写程序
设计窗体如图4-2
图4-1(2)测量高度问题程序的窗口
表4-1(1)对象属性表参考程序4-1:
Private Sub Command1_Click() a = Val(Text1.Text) Alpha = Val(Text2.Text)
bata = Val(Text3.Text) pi = 3.14159265
COTA = 1 / Tan(Alpha * pi / 180) COTB = 1 / Tan(bata * pi / 180) MN = a / (COTB - COTA) Text4.Text = MN End Sub
(4) 调试程序(运行源程序)
图4-1(3)参考程序4-1运行的结果
(5) 检验结果
探究:
在本问题里,如果输入的两个仰角相等,或其中一个仰角是900,都会导致程序非正常结束。如果,甚至会使输出的结果是负数!请讨论一下使用者输入数据时比较常见的错误会有哪些?我们在程序中可以怎样防范?
2、总结
解析法的基本概念
通过分析问题中各要素之间的关系,用最简练的语言或形式化的符号来表达它们的关系,得出解决问题所需的表达式,然后设计程序求解问题的方法称为解析法。
4.1.2 用解析法求解问题的实践 1、电阻计算问题 问题:
4-2:在一家工厂作社会调查时,张军了解到他们正在进行一项技术改革,
其中有一个环节是改变一个局部电路的电阻以观察对整个器件的影响。这个局部电路由并联的两个分支组成(如图4-5),其中一个分支的等效电阻是R 1,而另一个分支的等效电阻为R 2。因为电路特性的需要,必须保持R 2-R 1=2000Ω。工厂技术人员希望由这两个分支并联的电路的总电阻R 分别取为1000Ω、2000Ω……100000Ω。这样得多次计算R 1和R 2的电阻值,而这种计算
每次都很麻烦。于是张军就编制了一个程序帮他们解决问题,只要输入总电阻R 的值,程序就计算出相应的R 1和R 2的值。张军因此受到了技术员的称赞。你也能编出这个程序吗?
R 2
图4-
1(4)
并联电路示意图
(1)
分析问题。
(老师引导,学生完成) 张军是这样想的:
根据并联电路电阻的计算公式,1/R=I/R1十1/R2,以R2=R1+2000代入,
即得:
1/R=1/R1+1/(R1+2000)
以R1为未知量、R 为已知量,通过去分母整理可以得到关于R1的方程: R12+(2000-2*R)*R1-2000*R=0, 解这个关于R1的二次方程即可解决问题。
(2)设计算法。(老师引导,学生完成)
根据上述的分析,张军写出解决问题的算法如下: ①输入总电阻R ;
②计算方程R12+(2000-2R)*R1-2000*R=0的判别式=(2000-2*R)2+8000*R; ③如果D ≥0转④,否则转⑥;
④计算出方程R 12+(2000-2*R)*R1-2000*R=0的根R 1=(2*R-2000+sqr(D))/2,(R1’=(2*R-2000+sqr(D))/2肯定是增根,不必计算) ; ⑤把R1和R1+2000在两个文本框内输出,转⑦; ⑥输出方程没有解的信息“不可能”; ⑦结束。 (3)编写程序。
用文本框输入总电阻值,用两个文本框分别输出R 1和R 2的值,用3个标签 框对这些文本框作说明。另外设一个命令按钮触发程序执行,如图4-6所示。
图4-1(5)电阻设计问题的窗体设计图
表4-1(2)对象属性表
先设计好电阻计算问题的窗口,再根据算法写出程序代码:(其中带下划线的部分由学生讨论完成)
Private Sub Command1_Click() D = L * L + 4 * 2000 * R
R1 = (-L + Sqr(D)) / 2 Else
Text3.Text = "不可能" End If End Sub
(4)调试程序
图4-1(6)电阻计算问题解答示意图
(5)检测结果
小结:用解析法求解问题,有时需要根据问题列出方程,用解方程的方法得到答案。 例如:X 5+X3-2*X-9=0就没有现成的求根公式可用,这时就需要用数值逼近的方法求解。
新课:(本节第二课时)
导入:
复习解析法的概念:通过分析问题中各要素之间的关系,用最简练的语言或形式化的符号来表达它们的关系,得出解决问题所需的表达式,然后设计程序求解问题的方法称为解析法。
2、小球弹跳问题 问题:
4-3:小球从10米高处自由下落,每次弹起的高度是下落高度的70%。当小球弹起的高度不足原高度的千分之一时,小球很快就会停止跳动。计算小球在整个弹跳过程中所经历的总程(忽略弹起高度不足原高度千分之一的部分)。
(1) 分析问题:(老师详细分析整个运动过程,学生讨论完成带下划线的部分内容)
图4-1(7)小球运动分析图
根据上图的第一种分析方法,请思考并归纳规律:_小球每次弹起的距离就是本次下落距离的0.7倍,而每一次下落距离等于上一次弹起的距离 即: L n =0.7H n H n+1= Ln
其中H n 为第n 次下落的距离,L n 为第n 次弹起的距离,n=1,2,3,„,H 1=10。计算一直进行到第m 次(L m ≥H 1/1000而L m 〈H 1/1000〉,把它们都相加,即可求出问题的解:
S =(H 1+L 1)+(H 2+L 2)+(H 3+L 3)+„+(H m +L m ) (2)设计算法
①输入小球开始高度Home ; ②H =Home ; ③S =0; ④令L =0.7*H;
⑤S =S +H +L ;(讲解累加器)
⑥H =L ;
⑦如果L ≥Home/1000则返回④, 否则下一步; ⑧输出S 的值; ⑨结束。
(2) 编写程序(给出部分程序, 让学生补充完整)
Private Sub Command3_Click() Dim home As Single
Dim H As Single, s As Single, l As Single
home = Val(InputBox("请输入小球的开始高度(米):", , 10)) H = home s = 0 Do l=0.7*H
Loop While Print "小球移动的总路程是:"; s; "米" End Sub (运行源程序)
第二种分析方法 (1)分析问题
注意到:第一次下落是10米
第一次弹起和第二次下落的距离都是第一次下落的: 第二次弹起和第三次下落的距离都是第一次下落的:
第三次弹起和第四次下落的距离都是第一次下落的: · ·
第i 次弹起是第一次下落的:
当第i 次弹起的高度不足原高度的千分之一时,即0.7^i>1/1000 时,把它们都相加,即可求出问题的解
S=S+2 * H * 0.7 ^ I (2)设计算法
①输入小球开始高度Home ; ②__s=h____
③__i=0______
④ i = i + 1
⑤ s= s + 2 * H * 0.7 ^ i
⑥如果 0.7 ^ i >= 1 / 1000 则返回④,否则退出到⑦
⑦S=S-H * 0.7 ^ i
⑧输出s 的值
⑨结束
(3)编写程序
Private Sub Command1_Click()
Dim home As Single
Dim H As Single, s As Single
home = Val(InputBox("请输入小球的开始高度(米):", , 10))
H = home
Do
Loop While
S=S-H * 0.7 ^ i
Print "小球移动的总路程是:"; S; "米"
End Sub
(运行源程序)
(4)调试程序(略)
方法归纳:用解析法求解问题,并非只是象计算物体高度和电阻这样一个解析式就可以完事,很多时候还要根据问题给出的条件,运用归纳、演绎等逻辑方法,揭示问题各要素之间的关系,寻找表示这种关系的表达式,有时需要计算的解析式是一组而不仅仅是一条,需要使用合适的结构设计算法和编制程序,求得问题的答案。
图4-1(8)小球程序运行结果图
(5)检查结果(略)
小结:
用解析法求解问题,许多时候并非只是计算一个解析式就可以完事,还要根据问题给出的已知条件,运用归纳、演绎等逻辑方法,揭示问题各要素之间的关系,寻找表示这种关系的表达式,
有时需要计算一组解析式,需要使用合适的结构设计算法和编制程序,求得问题的答案。
学生实践与讨论
(1)计算下面表达式的值
试用三种运算方法计算此式的值,并上机调试,讨论三种方法算出来的结果为什么不同?
第一方法:先求分子和分母的乘积,再用分子除以分母。
Private Sub Command3_Click()
s = 1
v = 1
Next i
ss = s / v
Text1.Text = ss
End Sub
结果分析: 分子分S 和分母V 的结果均超出了取值范围
第二方法:1÷2÷4÷6÷8÷10÷„÷1000×3×5×7ׄ×999
Private Sub Command2_Click()
m = 1
n = 2
s = 1
Do Loop Until n >= 1000
Do Loop Until m >= 999
Text1.Text = s
End Sub
结果分析: 结果为零,因为做完第一次循环后S 的结果已经很小无限趋近零了
第三方法:1÷2×3÷4×5÷6ׄ×999÷1000
Private Sub Command4_Click()
s = 1
1×3×5ׄ×999
Next i
Text1.Text = s
End Sub
调试运行可以得出正确答案。
(2)设计通用倒计时程序
要求:输入目标日期,就可以算出目标日期离当天有多少天。
分析问题:VB 提供“日期型(Date )”的数据类型,日期型数据表示方法和运算方法如下:
①在一对“#”符号之间填入通常可以认为日期和时间的字符。如
#Jannuary 1,2000# #1 Jan 2000#
#01/01/2000# #2000-1-1#
注:在文本框输入日期时,不用输“#”
②日期型数据也可进行运算,方式有以下几种
两个日期相减,得到两个日期相隔的天数
#2007-6-7#-#2005-5-23#
#2007-6-7#-Date (该函数表示当天的日期)
一个日期型数据加(减)一个表示天数的整数,其结果是该整数值之后(之前)的日期。 #2005-5-23#+80(-80)
结果分别:#2005-8-11# #2005-3-4#
算法设计:
① 设计输入输出界面,在上面两个文本输入起始日期和目标日期,在下面的文本和标
签输出两者还有多少天。aa 表示起始日期,dd 表示目标日期。
图4-1(9)两个日期之间相差多少天的窗体设计图
标签 ②计算相距日期:比如想了解现在离07年高考还有多少天?可用ss 表示相距天数,依据上面分析,可得
ss=#7/6/2007#-Date_
③ 输出结果
Text1.Text=ss 编写程序:
Private Sub Command1_Click() aa = Text1.Text
Text3.Text = ss
Label3.Caption = Text2.Text & "离" & Text1.Text & "还有:"
End Sub
图4-1(10)两个日期之间相差多少天程序运行结果图
拓展提高
1)求出100到1000之间有哪些数字其数字之和是6。
2)在窗体上输出1至99之间的全部同构数。同构数是这样的一组数:它出现在它的平方数
的右边。例如:5是25的右边的数,25是625右边的数,因此,5和25都是同构数。
3)篮球比赛有一个倒计时的时钟,以每节15分钟为例,设计每节的倒计时的时钟。设置暂停功能。
注意书上所有练习答案均在参考程序文件夹中
学习网站
1)网络课程资料:
提供VB 网络课程
2)脑友网: VB 学习网站
3)学习VB 的网络课件:
4)VB 试题:
5)东莞中学信息技术网:
普通高中技术课程网:http://blog.cersp.com/6002/category/4662.aspx