1、FOR指令结构定义
(1)FOR指令结构
FOR <ID> FROM <EXP> TO <EXP> STEP <EXP> DO
<SMT>
ENDFOR
<ID>:循环判断变量
**个<EXP>:变量起始值,**次运行变量等于这个值;
第二个<EXP>:变量终止值,或者叫*末尾值;
第三个<EXP>:变量的步长,每运行一次FOR里面语句变量值自加这个步长值,在默认情况下,step <EXP>是隐藏的,是可选变元项。
(2)FOR指令执行过程
FOR重复执行判断指令一般用于重复执行特定次数的程序内容。程序指针执行到FOR指令时候,**次运行时,变量<ID>的值等于**个<EXP>的值,然后执行FOR和ENDFOR指令的指令片段,执行完以后变量<ID>的值自动加上步长第三个<EXP>的值;然后程序指针跳去FOR指令,开始第二次判断变量<ID>的值是否在**个<EXP>起始值和第二个<EXP>末端值之间,如果判断结果成立,则程序指针继续第二次执行FOR和ENDFOR指令的指令片段,同样执行完后变量<ID>的值继续自动加上步长第三个<EXP>的值;然后程序指针又跳去FOR指令,开始第三次判断变量是否在起始值和末端值之间,如果条件成立则又重复执行FOR里面指令,变量又自动加上步长值;直到当判断出变量<ID>的值不在起始值和末端值时候,程序指针才跳到ENDFOR后面继续往下执行。
2、for举例说明
X := 0;
FOR i FROM 6 TO 10 STEP 2 DO
X := X + i;
ENDFOR
执行说明:
初始化X := 0,然后程序进入FOR重复判断执行指令;
**次执行时候i的值等于6,然后程序执行for里面语句,即X := X + i指令,**次执行后X的值等于6;执行完for里面指令后变量i的值自动加上步长2,即i=i+2=6+2=8;然后程序指针又跳到FOR指令,进行第二次判断i的值是否属于起始值6和末端值10之间,因为8是大于6和小于10,故判断条件结果成立,程序指针继续第二次执行FOR和ENDFOR之间指令片段,即X := X + i指令第二次执行,X=6+8=14;执行完for里面指令后变量i的值自动加上步长2,即i=i+2=8+2=10;然后程序指针又跳到FOR指令,进行第三次判断,因为i=10,属于6到10的范围,故判断条件结果成立,程序指针又进入FOR指令,执行X := X + i语句,即X= X + i=14+10=24;执行完for里面指令后变量i的值自动加上步长2,即i=i+2=10+2=12;然后程序指针跳到FOR指令,第四次判断条件,因为i=12不属于6到10的范围,所以判断条件结果不成立,此时程序指针才跳到ENDFOR指令后面继续往下运行,结束FOR指令执行。
总结:上面举例的FOR指令总共执行了3次,第四次判断以后条件不成立,结束FOR指令执行。
3、FOR指令要点
(1)FOR指令结构要认识(同上);
(2)FOR指令定义执行过程:FOR指令是重复判断执行,条件会自动加上步长,条件里面变量的范围可以自己指定,具体执行过程(同上);
(3)FOR指令里面的变量i特点:
**个特点:**次执行for指令,i的值等于起始值;
第二个特点:i的值在默认情况下,每次循环执行完for里面指令以后,i的值加1,即步长默认情况下为1;
第三个特点:i的值每次循环执行完for里面指令以后,自动加上步长step <EXP>指定的<EXP>的值;
第四个特点:i变量在for指令当中是特殊的变量存在:
在for指令结构中可以直接使用而不用预先定义,而且i在for当中的值,就等于for指定的起始值,每次运行完一次for里面指令,自动加上步长值,i在for中的值就是和在for外面的值互不影响;当i在for指令结构外面,则必须遵循先定义后使用,遵循变量、可变量和常量规则等;即i在for中的值可以和i在for外面的值互不影响,i在for结构中遵循for变量特点,i在for外面则遵循正常编程规则;
4、for指令变量i的举例说明
(1)程序
PROC rFOR3()
X := 0;
i := 100;
FOR i FROM 1 TO 3 DO
X := X + i;
ENDFOR
i := i + 1;
WaitTime 3;
ENDPROC
(2)执行图片
程序运行画面:
程序数据画面:
**次运行程序数据画面:
第二次运行程序数据画面:
第三次运行程序数据画面:
第四次运行画面和程序数据画面:
运行程序画面程序数据画面