| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1119 人关注过本帖
标题:请大神看看,有没有需要简化的
只看楼主 加入收藏
sclx88
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2016-7-31
结帖率:100%
收藏
已结贴  问题点数:12 回复次数:5 
请大神看看,有没有需要简化的
程序代码:
Public DS As Double
Public DC As Double
Public Y As Double
Public S As Double
Public h As Double


Private Sub Command1_Click()
pi = 4 * Atn(1)
DS = Val(Text1(0).Text)
DC = Val(Text1(1).Text)
h = Val(Text1(2).Text)
Dim i As Integer
Dim F As Double
Dim n As Integer '项目个数
Dim sum As Double
n = 0
sum = 0
For i = 0 To Text7.UBound
F = DS + DC * Sin(Val(Text2(i).Text) * pi / 180) ^ 2 'F值
If Val(Text3(i)) > 0 Then
Text5(i) = Round(Abs(F) * (Val(Text4(i))) ^ 2 / 2000 / (Val(Text3(i)) - h) _
+ (Val(Text3(i)) - h) / 2000 + 1, 5)
sum = sum + Text5(i)
n = n + 1
End If
Next
If n > 0 Then
Text6.Text = Round(sum / n, 4)
Else
MsgBox "容我卜一卦,嘿!你今天要中500万!"
End If
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Command3_Click()
pi = 4 * Atn(1)
DS = Val(Text1(0).Text)
DC = Val(Text1(1).Text)
h = Val(Text1(2).Text)
Dim i As Integer
For i = 0 To Text7.UBound
Text7(i).Text = Round(DS + DC * Sin(Val(Text2(i).Text) * pi / 180) ^ 2, 3)
Next
End Sub

Private Sub Command4_Click()
Dim t As Control
For Each t In Me.Controls
If TypeOf t Is TextBox Then t.Text = ""
Next
End Sub


 Private Sub form_load()
Dim i As Long
    For i = 0 To Text1.UBound
    Text1(i).Text = ""
Next
Dim t As Object
    For Each t In Text2
    t.Text = ""
Next
Dim t1 As Object
    For Each t1 In Text3
    t1.Text = ""
Next
Dim t2 As Object
    For Each t2 In Text4
    t2.Text = ""
Next
Dim t3 As Object
    For Each t3 In Text5
    t3.Text = ""
Next
Dim t4 As Object
    For Each t4 In Text7
    t4.Text = ""
Next
Text6.Text = ""

 End Sub


小白到处求大神终于写完一个简单的程序了,请大家看看有没有需要简化,需要改进的地方。谢谢
搜索更多相关主题的帖子: color 
2016-08-03 17:49
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:12 
1、
Sub Command4_Click()
Sub form_load()
这二个函数执行结果有什么区别?如果没区别,那么在 Sub form_load() 只写一行 call Command4_Click

2、
在 Command1_Click 中的运行量大不在?
Text5(i) = Round(Abs(F) * (Val(Text4(i))) ^ 2 / 2000 / (Val(Text3(i)) - h) + (Val(Text3(i)) - h) / 2000 + 1, 5)
sum = sum + Text5(i)
在这二行命令中,出现了 二个 text5(i) ,2 个 text3(i) 。
如果去运算量大的话,建议的优化方向:
是使用一个变量保存计算过程中的 Text5(i) 的值,
使用一个变量保存计算过程中的 (Val(Text3(i)) - h) 的值。

3、
pi = 4 * Atn(1)
这个你是当常量使用,建议这条命令移到 Sub form_load() ,在程序运行期间,只需执行一次就可以,不需要每个过程都执行一遍。

这三条命令,变量是窗体全局变量,内容都是一样的,因为在二个过程中使用过,建议可以单独定义为一个过程。提高代码复用性。
DS = Val(Text1(0).Text)
DC = Val(Text1(1).Text)
h = Val(Text1(2).Text)


授人于鱼,不如授人于渔
早已停用QQ了
2016-08-03 18:05
sclx88
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2016-7-31
收藏
得分:0 
回复 2楼 风吹过b
豁然开朗  谢谢
这三条命令,变量是窗体全局变量,内容都是一样的,因为在二个过程中使用过,建议可以单独定义为一个过程。提高代码复用性。
DS = Val(Text1(0).Text)
DC = Val(Text1(1).Text)
h = Val(Text1(2).Text)
这个是怎么单独定义的,放在哪里呢

[此贴子已经被作者于2016-8-3 18:17编辑过]

2016-08-03 18:12
sclx88
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2016-7-31
收藏
得分:0 
回复 2楼 风吹过b
pi = 4 * Atn(1)这个移过去不能使用了啊,计算结果不对了呢
 Private Sub form_load()
  pi = 4 * Atn(1)
Call Command4_Click
 End Sub
2016-08-03 18:28
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
回复 4楼 sclx88
回复,你的 pi ,要先定义为 全局窗体变量或全局变量。
然后再到 form_load 事件中初始化。
------------------------

public sub readtxt()
DS = Val(Text1(0).Text)
DC = Val(Text1(1).Text)
h = Val(Text1(2).Text)
end sub

Private Sub Command1_Click()
call readtxt
Dim i As Integer
Dim F As Double
......

Private Sub Command3_Click()
call readtxt
Dim i As Integer
......


授人于鱼,不如授人于渔
早已停用QQ了
2016-08-03 20:48
sclx88
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2016-7-31
收藏
得分:0 
回复 5楼 风吹过b
谢谢大神,又解锁新姿势了
2016-08-03 21:16
快速回复:请大神看看,有没有需要简化的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070543 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved