老丁独家!前方高能,与“程序崩溃”的第一次邂逅!

时间:2022-04-23
本文章向大家介绍老丁独家!前方高能,与“程序崩溃”的第一次邂逅!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

本阶段课程适合2年级以上刚开始接触EV3机器人的同学们。

本篇请下载 LEGO Mindstorms教育版软件 有条件的话,请为孩子添置一套EV3套装,让课程内容可以同步练习进行动手实践。

经过上周,讲了“阵列运算”模块的内容后,本号粉丝量飞涨了一把。

非常感谢大家的帮忙,请继续帮推,我们的好内容还有很多呢!

同时,老丁非常欢迎更多小朋友和大朋友一起加入我们这个分享平台。

确实有很多小伙伴想要了解这些“非基础”模块的使用方法。

其实后续还有很多,比如“我的模块”的创建,蓝色的高级模块应用等等。

我们以后有机会,慢慢给大家讲。

机器人学习,包括搭建、编程。其实还是需要在一定的场景内进行学习的。

因为我们其实动手做的东西,是由“场景”提出各种需求后,才有目的性的进行分析和实现的。

而这也是学习机器人的根本目标:

学会分析和解决问题

我们从一个例子开始,今天继续讲“阵列运算”。

举个例子

我们使用上节课学习的知识,来编写一个程序。

在屏幕上循环显示【1~5】的数字。

这个程序,我们可以这样来编写。

连续复制5行后……这个程序就完成了。

这样做是不是傻了点……那如果要显示100个数字呢……

其实,当然不用那么麻烦!

真事:课堂里面,当我说出这句话时,被全班同学暴揍了一顿。有时我在思考,我到底教了一帮什么样的学森!!!

循环索引

在我们的循环模块里面,有这样这个功能,一般很多人都会忽略掉它的存在。——循环索引

这个功能是让程序从0开始自动读取索引的内容。

每一次循环,读取一遍。

我们只需要这样,程序就会自动读取“阵列”里面的每个索引对应的数据了。

但与此同时,我们再实际运行中,发现了。

在运行一段时间后。

程序出错了!

程序崩溃

程序崩溃是指,编写好的程序,在某个环节的执行中,产生错误,无法继续运行的情况。

可以说,在我们之前的基础教学中,一般情况下,你是不会遇到程序崩溃的,只会是你自己编程思路有问题。

而当我们学习了“阵列”后,可能你会遇到第一个“崩溃”的情况产生。这个就跟我们没学到“根号”前,只认识“π”这样一个无限不循环小数是一个道理。

因为阵列模块的学习,是机器人编程的第二次能力进阶——数据库能力。(第一次是学会使用变量)

当程序崩溃的时候,首先要先思考:

为什么它会崩溃?

一般情况下,如果程序是编写思路上的错误,只不过会造成实际运行情况达不到要求,程序本身仍然是可以执行的

但程序一旦崩溃,证明里面的数据读取,出现了严重错误

即,数据结构出错了

而数据结构错误,无非是写入错误,和读取错误两种。

我们今天碰到的问题,出错就在读取错误上。

阵列长度

上面这个程序会崩溃,是因为,

当我们使用“循环索引”功能时,阵列会自动按照“0/1/2/3……”这样的顺序读取阵列数据

但上文的程序,只有5个数据,当程序读取到“5”(即第六个索引)的时候。

数据就断掉了,后面没有数据了。

关键的数据出错,程序就无法走下去。

自然,这个程序就崩溃了。

这个时候,我们就需要重新审视这个问题。

其实我们只需要程序去读取0-4的索引

所以我们可以直接在循环结束的位置,用计数,填上“5”

但问题又来了,

我们今天刚刚的数据是手动填写的,

这样其实我们是知道有几个数据的。

万一以后数据是由机器自动填写,

我们不知道有多少个数据,怎么办呢??

这里我们引入一个新的概念

长度

就像排队,一排只有5个人,

这里的“5”个人,代表的是一个队伍的“长度”。

即,阵列长度值,为5

6个人,长度就是6

我们在阵列运算模块里,有读取“阵列长度”的功能存在,并且可以直接使用长度值。

这样一来,问题就解决啦。

只要把长度值设定为循环的结束值,即可!

是不是很简单?

再套上一个“大”循环,让它无限循环下去,屏幕上就会不停地重复显示阵列里的数据啦!

这两节课的重点!总结

上次我们学习了“索引”

今天我们加入了“阵列”的一个新概念,“长度”

这两个基本概念我们要非常熟悉,学的也需要非常扎实!

千万不能似懂非懂!

无论我们是现在还是未来学习数据库相关的专业课程,这两个概念是千万不能有任何一点理解上的偏差的。

给各位小伙伴一个小作业。

自己动手写几个阵列,然后快速在下方标出阵列的长度,让爸爸妈妈配合一下,随机抽取其中的几个“索引”,自己快速的找到它的对应值。

练习一两次即可,不能有任何错误哦!

再聪明的脑子,也需要实践。

当我们这两个概念清晰后,我们就可以进一步学习,自动添加阵列的方法啦!

我们下期,再见!

重点总结

学习“阵列长度”的概念,进一步了解阵列的使用方法。

感谢关注本号,若觉好,请帮推

老丁介绍

主业:

某知名上市技术研发企业总监

机器人教育相关经验:

上海科技馆SVR虚拟机器人课程特邀讲师

FIT启蒙创新认证讲师、教练员

WRO 及 First系列挑战赛事教练及裁判员