LabVIEW另类编程24点-复旦大学物理教学实验中心FudanPhysics.docVIP

LabVIEW另类编程24点-复旦大学物理教学实验中心FudanPhysics.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LabVIEW另类编程24点-复旦大学物理教学实验中心FudanPhysics.doc

用LabVIEW实现宾果游戏 苗正钰 复旦大学物理系 08300190014 指导老师:俞熹 摘要:作者利用LabVIEW实现了宾果游戏(猜数字游戏),并由此提出初学LabVIEW的一些实用技巧和编程思路,有助于更全面地理解LabVIEW和更好地将LabVIEW与现实生活中的物理实验相联系。 关键词:LabVIEW;宾果游戏;模块化;逻辑结构 引言 LabVIEW是实验室虚拟仪器集成环境(Laboratory Virtual Instrument Engineering Workbench)的简称,是美国国家仪器公司(NATIONAL INSTRUMENTS,简称NI)的创新软件产品,也是目前应用最广、发展最快、功能最强的图形化软件集成开发环境。 作为一种图形化编程语言,LabVIEW又被称为G语言。其编写的程序则称为虚拟仪器VI(Virtual Instrument),以.VI后缀。大部分C语言能实现的功能它都能实现,不能实现的也可以用程序内接口转给C程序。但是区别于C语言,LabVIEW基本上不写程序代码,取而代之的是类似于电路图和流程图的程序框图。 目前,LabVIEW被广泛应用于工业界、学术界和研究实验室,被公认为是标准的数据采集和仪器控制系统。借助于A/D(Analog/Digital)采集卡,把电压转换成数字信号输入到电脑中,即可用Labview将此信号转换成实验者可见的图像与文字,这是它之所以成为实验室常见软件的最大原因。此外,流程图化的编程环境以及便于观察执行进度的高亮显示功能使得LabVIEW的编程变得十分直观,便于开发者和用户的理解。 对于初学者,在LabVIEW提供的图形化编程环境里,理清所要编的程序的逻辑结构,并将各部分模块化(即设计子VI),有助于更好的理解LabVIEW,为进一步将LabVIEW应用于实际科研打下基础。 程序介绍和设计思路 本实验所要实现的宾果游戏需由系统生成一个随机的三位数(以下称之为“答案”),且其各个位上的三个数两两不同。用户所要做的,就是把这个三位数“猜”出来。用户每输入一次猜测值(以下称之为“猜测”),系统就要将其与答案进行一次比较——两者有y个相同数字但其位置不对应的,反馈给用户的信息包含“yB”;有x个数字和位置都正确的,反馈信息包含“xA”。总的反馈形式为xAyB。用户结合反馈内容,通过逻辑判断,要在一定次数以内找到答案。 由以上各点要求,可以将程序的整个进程缩略为如右图所示的流程。但若将图中所有内容放在单个VI内实现会导致原本直观的程序框图变得冗长臃肿,不便于理解、编译和纠错(对于大多数程序都是如此),故在此将程序“模块化”,亦即将整个程序分成若干个子VI,再用一个主VI将各子VI联系起来从而整体实现宾果游戏。 通过分析程序的流程图,易将整个程序分为以下四个主要模块——“答案生成”、“猜测读入”、“数据处理”和“结果反馈”。 对于“答案生成”模块,程序要生成一个各个位上数字两两不同的三位数。由于涉及判断各数字是否相同,比较简单的实现方法之一是多次用随机数功能经简单的数学处理得到一位整数,然后依次赋值给答案的百位、十位、个位(分别记为a1、a2、a3),并在产生后两位的过程中判断是否与已经生成的数重复。将判断语句与条件结构结合即可只输出符合条件的答案。 对于“猜测读入”模块,因考虑到要在之后的“数据处理”模块中便于用枚举法比较猜测和答案,故在本模块中并不仅仅读取数据,还要将猜测拆分为百位、十位、个位三个数(分别记为r1、r2、r3)。将猜测除以100并向下取整即得r1;将猜测减去r1的100倍,再除以10并向下取整即得r2;同理易得r3。但由于这种方法中每一步的结果要为之后的步骤所引用,故必须用平铺式顺序结构来限定执行顺序。 对于“数据处理”模块,注意到a1、a2和a3一定不相等,为了使程序计算次数尽可能减少,采用枚举判断与条件结构相结合的方式——创建一个局部变量r0,依次给其赋值r1、r2、r3,每次执行以下步骤:将r0与a1比较是否相等;仅当条件为假时将r0与a2比较是否相等;仅当条件为假时将r0与a3比较是否相等;条件为假时给r0赋下一个值直至结束。在此过程中,任何一步条件为真则直接进行判断数的位置是否相同,条件为真时x值增一,条件为假时y值增一,然后给r0赋下一个值直至结束。此外,为了让用户有多次猜测机会,在此模块的起始部分要给x和y赋值为零。 对于“结果反馈”模块,反馈给用户的信息应至少包括已猜测值的列表(记作History)、对应的“xAyB”(记作Feedback)、当前游戏状态(记作Status,用于反映是否已找到答案)。对于Status,可直接判断x是否等于三,再与条件结构相结合给出结果。至于History和Feedback,除了可以用

文档评论(0)

wendang_12 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档