要求:编写一个程序 根据一个人的生日,计算他的年龄,根据他的年龄计算他的退休金。我目前的写法是:
Public Function 计算生日()
    计算生日
    call 计算年龄
End Function
Public Function 计算年龄()
    计算年龄
    call 计算退休金
End FunctionPublic Function 计算退休金()
    计算退休金
End Function
这种做法的最大缺点是 比如这个程序:
Public Function 计算生日()
    计算生日
    call 计算年龄
End Function函数名字叫做“计算生日”,但是这个函数的内容既有 计算生日的代码,而且还调用了个 计算年龄的子函数。
也就是函数名字无法准确反映函数的内容。大家有好的办法么?这个程序要怎么编写,比较好些?

解决方案 »

  1.   

    Public Function 计算生日() 
        计算生日 
        call 计算年龄 
    End Function ======================
    这不是递归了吗?
      

  2.   

    沒看懂啊,生日应该是给定的,不需要计算,因此应该是:
    Public Function 计算年龄(生日参数)As Integer
      返回年龄
    End FunctionPublic Function 计算退休金(年龄参数)As Double
       返回退休金
    End Function 
      

  3.   

    回1楼Public Function 计算生日() 
        计算生日 
        call 计算年龄 
    End Function 
    这个 第一个“计算生日”指的是函数的名字 。  第二个 “计算生日”指的是 具体的计算生日的代码。============================回2楼:请你给起个好名字!!!呵呵 
    ------------------------------------------------------------------------
    这个问题确实很困扰我 现在正在想如何解决。 针对这个问题我查了大量的资料,换一种【说法】就是:
    在子程序内包含有需要按特定顺序执行的操作,这些步骤需要共享数据,而且只有在全部执行完毕后才能完成一项完整的功能。我的程序要求是:根据一个人的生日,计算他的年龄,根据他的年龄计算他的退休金。这个程序要求是符合【说法】的。要怎么办才好呢?希望我的问题描述的已经足够清楚了
      

  4.   

    有人给出了标准答案:写程序就像写作文,一定要有一个中心思想,即使你的程序可以解决一系列的问题,但是主要问题应该只列一个,就是说要抓主要矛盾。 反观你的程序,就没有做到这一点,你的目标不清楚。首先要知道:你想做什么,然后设计你的程序。 
    如果你想要计算一个人的退休金你可以: Public Function 计算退休金() 
        ... 
    End Function 这个就是你的目标,如果你在计算退休金的过程中,需要知道年龄,那么你改成 Public Function 计算退休金() 
        call 计算年龄() 
    End Function 
    Public Function 计算年龄() 
        ... 
    End Function 同理,要想获得年龄,需要知道生日,因此 Public Function 计算退休金() 
        call 计算年龄()      //需要用年龄才能计算除退休金 
        ... 
    End Function 
    Public Function 计算年龄() 
        call 计算生日()      //需要知道生日才能知道退休年龄 
        ... 
    End Function 
    Public Function 计算生日() 
        ... 
    End Function 和你说的过程为什么正好相反呢?仔细领悟一下自顶向下程序设计是怎么回事吧。 
    http://topic.csdn.net/u/20090815/21/eedee5a5-984c-43f0-b3e0-60abed3a3e3e.html?seed=1986824929&r=59107026#r_59107026