文/张智
针对小学教学需求对机器人编程语言进行设计,是完善小学机器人编程教学的重要步骤。传统的教学机器人编程语言与小学教学并不匹配,尤其是在难易性等方面都暴露出了一系列问题。为了改善这种情况,不少研究人员针对小学生的学习特点构建出了相应的机器人编程语言,借助前沿技术来帮助教师完善对学生的培养。利用专门的编程语言来帮助提高小学教学的教学效率的效率,对于巩固和扩大教学成果有着不可忽视的重要作用,本文主要就编程语言中的解释器设计进行了探究。
设计机器人语言系统的是主要目的是方便对机器人进行编程和控制,同时满足机器人的接口和通信等功能。所以传统的机器人语言系统的需求主要体现在以下几点:
(1)能够对外部世界进行建模,因为机器人在进行运动时的环境是三维空间,所以其语言系统需要对空间物体进行相应的描述;
(2)能够对运动进行描述,这也是操作者控制机器人运动的基础,只要将机器人的轨迹规划程序和轨迹生成程序联系起来,开发者才能将机器人应用到日常的生产生活之中;
(3)允许对机器人的运动过程进行操作,对执行流程进行规定或者更改,从而应对不同的生产生活需求;
(4)需要针对接口进行拓展,方便操作者和传感器进行信息交换;
(5)需要对编程软件提供支持,软件能够为编程语言的运行提供良好的环境,从而提高编程效率。
而基于小学教学的设计出了上述需求之外,还需要考虑以下两个方面:一方面是机器人教育的新颖性,针对机器人进行教学能够丰富小学信息技术课程的内容和形式,利用多样化的表现方法调动学生的学习动力,提高教师的教学效率;另一方面是难易性,小学生的思维能力尚在发育阶段,教师可以利用简易的编程语言将课程的难点进行分解,让学生更容易理解编程教学的过程,降低编程教学难度的同时,引导学生养成良好的分析能力和分析习惯。
在小学机器人编程教学中,机器人的语言系统共分为五个部分,分别是由文本编辑或者示教生成空间点所构成的编辑器、机器人的源程序、负责词法(语法、语义)分析的解释器、轨迹规划和插补计算、执行结构。其中解释器的过程最为复杂,因为解释器负责将源程序输入的文本形式转化为目标指令,本文也主要对解释器的设计与实现进行相应的研究。
解释器的主要功能是词法分析、语法分析和语义分析,词法分析是识别源程序的文本单词,同时对单词进行检查和转换;语法分析是识别源程序的文本语法,同时对语法结构进行检查;语义分析是识别源程序的文本语义,同时检测出相应的错误信息。所以基于上述功能,编程语言解释器系统软件结构分为以下几个步骤:首先是在初始化的处理的基础上加载源程序,然后对词法进行分析,词法无误后进行语法分析,语法分析无误后进行语义分析,如果此三项有错误全部进行错误处理,上述步骤完成之后解释器可以在符号表的基础上生成目标代码。
基于小学机器人教学需求的机器人语言包括以下五种单词符号:关键字、识别符、常量(数字)、运算符、标点符号。词法分析程序的输入为机器人源程序文件,而输出为提供给语法分析的单词串。在进行词法分析前,需要构造关键字表。关键字表用一个字符指针数组保存,其定义如下:char*keywords[keywordsnum]; 其 中keywordsnum为宏定义,表示关键字的数目。这种定义方式方便了随时增加或删减关键字。分析程序中应提供对关键字表的查找操作,定义函数如下:intlookup(char*);此函数输入参数为待查找的单词串,返回一个整型值代码关键字的内码,若没有查找到返回数值—1。
基于小学机器人教学需求的机器人语言语法分析使用的是正则表达式,正则表达式主要有以下优点:首先是其自身能够通过简单的控制方式对字符串进行复杂的控制;其次是内在的逻辑性非常强,能够适应多种环境。使用正则表达式进行机器人程序的语法分析,要经过指令正则表达式的定义、初始化和匹配三个过程。在处理正则表达式的过程中,可以借助机器人控制器下位机所用的Linux系统带有的正则表达式处理库函数regcomp()和regexec()来实现一些功能。
机器人程序经词法分析和语法分析之后,若没有错误则说明此程序在书写上是正确的且符合语法规则。语法上的正确并不能保证其在语义上是正确的,要判定予以是否正确,必须依靠语法分析,而要产生目标代码,还需要一种翻译技术将源程序翻译成目标代码。出于小学教学效率和实现难度的考虑,本次研究的语法分析程序没有输出语法树,只是进行语法检查。在一般的语义分析程序中,要遍历语法树来实现语法制导的翻译过程,但是遍历语法树的效率较低,而且语法树的储存要耗费大量的内存,这对机器人数控系统所需求的高实时性造成了一定的影响,因此本文设计的语法分析程序仍遍历机器人源程序作为输入,来进行语法的检查和目标代码的生成。
总而言之,基于小学机器人教学需求对解释器进行开发和研究,不仅能够降低小学编程教学的难度,从而提高小学生的逻辑思维能力、实践操作能力和语言表达能力,还能够提高学生对于其他学科的理解能力,帮助学生综合全面的发展。除此之外,编程语言的开发还需要学校和教育部分的重视,定期举办相应的课题和研究,同时教师也需要提高自身的专业水平,对相关编程教学的发展动态进行实时的了解,并积极应用到相关的编程教学中,丰富学生知识储备的同时开阔学生的视野。