首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LabVIEW基础:以实例教你学For循环和移位寄存器编程

引言

LabVIEW是一种简单易学、形象直观的图形化编程语言,也称为G语言,具有丰富的同传统仪器外观类似的控件库(如旋钮、仪表盘、温度计、波形图表等),可以构建漂亮专业的用户界面,同时,内部提供了庞大的函数库(如数据采集、GPIB、串口控制、数据处理、数据显示及数据存储等),可以满足各行业各领域的开发需求。另外,由于它并非一种封闭的语言,而是具有强大的外部接口能力,可以实现与C/C++、Basic、Matlab等编程语言互通的能力,现在,LabVIEW不仅仅局限于虚拟仪器软件类的开发,而是已经发展成为了一种通用的、完善的、开放的高级编程语言。

LabVIEW语言中四大基本程序框架结构包括顺序结构、选择结构、循环结构和事件结构,其中,循环结构是用的比较多的一种结构,而与之配套使用的移位寄存器更是LabVIEW中的编程难点之一,这次通过一个例子给大家讲解一下For循环和移位寄存器的综合编程方法,帮助大家理解这个知识点。

示例说明

这次的例子是求解水仙花数。

先解释一下什么是水仙花数,水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,严格的定义水仙花数,是指一个3位数,它的每个位上的数字的 3次幂之和等于它本身。如371 = 3^3 + 7^3+ 1^3,则371是一个水仙花数。

编程思路

根据水仙花数的定义,可以理出下面的编程思路:

1、主框架使用For循环,循环次数为900次,在循环框上放置一个移位寄存器,其初始值是一个空数组

2、在循环内对100-999之间的数字,每个数字分别验证其百位、十位及个位数字的3次幂之和是否等于其本身的值,若数字是一个水仙花数,则将其添加到移位寄存器的数组中,否则,保持上次移位寄存器的值

3、当900次循环完成后,移位寄存器数组中的值即为所有的水仙花数的值

关键点处理

根据上面的编程思路,可以理出实现过程中的两个关键点:

1. 将一个三位数如何分解出单独的百位、十位及个位数字?

如对于数字371,如何分解成3个数字3、7、1?

(1) 先对数字371除以10,其商为37,余数为1,则1即为个位数的值1

(2) 对商37继续除以10,得商为3,余数为7,则7即为十位数的值,3为百位数的值

这里使用的关键函数是LabVIEW内置的函数“商与余数 (函数)”,参数说明情况如下图所示:

其返回参数中,x-y*floor(x/y)是余数部分,floor(x/y)是整数商部分。

2. 在For循环中如何保存获得的水仙花数?

在For循环中,使用移位寄存器存储所有的水仙花数组成的数组,其初始值为空数组,在For循环内若满足水仙花数的条件,则使用数组的插入函数,将该数插入到寄存器的数组中,否则,移位寄存器中的值保持原值。

这里使用的关键知识除移位寄存器外,还使用了“数组插入”函数,参数说明情况如下图所示:

该函数的目的是在n维数组中索引指定的位置插入元素或子数组。

程序主代码实现

根据上面的分析,最终使用For循环及移位寄存器实现的代码如下图所示:

运行后,“数组”控件中输出结果如下图所示:

即所求得的所有水仙花数为153、370、371、407四处数值。

结论

从框图程序中看出,这个例子中涉及到的知识点除For循环结构和与移位寄存器初始化及使用外,还包括了选择结构、常用数组函数的使用及LabVIEW中如何求商与余数等。

大家加关注并私信回复:LabVIEW9,可获取该文章对应的LabVIEW原程序下载。

欢迎加关注,共同交流。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181014A1QAH100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券