查看: 1462|回复: 3

好好搭搭在线编程日积月累

[复制链接]

6

主题

12

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2020-3-4 20:35:38 | 显示全部楼层 |阅读模式
本帖最后由 ngxxczlwh 于 2020-3-4 20:41 编辑

前几天,在用好好搭搭在线编程软件给我的Nano自动避障小车编写程序时,出现了一个问题。虽然现在看来是个小问题,但在当时看来是莫名其妙的bug,使得程序的编制停滞不前了。所以现在就想把编程中出现的问题,走过的弯路写下来分享给和我一样的初学者。
问题描述:
当时是在写Nano的智能小车,我将小车的各项功能都写成了函数,如:前进、后退、左转、右转、停止等等。这些函数单独调试时,小车都能正常的运转。在写另一个模块时,我需要调用这些函数,但是当时就出现了诡异的现象:调用前面的部分函数时,如前进、后退时,一切正常,但是当调用另一些函数时,却提示“编译错误”,而且没有任何其他的任何编译信息。程序陷入的僵局,无法进行下去了。
1.png
分析原因:
问题出来了却找不到错误所在,原因是好好搭搭在线编程软件没有给出编译信息。在祝老师的提醒下,我在离线版软件里把程序又重新编了一下。这次,离线版软件顺利给出了错误提示。
2.png
从上图可以看出,虽然我定义了一个函数stop_car(),但编译程序却提示没有声明stop_car。
研究程序的源代码(字符代码)发现,stop_car()函数定义在要调用它的函数后面了,影响其他函数调用它了。
明白了其中的道理后,修改程序就简单了,讲被其他函数调用的函数先写,放在前面(图形化编程时放在上面),问题就迎刃而解了。
经验总结:
1.遇到疑难的问题却得不到有效的错误提示时,建议使用离线版的软件进行编译,这样会给出编译信息,指出错误所在。
2.好好搭搭在线编程软件虽然是图形化编程软件,看似是在拼积木,但实际上定义的函数还是有先后关系的,这体现在上下位置关系。所以,如果定义了两个函数A和B,其中,B函数中要调用函数A,那么就要求函数A应该在函数B前定义,图形化编程时函数A的定义模块应该在函数B定义模块的上方。
回复

使用道具 举报

19

主题

80

帖子

631

积分

版主

Rank: 7Rank: 7Rank: 7

积分
631
发表于 2020-3-4 20:59:30 | 显示全部楼层
网页版编译出错信息,最近会开通
回复

使用道具 举报

0

主题

3

帖子

8

积分

注册会员

Rank: 2

积分
8
发表于 2020-3-6 05:54:18 | 显示全部楼层
网页版编译错误信息返馈已经开通了,图形化初化变量,还应该注意上下顺序。在上的先生成代码。
回复

使用道具 举报

6

主题

12

帖子

123

积分

注册会员

Rank: 2

积分
123
 楼主| 发表于 2020-3-11 21:50:26 | 显示全部楼层
ajlzly123 发表于 2020-3-6 05:54
网页版编译错误信息返馈已经开通了,图形化初化变量,还应该注意上下顺序。在上的先生成代码。 ...

谢谢您的及时反馈,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-3-29 06:24 , Processed in 0.322128 second(s), 25 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表