设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2947|回复: 6
打印 上一主题 下一主题

[模块/函数] 【Access小品】抽丝剥茧 -- 算法及算法实现概述

[复制链接]
跳转到指定楼层
1#
发表于 2015-7-21 11:38:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  版友lingjiang同志问了一个极其无聊的问题,大意是要随机产生两组结果相等且小于等于20的自然数加减法算式。说其无聊,是因为这个问题除了可以交小朋友算术外,没什么其他的大用。

  问题虽然无聊,但却可以用来概述一下算法及算法实现方面的问题。什么是算法?不知道权威的定义是什么,但可以通俗的理解问题实现某些功能的计算过程和计算方法,也就是说算法包括实现过程和实现方法。就本例来说,实现“随机产生两组结果相等且小于等于20的自然数加减法算式”这个功能,所需要的过程和方法就是算法。

  算法的描述可以是多样性的,你可以用几段话来描述,也可以用一组表来描述,还可以用一个流程图来描述。根据算法的复杂程度可以用各种手段来描述算法。描述的目的只有一个,那就是能让人清晰的理解算法。对于本例,我们可以这样来描述算法:

  第一步:随机产生一个加减号;
  第二步:根据加减号确定和(或差)的上下限,并由此随机产生一个和(或差);
  第三步:根据加减号以及和(或差),确定被加数(或被减数)的上下限,并由此随机产生一个被加数(或被减数);
  第四步:根据加减号、和(或差)以及被加数(或被减数)计算加数(或减数)。

  需要注意的是,对于一个功能来说,其算法不一定是唯一的。也就是说,实现同样的功能,会存在不同的算法,理解这一点十分重要。由此,你还可以猜想到,即使是相同的算法,其实现也不是唯一的。这就像读《王子复仇记》,一千个人会有一千个哈莫雷特。

  所谓算法的实现,就是用特定的语言特定的工具,写出一组代码来实现算法所描述的计算过程,并得到一个功能的实现。所以算法相对来说是抽象的,算法实现则是具象的。至于此例的实现在此不赘述,F11进入VB编辑试图便一目了然了。

  其实以上的算法并不严谨,这种不严谨存在于计算第二组算式中,当和为20和差为1时,第二组算式的运算符与第一组算式运算符相反时将会出错。这个问题的避免需要进一步增加算法的复杂性,至于怎么个搞法由同志们自己去想。

  版友杨雪同志最近对我所写的示例中缺少注释提出了批评,这个错误其实很难改正的。原因在于注释多少合适,并没有确定的衡量标准。太少了看不懂,太多了又杂乱。不过我还是接受杨雪同志的意见,尽可能的加些注释,以便初学者阅读。至于此例中注释的多寡是否恰当就不得而知了。

示例:

视图:





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅

点击这里给我发消息

2#
发表于 2015-7-21 11:42:27 | 只看该作者
可以先在1~20两个数的和:2~40,中间随机取一个结果。
再利用这个结果找到它的求和组合,再随机抽两个组{:soso_e113:}
3#
发表于 2015-7-21 15:02:07 | 只看该作者
杨雪?妹子吧?没印象
4#
 楼主| 发表于 2015-7-21 16:20:50 | 只看该作者
风中漫步 发表于 2015-7-21 15:02
杨雪?妹子吧?没印象

软件网的版友。

点击这里给我发消息

5#
发表于 2015-11-17 10:41:33 | 只看该作者
赞赞赞
回复

使用道具 举报

6#
发表于 2016-8-20 08:40:20 | 只看该作者
良好的教育基础
7#
发表于 2016-8-20 11:06:16 | 只看该作者
已经下载学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-23 13:32 , Processed in 0.181154 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表