使用OP命令的队列移位问题 3

现在说的还是前次的“使用OP命令的队列移位问题”。这个问题真的可以使用很多种方式编程,用不同类型的题目来考你,这就给参考者带来很多疑惑。下面的题目实际上是这道题的第三种编程方式:
初赛试题一:
针对下面的程序过程A0,运行SHOW A0 "ASDFGHJK
5,输出的结果是
。
TO A0 :W :K
MAKE "L COUNT :W
MAKE "WW ITEM :K
:W
FOR [J 1 :L][
IF OR :J<:K
:J>:K[
MAKE "WW SE :WW ITEM :J :W]]
OP :WW
END
答案:
正确的答案是:[G A S D F H J
K]
解释:原来在第5个位置的G被移动到了首位,其它的字符位置不变。由于使用的是SE、SHOW命令,所以输出的是“表”结构。
初赛试题二:
下面的A1过程,在执行命令 SHOW "ASDFGHJK
5 时输出的结果是[G A S D F H J K],请完善A1过程,写出空缺位置的LOGO编程命令。
TO A1 :W
:K
MAKE "L COUNT
:W
MAKE "WW ITEM :K
:W
FOR [J 1
:L][
IF
[
MAKE "WW
:WW ITEM :J
:W]]
OP :WW
END
答案:
正确答案:
OR
:J<:K :J>:K
FMSLogo的答案还可以是
:J<>:K
SE
上面这种删除某些程序语句,留下空格来填空的题目其实多半都是很难的,有时比重新编写一个程序还要难。就好比一锅汤淡了加一点盐容易得很。但是要反过来操作:汤太咸了,在不增加水分的前提下把盐分分离出来、或是减少一些盐分,是不是要麻烦得多?!这样的填空题,就是“把太咸的汤减淡”的逆向操作。先要读懂上下左右的程序,透彻地理解编程思路,才有可能在空格处填写正确的命令。
==================================
下面介绍的第四种、第五种编程方式,针对于MSWLogo-FMSLogo-PCLogo都是通用的。但其中的循环命令是REPEAT,原理类似,不再进行详细解说,请自己琢磨研究。
第四种编程方式:
TO B2 :W :K
REPEAT :K-1[MAKE "W
WORD BF :W FIRST
:W]
MAKE "T FIRST
:W
MAKE "W BF
:W
REPEAT :K-1[MAKE "W
WORD LAST :W BL
:W]
OP WORD :T
:W
END
第五种编程方式:
TO B2B :W :K
REPEAT :K-1[MAKE "W
SE BF :W FIRST
:W]
MAKE "T FIRST
:W
MAKE "W BF
:W
REPEAT :K-1[MAKE "W
SE LAST :W BL
:W]
OP SE :T
:W
END
真想学会LOGO编程的,这几个编程方式还是需要给理解透彻才好。
加载中,请稍候......