LabVIEW另类编程:24点.doc
上传人:sy****28 上传时间:2024-09-12 格式:DOC 页数:2 大小:31KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

LabVIEW另类编程:24点.doc

LabVIEW另类编程:24点.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

近代物理实验A2010年12月LabVIEW另类编程:24点曹前(复旦大学光科学与工程系,上海200433)指导老师:俞熹摘要:利用LabVIEW编写能计算24点的程序,提出算法上的修正及一些需要改进的问题。帮助更好理解LabVIEW的编程框架,为更好地将LabVIEW应用于物理实验打下基础。Abstract:ThisstudyaimstouseLabVIEWtocreateavirtualinstrumenttocalculate24pointsGame,thenimprovethealgorithmandpointoutsomeproblemsthatneedtobesolved.ThispaperwillhelpreadersunderstandtheprogramframeofLabVIEWbetter,andprovideabasisforusingLabVIEWinphysicsexperiments.关键词:LabVIEW;编程算法;24点;虚拟仪器引言LabVIEW(laboratoryvirtualinstrumentengineeringworkbench)是一种图形化的编程语言和开发环境,广泛地被工业界、学术界和研究实验室所接受,被公认为是标准的数据采集和仪器控制系统。其图形化的编程环境使编程过程变得生动有趣,使用这种语言编程时,基本上不需要编写程序代码,而是“绘制”程序流程图。LabVIEW尽可能利用工程技术人员所熟悉的术语、图标和概念,因而是一种面向最终用户的开发工具,可以增强工程人员构建自己的科学和工程系统的能力,可为实现仪器编程和数据采集系统提供便捷环境。侯国屏等编著,LabVIEW7.1编程与虚拟仪器设计,清华大学出版社利用LabVIEW提供的图形化编程环境,搭建虚拟仪器平台,制作出能用四则运算计算4个整数得到24点的另类程序,有助于更好的理解LabVIEW的编程框架,为进一步将LabVIEW应用于实际的编程要求打下基础。算法与程序设计首先分析一种算法策略,将输入至程序的四个整型数据记作A、B、C和D。将四个数进行全排列,可以得到4!即24种不同的排列方式。用第一个数与第二个数进行四则运算,可以得到四种不同的结果。所得的结果再和第三个数进行运算,又能分别得到四种不同结果。再将这一结果与最后一数进行运算。可以计算出,会得到24×4×4×4共1536种不同的结果。比较这1000多种结果是否等于24,即是一种可行的计算24点的算法。但是,经过进一步的仔细考虑,可以发现,当计算24点的解的形式为(A÷B)-(C÷D)的形式时,例如四个整数分别为:99、99、529、23时,正确的解法为(99÷99)-(529÷23)=24。但是利用上述算法,由于运算从左到右,是得不到正确的解法的。这就提出了一种算法的改进方法。重新考虑当只有两个数的时候,分别记作A、B,当经过比较大小,确认A大于等于B之后,将A和B分别进行四则运算,即可确认能否得到24的运算结果。将该VI记为double.vi。输入端分别为A、String_A、B、String_B、OriginalAnswer,A、B的数据类型为浮点型,String_A、String_B与OriginalAnswer的数据类型为字符串型,输出端为NewAnswer,类型为字符串型。考虑有三个数的时候,若将两个数进行一次运算,所得的结果与另一个数输入至double.vi的A、B端,即可确认三个数能否计算24点。这里必须注意的是取得两个数不应该任取,而是取尽所有可能的情况,即AB、BC、CA三种情况,而这两数的一次运算,应该考虑由于减法和除法的不对称性,共6种。将该程序记为triple.vi。输入端较double.vi多出C和String_C项,数据类型参考double.vi的设定。再考虑四个数的情况就简单多了,先取尽四个数中取两个数的可能:AB、AC、AD、BC、BD、CD,进行四则运算(实际上有六种运算),将得到的结果与另两个数输入至triple.vi的A、B、C端,就能确定该四个数能否进行24点的运算了。计算以上算法所需要验证的次数,6×6×3×6×4=2592>1536,表明这种算法比前一种算法更好,不会有(A÷B)-(C÷D)这样因为算法上的缺陷而带来的遗漏。在double.vi及triple.vi的程序中,已经预留了数据类型为字符串的表达式的输入端。在四个数第一次的运算过程中,就要将原先四个整数的局部变量转化成字符串型输入到triple.vi中,另外已经经过一次运算的两数,则以加括号、运算符的形式输入。同理从triple.vi输入至double.vi的结果也应加上括号与运算符。这样就可以得到计算2