关于EV3编程软件中【阵列运算】模块的两个简易数据分析应用参考

       好久没分享过和EV3编程相关的东西了,之前在公众号和部落群分享过打地鼠/出租车/女儿国/pid巡线/陀螺仪矫正等相关内容的参考讲解,考完试后,时间也大把的有了,睡了个短午觉,以前也在公众号和部落一/二/群分享过这个模块的含义,不过现在要分享的是结合两个具体的案例来说说这个模块的使用。关于这个模块的含义请点击这个参考原文,LEGO EV3【阵列运算】模块参考讲解

 

       今天要分享的两个案例分别是数组中求【最大值】和【判断中位数的奇偶性】,喵咪咪一个一个的来给大家分析讲解,三个数据分析都需要用到【阵列运算】模块这个程序模块,以下分享仅供参考,如有错误请在公众号后台发消息告诉我,感激不尽。

 

【最大值】

       给出一组数组,如何通过程序找出数组中的最大值。假定数组【2、12、1、5、7】,很明显12是最大值,但是如何通过程序让EV3自己显示出来就需要分析。

 

原理:

       其实在计算机语言中有一种叫做冒泡算法,估计懂的人一眼就看出来了,知道如何编写的原理,这里我就用其中的一个方法,模拟设定一个初始最大值【0】,然后让数组中的每个数字挨个同这个初始最大值【0】进行比较,如果数组中的数字大于初始最大值,那么让该数字取代初始最大值成为新的最大值,如果不大于那么依旧保持上一次的最大值。

       不知大家看到这里能否明白,额,通俗的说就是初始最大值为0,数组中第一个数字是2,2比0大,那么2取代0成为最大值,接下来,让这个新的最大值2和数组中的第二个数字12进行比较,2肯定比12小,所以12重新取代2成为新的最大值,再继续,新的最大值12和数组中第三个数字1进行比较,1无法比12大,所以最大值依旧是原来的最大值,即12,以此类推。

       这是一种方法,还有一种更简便,其实也差不多拉,就是不设定一个新的初始最大值,而是默认数组中的第一个数字为最大值,那么后面的分析和上面的一样的了。

 

程序参考:

       (1)写入一个数组,【2、12、1、5、7】,同时写入一个模拟初始最大值【0】,如下图,同时编辑不同的名称作为区分。

关于EV3编程软件中【阵列运算】模块的两个简易数据分析应用参考

       (2)接下来我们就是要按照上面说的冒泡算法进行程序编写,我们首先写第一种情况,因为这里存在一个比较条件,我们知道有比较就肯定需要选择,意味着有逻辑真伪关系,即满足和不满足这两种条件,现在我们看第一种条件,即满足,也就是数组中选定的数字会比初始最大值要大这种情况。

关于EV3编程软件中【阵列运算】模块的两个简易数据分析应用参考

       额,图片有点小,不过能看清,进行放大的话。

       索引是从0开始的,这点一定要切记。

       当索引为0的时候,数组中调出的第一个值是2,也就是说这个时候a=2,max为初始最大值即0,这个比较结果是满足条件的,即a>b,那么a将取代初始max将成为新的max,需要说明的是切换模块一定要用选项卡视图模式,否则无法进行数据连接。

       (3)我们看第二种情况,即数组中的数组比上一次的最大值要小,即条件不满足,那么最大值依旧保持为旧的最大值。

关于EV3编程软件中【阵列运算】模块的两个简易数据分析应用参考

       从上图我们可以看到,当条件不满足的时候,max依旧是上一次的最大值,注意箭头部分,并有没有进行数据连接传输,那可能会有朋友问为什么会有传输动作呢,额,这个其实的满足条件下的,只不过在不满足条件下也会有这个动作,只不过不会进行连接。

       这里的情况就是,当索引为2的时候,数组中调出的数据就是1,让1和上一次最大值12进行比较,条件是不满足的,那么最大值依旧是上一次的最大值,并没有进行改变。

       (4)最后,我们需要让这个最大值进行显示,那么有朋友会问,需要循环几次呢,额,循环的次数是数组的长度,这里数组长度是5,所以我们在循环次数上写入5,当然也可以直接写一个读取数组长度的模块,让这个值直接输出给循环次数。

关于EV3编程软件中【阵列运算】模块的两个简易数据分析应用参考

       我这里偷懒,并没有按照上面分析的那样写就是。

关于EV3编程软件中【阵列运算】模块的两个简易数据分析应用参考

       最后当循环运算完毕,我们将这个最大值显示在屏幕上即可。

       (5)完整程序参考设计如下:

关于EV3编程软件中【阵列运算】模块的两个简易数据分析应用参考

关于EV3编程软件中【阵列运算】模块的两个简易数据分析应用参考

       是不是很简单。

 

【判断中位数的奇偶性】

       数组中,由于奇偶长度的不同,会导致中位数不同,因此如果在需要寻找中位数的时候,首先要判定的中位数的奇偶性。

 

       (1)设定数组【4、5、1、7、5】,这是一个奇数长度是数组,中位数是1,当然,我们要让EV3自己显示出来。可能有朋友会问,这么简单的问题还需要费这么大的功夫,其实我这样做只是提供一种思路,就拿好多比赛都喜欢取乒乓球一样的道理,我们用手多方便,但是毕竟能让EV3按照我们的指令,自己完成更具有挑战性和乐趣。

       (2)将数组写入同时读取数组的长度,这个数组的长度是5,因为有5个数字。

关于EV3编程软件中【阵列运算】模块的两个简易数据分析应用参考

(3)原理

       如果知道了数组的长度就相当于知道了数组的奇偶性,不过这里程序还是卖了一个小关子,为什么这么说呢。

       如果数组长度是5,那么直接就可以给与判定数组是奇数长度,反之,就是偶数长度。不过这里我还是写了一个有点“画蛇添足”的模块,各位在编写的时候可以取消掉。

       我这里是用数组的长度去除2,不停的除以2,如果最后的结果是为1的话,那么就是偶数,如果不等于1的话,那么就是奇数。

       除以的次数为第一个长度除2的结果。

       其实,当原理一说来,程序就相当简单了,这里提供下我这个“画蛇添足”的程序,当然大家编写的时候,可以参考上面的说法,更简单,不过这个简单的程序我就不提供了。

关于EV3编程软件中【阵列运算】模块的两个简易数据分析应用参考

       这是完整程序参考,even是偶数的意思,odd是奇数的意思。

       是不是更简单。

 

       关于数据分析的的两个简单案例,我们可以知道【阵列运算】模块其实就是同数据打交道的,进行各种数据处理。

       当然我也写了一些其他的关于该模块的案例,比如【最小值】/【平均数】/【奇数长度数组的中位数】/【偶数长度数组的中位数】/【等差数列数组求和】/【等比数列数组求和】之类的程序,反正时间大把的有,在旅游之前完成就好了,有兴趣的朋友可以尝试下,明白原理后就很简单,相信各位通过这些案例的使用,会更加熟练的掌握【阵列运算】模块的使用。

       额,这里提供一个【平均数】的程序参考吧,如下图:

关于EV3编程软件中【阵列运算】模块的两个简易数据分析应用参考

       好啦,就分享到这啦,如果发现问题请及时公众号后台告诉我,多谢。


        如需加入LEGO部落微信群,请添加V叔微信:zihuqiuye,进群不做广告、招聘、潜水、交易购买咨询、机构平台宣传等,高质量微信群需要大家一起努力,之前公众号所有推文上写的添加喵咪咪LEGO微信号:zihu-chu作废啦,请不要添加或者后台发消息问啦。