VEX IQ机器人编程之循环结构
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。
在Graphical中, 循环结构包括repeat次数循环、repeat(forever)无限循环、repeatUntil条件循环以及while循环。在C语言中,循环结构可以分为两类循环结构,分别是当型循环结构和直到循环结构。当型循环结构在每次执行循环前,都会对条件进行判断,当条件满足时,执行循环内容,否则终止循环。直到循环结构在执行了一次循环内容后,对循环条件进行判断,如果条件不满足,就继续执行循环内容,直到循环条件满足终止循环。
循环结构的几种流程图如下图所示。
repeat循环
在Graphical ROBOTC语言中,repeat循环体是一种按照次数重复的当型循环结构,流程图如下图所示。
使用时,需要在repeat的括号内填写需要循环的次数值,例如设置repeat(6),表示程序循环六次后终止循环。使用方式为在函数窗口中的Program Flow列表下找到repeat,拖拽至文件编辑窗口,然后拖拽需要循环的内容模块放置在repeat后的{}中。
示例程序:
机器人向前运动一段距离再左转一个角度,重复动作3次后程序结束。
要求重复动作3次,要用到repeat模块,在Program Flow列表中找到repeat模块,拖拽至文件编辑窗口。在方框中填写数字3,表示循环3次。在Simple Behaviors列表中找到forward模块,拖拽至repeat模块内,再拖拽turnLeft模块至repeat模块内,完成前进程序及左转程序。完整程序如下图所示:
repeat(forever)无限循环
在Graphical ROBOTC语言中,repeat(forever)循环体类似于repeat循环体,是一种无限重复的当型循环结构,其循环条件永远为真,因此repeat(forever)循环体无法自主终止循环。
repeat(forever)循环体主要用在三个方面:1、正常程序里,用来执行重复循环的内容,用来重复检测传感器数值的变化,例如第三章中超声波的示例程序;2、在总程序的后面加上repeat(forever)可以防止程序跑飞,出现程序可能的混乱;3、调试程序时,手工让程序停在一个地方不往下执行,以便于观察机器人数据情况或直观看到程序运行的结果,在调试程序时repeat(forever)非常有用。
repeat(forever)的使用在之前的章节示例中反复被用到,本节不做示例讲解。repeat(forever)模块如下图所示:
repeatUntil条件循环
在Graphical ROBOTC语言中,repeatUntil循环体是一种按照判断条件结果进行重复的当型循环结构,repeatUntil循环体重复循环,不断地执行其括号内的代码,当指定的循环条件为真终止循环。流程图如下图所示。
使用时,需要在repeatUntil的括号内填写循环终止的条件,表示当条件满足时终止循环。使用方式为在函数窗口中的Program Flow列表下找到repeatUntil,拖拽至文件编辑窗口,然后拖拽需要循环的内容模块放置在repeatUntil后的{}中。
示例程序:
使用repeatUntil 模块重复控制机器人前行一段距离停止等待1秒的动作,直到碰撞传感器撞到障碍物程序结束。
完整的程序如图所示:
while循环
在Graphical ROBOTC语言中,while循环体是一种按照判断条件结果进行重复的当型循环结构,与repeatUntil正好相反,while循环体重复循环,不断地执行其括号内的代码,当指定的循环条件为假时终止循环。流程图如下图所示。
使用时,while与repeatUntil用法相同,区别在于while循环需要在括号内填写循环的条件,表示当条件满足时继续循环,不满足时循环终止。
while的使用方式为在函数窗口中的Program Flow列表下找到while,拖拽至文件编辑窗口,然后拖拽需要循环的内容模块放置在while后的{}中。
示例程序:
使用while模块重复控制机器人前行一段距离停止等待1秒的动作,直到碰撞传感器撞到障碍物程序结束。
完整的程序如图所示:
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com