程序的控制构造

程序采用由begin和end联结成的块状构造,从而被构造化,作为为了组合控制构造的语法,备有IF语句,FOR语句,WHILE语句,CASE*语句。关于这些语句,因与PASCAL相同,故说明省略。

为了描述并行动作,引入COBEGIN,COEND块。如下例所示,由COBEGIN,COEND所包围的块内的语句被并行执行。

COBEGIN

MOVEblue-armTOb-park;MOVEred-armTOr-park;

COEND

即blue-arm和red-arm同时分别地向停止场所b-park,r-park移动。

为了描述并行动作中的同步,备有采用semaphore的SIGN-AL语句和WAIT语句。semaphore是整数型变量,其值由

SIGNAL语句和WAIT语句增减。其初始值为0.根据WAITs;

semaphores的值被减1,如果其结果s的值为负,则命令该语句的过程停止执行,如果s的值为非负,这个过程继续执行。

SIGNALs;

这个语句,将s值增加1.关于s,执行WAIT语句之后,若是处于休止过程,则该过程的执行再度开始。若没有处于休止过程,则什么也不进行。

作为并行动作的程序示例,可以考虑用左手抓住物体,然后将该物体递到右手这一作业。这个作业的程序如下:

COBEGIN

BEGIN(leftarm的动作)

MOVEleftarmTOblock;左手移动到积木的位置

CENTERlefthand;抓

AFFIXblockTOleftarm;

MOVEblockTOpass;将积木向递交场所移动SIGNALready-to-pass;递交准备结束

WAITcaught;右手在接受物体之前等待

OPENlefthandTOfull-opening;手离开积木

UNFIXblockFROMleftarm;

SIGNAL,pased;递交结束END;

BEGIN(rightarm的动作)

OPENrighthandTOfull-opening;张开手指

MOVErightarmTOcatch;向积木的接受场所移动WAITready-to-pass;等待左手的递交准备结束信号

CENTERrighthand;抓住积木

SIGNAEcaught;“接受到了”这个信号

WAITpassed;左手在结束递交动作之前等待MOVEblockTOpallet;

END;COEND;


标签: 动作积木信号

随便看看