《4-1节用解析法设计程序》由会员分享,可在线阅读,更多相关《4-1节用解析法设计程序(18页珍藏版)》请在金锄头文库上搜索。
1、41节节用解析法设计程序用解析法设计程序解析法的概念:通过分析问题中各要素之间的关系,用最简练的语言或形式化的符号来表达它们的关系,得出解决问题所需的表达式,然后设计程序求解问题的方法称为解析法。问题:(p96)如图下土所示,MN是竖直于地面的物体,其底部N不可到达。为了测量MN的高度,在地面上选取一条与MN在同一平面的水平线线段AB为基线,测得AB的长为a=20米,在A点向M点张望的仰角 A38.40,在B点向M点张望的仰角B22.80。试设计程序计算高度MN。20米(1)分析问题分析问题 在直角三角形ANM中可以得到:tanA0MN/AN即:ANMN/ tan A0在直角三角形BNM中可以
2、得到:tan B0MN/BN即:BNMN/ tan B0所以:ABBNANMN/tan B0MN/tan A0 MN(1/ tan B01/tan A0 ) 设计输入输出界面,从三个文本框中输入基线长a ,仰角A0用Alpha代替、B0用Bata代替 计算tan A0的倒数(用COTA表示),即COTA1/tan(A03.14159/180); 计算tan B0的倒数(用COTB表示),即COTB1/tan(B03.14159/180); 计算a/(COTBCOTA); 输出结果(2 2) 设计算法设计算法(3)编写程序编写程序设计窗体如图 对象名 属性名 属性值 功能 标签 名称 Label
3、1、Label2Label3、Label4标签的名称 Caption 基线长 a=仰角 =仰角 =被测物体高度=设置标签显示的内容 文本框Enabled Text1 textboxText2 textbox Text3 textbox Text4 textbox文本框的名称text 全部全部设置成空置成空设置text的值按钮 名称 command1命令按钮的名称 Caption 计算设置命令按钮显示的内容 Private Sub Command1_Click()Private Sub Command1_Click() a = Val(Text1.Text) a = Val(Text1.Text
4、) Alpha = Val(Text2.Text) Alpha = Val(Text2.Text) batabata = Val(Text3.Text) = Val(Text3.Text) pi = 3.14159265 pi = 3.14159265 COTA = 1 / Tan(Alpha * pi / 180) COTA = 1 / Tan(Alpha * pi / 180) COTB = 1 / Tan( COTB = 1 / Tan(batabata * pi / 180) * pi / 180) MN = a / (COTB - COTA) MN = a / (COTB - COT
5、A) Text4.Text = MN Text4.Text = MNEnd SubEnd Sub参考程序:参考程序: (4)调试程序调试程序参考程序运行的结果 用解析法求解问题的实践用解析法求解问题的实践 1 1、电阻计算问题、电阻计算问题在一家工厂作社会调查时,张军了解到他们正在进行一项技术改革,其中有一个环节是改变一个局部电路的电阻以观察对整个器件的影响。这个局部电路由并联的两个分支组成(如图45),其中一个分支的等效电阻是R1,而另一个分支的等效电阻为R2。因为电路特性的需要,必须保持R2R12000。工厂技术人员希望由这两个分支并联的电路的总电阻R分别取为1000、2000100000
6、。这样得多次计算R1和R2的电阻值,而这种计算每次都很麻烦。于是张军就编制了一个程序帮他们解决问题,只要输入总电阻R的值,程序就计算出相应的R1和R2的值。张军因此受到了技术员的称赞。你也能编出这个程序吗?R1R2(1)分析问题分析问题 根据并联电路电阻的计算公式,1R=IR1十1R2,以R2=R12000代入,即得:1/R=1/R1+1/(R1+2000)以R1为未知量、R为已知量,通过去分母整理可以得到关于R1的方程:R12+(20002*R)*R12000*R=0,解这个关于R1的二次方程即可解决问题。(2)设计算法设计算法输入总电阻R;计算方程R12+(20002R)*R12000*R
7、=0的判别式=(2000-2*R)2+8000*R;如果D0转,否则转;计 算 出 方 程 R12+(2000 2*R)*R1 2000*R=0的 根 R1=(2*R-2000+sqr(D)2,(R1=(2*R-2000+sqr(D)2肯定是增根,不必计算);把R1和R1+2000在两个文本框内输出,转;输出方程没有解的信息“不可能”;结束。(3)编写程序编写程序 标签1标签2标签3文本框1文本框3文本框2命令按钮对象名 属性名 属性值 功能 标签 名称 label1Label2Label3标签的名称 Caption总电阻R=R1=R2=设置标签显示的内容 文本框EnabledText1 te
8、xtboxText2 textboxText3 textbox文本框的名称text全部全部设置成空置成空设置text的值按钮 名称 command1命令按钮的名称 Caption 计算设置命令按钮显示的内容 PrivateSubCommand1_Click()R=Val(Text1.Text)L=2000-2*RD=L*L+4*2000*RIfD=0ThenR1=(-L+Sqr(D)/2Text2.Text=R1Text3.Text=R1+2000ElseText2.Text=不可能Text3.Text=不可能EndIfEndSub程序代码:程序代码:学生实践与讨论学生实践与讨论(1)计算下面
9、表达式的值 1359992461000第一方法:先求分子和分母的乘积,再用分子除以分母。Private Sub Command3_Click() s = 1 v = 1 For i = 1 To 999 Step _ _ _ Next i ss = s / v Text1.Text = ssEnd Sub分子分S和分母V的结果均超出了取值范围结果分析:第二方法:12468101000357999Private Sub Command2_Click()m = 1n = 2s = 1Do_ _ _ _Loop Until n = 1000Do _ _Loop Until m = 999Text1.Text = sEnd Sub结果为零,因为做完第一次循环后S的结果已经很小无限趋近零了结果分析:第三方法:1234569991000Private Sub Command4_Click() s = 1 For i = 1 To 999 Step _ _ _ _ Next i Text1.Text = sEnd Sub(2)设计通用倒计时程序要求:输入目标日期,就可以算出目标日期离当天有多少天。