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

本阶段课程适合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系列挑战赛事教练及裁判员

本文来自企鹅号 - 老丁教乐高媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构

一个两年的程序员,面5家斩获点我达,网易offer的面试总结总结

毕业到现在也近两年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...

1001
来自专栏申龙斌的程序人生

零基础学编程021:获取股票实时行情数据

春节期间重写了“笑来投资演练程序1.0版”这个程序,可以每个月自动更新几支股票的行情数据。程序的功能不复杂,但是编程新手想实现它仍有相当的困难。为了短时间内完成...

50612
来自专栏大数据文摘

编程新手入门踩过的25个“坑”,你犯过其中哪些错误?

1833
来自专栏H2Cloud

领域驱动设计-软件中的对象

软件中的对象 About DOMAIN-DRIVEN DESIGN 领域驱动设计是一种思维方式,目的在于处理具有复杂问题的软件项目。在传统的瀑布软件开发模型中,...

3485
来自专栏phodal

如何识别不同的编程语言(上)

漫谈编程语言:数量 这又是一个有趣的话题~~,要知道编程语言有那么的多。引自Quora上一个相关问题的答案,从ABC到Z Shell就有256个。 但是这并不是...

3446
来自专栏守候书阁

重构 - 改善代码的各方面问题

做前端开发有一段时间了,在这段时间里面,对于自己的要求,不仅仅是项目能完成,功能正常使用这一层面上。还尽力的研究怎么写出优雅的代码,性能更好,维护性更强的代码,...

781
来自专栏牛客网

腾讯暑期实习三面面经

回馈社会,腾讯暑期实习三面面经,正在等hr面试。。。 3.16 晚上8点 一面 电面 40分钟 1.自我介绍 2.position属性 比较 3.浮动清除 4....

41212
来自专栏Crossin的编程教室

【Python 第41课】 用文件保存游戏(3)

你的小游戏现在已经可以保存成绩了,但只有一组成绩,不管谁来玩,都会算在里面。所以今天我还要加上一个更多的功能:存储多组成绩。玩家需要做的就是,在游戏开始前,输入...

2554
来自专栏java达人

博文精选|MobX — 10分钟极速入门 MobX 与 React

http://eyehere.net/2016/mobx-getting-started/(点击阅读原文前往)

783
来自专栏黑泽君的专栏

Java语言的发展史

  Java的名字来自于一种咖啡的品种名称,所以Java语言的Logo是一杯热气腾腾的咖啡。

1231

扫码关注云+社区