主题:一个不明白的地方
紫月蓝风
[专家分:30] 发布于 2007-07-05 13:44:00
本人刚刚学PASCAL,在循环那有个不明白的地方,请问,两个单循环和一个循环嵌套如何区别?
回复列表 (共10个回复)
沙发
Matodied [专家分:7560] 发布于 2007-07-05 15:02:00
两个单循环是并列关系的,它们的循环变量可以同名.
但是一个嵌套的循环是不同层次的,它们的循环变量不能同名.
板凳
游侠UFO [专家分:1200] 发布于 2007-07-05 23:17:00
-_-!!
这个,多看看就知道了,特征的确不好描述。。
3 楼
紫月蓝风 [专家分:30] 发布于 2007-07-06 15:52:00
靠,不是这样的。我不是问这个。我的意思是,当两个循环语句在一起时,怎样区分是循环嵌套还是两个循环语句。
4 楼
紫月蓝风 [专家分:30] 发布于 2007-07-06 15:53:00
如果回答的好,会考虑给你们加50分以内。
5 楼
&佑慧妹妹& [专家分:660] 发布于 2007-07-06 16:03:00
哦,蓝风,你应该用心看看书了,呵呵。
关于你的问题,你看我的解释对不对。
用例子来说比较容易。
FOR A = 1 TO 6 DO
BEGIN
FOR B = 1 TO 6 DO
S=S+1
END;
以上语句可以清晰的看出是嵌套 一般用BEGIN和END;
FOR A = 1 TO 6 DO
FOR B = 1 TO 6 DO
那个 关于这个语句 得通过上下语句来理解 我也不知道怎么解释
6 楼
&佑慧妹妹& [专家分:660] 发布于 2007-07-06 16:07:00
应该是一个嵌套
一个单独的循环,语句应该用BEGIN和END匡起来
FOR A = 1 TO 6 DO
BEGIN
S=S+1
END;
FOR B = 1 TO 6 DO
上面就是两个循环
7 楼
紫月蓝风 [专家分:30] 发布于 2007-07-06 16:10:00
那麻烦问一下
FOR A = 1 TO 2 DO
X = X + 1
FOR B = 1 TO 10 DO
是两个循环还是一个嵌套?
8 楼
&佑慧妹妹& [专家分:660] 发布于 2007-07-06 16:11:00
这个……理应说是两个循环
9 楼
Matodied [专家分:7560] 发布于 2007-07-07 10:13:00
楼上二位,这是PASCAL论坛,不是QB.
"FOR A = 1 TO 2 DO BEGIN"应该改为“FOR A:=1 TO 2 DO BEGIN"
(PASCAL里的赋值号是":=",不是"=")
算了,给你举一个例子:
VAR
i, j, k, s: INTEGER;
BEGIN
FOR i:=1 TO 10 DO BEGIN
FOR j:=1 TO 5 DO BEGIN
FOR k:=1 TO 2 DO INC(s);
END;
END;
WRITELN(s);
END.
可以把FOR循环的嵌套看作一个栈(Stack).进栈就是一个循环的开始(BEGIN语句),出栈就是一个循环的结束(END;语句)
首先,栈是空的:
------------------------
|
------------------------
然后,循环i开始,进栈:
------------------------
i |
------------------------
然后,循环j开始,进栈:
------------------------
j i |
------------------------
然后,循环k开始,进栈:
------------------------
k j i |
------------------------
但是在出栈的时候,由于栈具有后进先出的特点,因此最后进栈的元素k最先出栈,然后j出栈,最后出栈的元素是i.出栈的过程如下:
------------------------
k j i |
------------------------
------------------------
j i |
------------------------
------------------------
i |
------------------------
------------------------
|
------------------------
因此后开始的循环先结束.
10 楼
&佑慧妹妹& [专家分:660] 发布于 2007-07-07 18:13:00
LS,对不起啦,又把QB的东西带进来了。
注意又注意,没想到,还是写错了
我来回复