1、3.15 解析算法,学习目标,1.了解解析算法的概念 2.知道解析算法的基本特征 3.掌握解析算法的设计思路,概念,解析算法基本思想:用解析的方法找出表示问题的前提条件与所求结果之间关系的数学表达式,并通过表达式的计算来实现问题求解。 在设计解析算法时,必须注意保证计算过程描述的正确性。,问题求解,例1. 利用临时变量t,进行交换两个变量a,b的值。 可以使用如下三条语句来完成: t=a : a=b : b=t t=b : b=a : a=t 但必须注意执行语句的先后顺序不能调换。,实践活动,例2. 计算n个电阻并联后的总电阻值。 电阻有A、B两端,把n个电阻的A端和A端相联,B端和B端相联,
2、形成并联结构,称为“n个电阻并联”。这时,从并联的n个电阻的两端A、B测得的电阻值,是这n个电阻并联的总电阻值。图1是2个电阻并联,图2是3个电阻并联。设计一个程序,计算电阻并联的总电阻值R。其中,每个电阻的阻值可由键盘输入,当输入了一个0时,表示输入结束。,图1 图2,1.算法分析: n个并联电阻的总电阻值R的倒数等于参与并联的各个电阻值的倒数之和,即:,2.算法流程图(点击下图打开演示动画):,3.程序界面设计:,控件属性值的设置参考如下表,4.分析算法流程,编写代码; (1)定义全局变量rs,用来存储并联组内各电阻的总阻值,因为在多个子程序都要使用到该变量。 Dim rs As Doub
3、le (2)子程序Text2_Click处理用户单击文本框Text2的事件,完成如下任务: 清除列表框List1显示数据; 累加器rs的初值重新设置为0; 清除文本框Text1和文本框Text2的数据; Sub Text2_Click() List1.Clear rs = 0 Text1.Text = “ Text2.Text = “ End Sub,(3)子程序Text2_KeyPress处理用户在文本框Text2按键的事件,完成如下任务: 只有当键入一个回车(ASCII编码值是13)时,表示一个数据输入完毕,执行下面的处理: 从文本框Text2中读取用户输入的一个电阻值,存入送到变量r中;
4、 判断如果它是一个有效的电阻值(大于0)时,那么就将它的倒数累加到变量rs中; 并把用户输入的这个电阻值显示在列表框List1中; 清除文本框Text2的原有数据。,Sub Text2_KeyPress(KeyAscii As Integer) Dim r As Double r为局部变量,只在本过程内使用 If KeyAscii = 13 Then r = Val(Text2.Text) 读取用户的电阻值 If r 0 Then 判断输入的是否为一个有效的电阻值 rs = rs + 1 / r 将电阻值的倒数累加到rs List1.AddItem Str(r) 在列表框List1中表示 En
5、d If Text2.Text = “ 清除文本框Text2的数据 End If End Sub,(4)子程序Command1_Click的任务,将计算总阻值的的结果显示在文本框Text1中。 Sub Command1_Click() If rs 0 Then Text1.Text = Str(1 / rs) Else Text1.Text = “无连接“ End Sub 5.运行调试程序;,课堂练习,1.计算 的值。请将下面划线处 的代码填写完整: Private Sub Command1_Click() Dim i As Integer Dim s As Double s = 0 For
6、i = 1 To 50 _ (1) Next i Text1.Text = Str(s) End Sub,s = s + 1 / (2 * i - 1),2. 计算 的值。请将下面划线处的代码填写完整: Private Sub Command1_Click() Dim m As Integer, n As Integer Dim s As Double s = 1 _ _ (1) For n = 1 To 7 m = m * n If _ Then s = s + 1 / m (2) Next n Text1.Text = Str(s) End Sub,n Mod 2 = 1,m = 1,3.计算S=1-22+32-42+(-1)n-1n2的值。请将下面划线处 的代码填写完整: Private Sub Command1_Click() Dim n As Integer, t As Integer, m As Integer Dim s As Integer n = Val(Text2.Text) _ (1) t = 1 For m = 1 To n s = s + t * m * m _ (2) Next m Text1.Text = Str(s) End Sub,s = 0,t=-t,(或 t=(-1)(m-1)),