一个让人困扰的编程思路问题。

unsv29 2009-08-15 08:41:34
要求:编写一个程序 根据一个人的生日,计算他的年龄,根据他的年龄计算他的退休金。

我目前的写法是:


Public Function 计算生日()
计算生日
call 计算年龄
End Function


Public Function 计算年龄()
计算年龄
call 计算退休金
End Function

Public Function 计算退休金()
计算退休金
End Function




这种做法的最大缺点是 比如这个程序:
Public Function 计算生日()
计算生日
call 计算年龄
End Function

函数名字叫做“计算生日”,但是这个函数的内容既有 计算生日的代码,而且还调用了个 计算年龄的子函数。
也就是函数名字无法准确反映函数的内容。

大家有好的办法么?

这个程序要怎么编写,比较好些?
...全文
174 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dingyanwei 2009-08-16
  • 打赏
  • 举报
回复
lz rp存在严重问题。
unsv29 2009-08-16
  • 打赏
  • 举报
回复
有人给出了标准答案:

写程序就像写作文,一定要有一个中心思想,即使你的程序可以解决一系列的问题,但是主要问题应该只列一个,就是说要抓主要矛盾。

反观你的程序,就没有做到这一点,你的目标不清楚。首先要知道:你想做什么,然后设计你的程序。
如果你想要计算一个人的退休金你可以:

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
chinaboyzyq 2009-08-15
  • 打赏
  • 举报
回复
......
zdingyun 2009-08-15
  • 打赏
  • 举报
回复
继续围观!
......
unsv29 2009-08-15
  • 打赏
  • 举报
回复
3楼,这个不是问题么??

我觉得是个问题啊 你有什么好的解决方案么?
顺便看看你的文档组织能力到底有多强?
dingyanwei 2009-08-15
  • 打赏
  • 举报
回复
稍稍似乎明白点楼主的一点点意思了,不过还不太透彻。

因此,回复如下:
计算生日代码纯属没有任何意义,因为生日已经提供了,没必要计算了,再说生日也不是计算出来的。
unsv29 2009-08-15
  • 打赏
  • 举报
回复
回4楼,具体情况你看看我在5楼所说的,就是针对“在子程序内包含有需要按特定顺序执行的操作,这些步骤需要共享数据,而且只有在全部执行完毕后才能完成一项完整的功能。”要如何做?

我在“楼主位”给的那就是个随便的例子,是用来说明问题的。

unsv29 2009-08-15
  • 打赏
  • 举报
回复
回1楼

Public Function 计算生日()
计算生日
call 计算年龄
End Function


这个 第一个“计算生日”指的是函数的名字 。 第二个 “计算生日”指的是 具体的计算生日的代码。

============================

回2楼:

请你给起个好名字!!!呵呵




------------------------------------------------------------------------


这个问题确实很困扰我 现在正在想如何解决。 针对这个问题我查了大量的资料,换一种【说法】就是:
在子程序内包含有需要按特定顺序执行的操作,这些步骤需要共享数据,而且只有在全部执行完毕后才能完成一项完整的功能。

我的程序要求是:根据一个人的生日,计算他的年龄,根据他的年龄计算他的退休金。这个程序要求是符合【说法】的。

要怎么办才好呢?

希望我的问题描述的已经足够清楚了
kmzs 2009-08-15
  • 打赏
  • 举报
回复
沒看懂啊,生日应该是给定的,不需要计算,因此应该是:
Public Function 计算年龄(生日参数)As Integer
返回年龄
End Function

Public Function 计算退休金(年龄参数)As Double
返回退休金
End Function
fzx4936 2009-08-15
  • 打赏
  • 举报
回复
不是问题的问题
dingyanwei 2009-08-15
  • 打赏
  • 举报
回复
函数名字无法准确反映函数的内容

======================
那就用个更贴切的来描述不就得了。
dingyanwei 2009-08-15
  • 打赏
  • 举报
回复
Public Function 计算生日()
计算生日
call 计算年龄
End Function

======================
这不是递归了吗?

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧