免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享

第六课:循环语句

本文来自:★flash之路-flash技术交流★ 转帖请注明出处! 作者:网雨霏霏 您是第4057个浏览者

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
flashroad友情提示:
“点评”不是“回帖”!
一、for循环:
1、for语句的构成:

for(A;B;C) {
D
}


说明:

A:这里放置的是变量。并且这个变量必须同时被赋值。
B:这里是一个判断条件。用来判断A中定义的变量是否满足这里给出的条件。如果满足(true)就执行D中的命令一次,然后执行C中的命令。接下来再来到B。如是循环,直到B中的条件不满足(false ),退出for循环 。
C:这里是一个表达式。每循环操作一次,在这里通过表达式给A中定义的变量进行一次数值的变化(通常使用递增 (++) 或递减 (--) 运算符)
D:这里是代码(任意的代码。可以有if语句,也可以有另外一个for循环!)。当B中的条件满足时,就来到在这里,执行这里的代码。


注意:  ABC三者之间用的分隔符是分号,不是逗号。且符号都是在英文输入法状态下输入的。

2、举例:
实例一:

代码如下:
  1. for (i=0; i<=10; i++) {
  2. trace(i);
  3. }
复制
  注意与上面我们介绍的各部分内容的含义对照学习。
i=0 新建了一个变量i,同时给他赋值为0
i<=10 判断条件。用来判断变量i的值是否不大于10。若小于等于10,则执行{ }里的命令一次,然后执行i++再返回判断,直到i的值大于10,此时将退出for循环。
i++ 让变量i的值增加1
trace() 用来输出括号里的内容的【设计时能看到,发布成swf文件后,观众是看不到的】

现在,我们将其工作的过程详述一遍:
1、刚开始i=0 进入判断。发现满足条件,那么执行输出命令(输出0),然后i的值增加1变成了1
2、接下来又进入条件判断,此时的i值为1 ,仍然满足条件,那么执行输出命令(输出1),然后i的值增加1变成了2
3、循环上述步骤,直到i的值变为10时,输出10,然后i的值变为11,再进行条件判断,不满足,则退出for循环。
因此,在屏幕上共输出了0到10共11个数字。

实例二:

代码如下:
  1. sum = 0;
  2. for (i = 1; i <= 100; i++) {
  3. sum = sum + i;
  4. }
  5. trace(sum)
复制


小技巧:
sum = sum + i可以写成:
sum +=i
代码说明:
这里首先在for循环外部定义了一个变量sum,并且给他赋值为0
然后就是for循环啦。大家按照上面的解说应该能分析出来:
定义一个新变量i,并赋值为1;判断条件是i不大于100;然后满足条件时,变量sum又被重新赋值,让sum的值变成i与原来的sum的和。
然后让i的值增加1。依此循环,直到i的值大于100退出for循环。接着执行下面的命令:输出sum的值。
所以,上述代码是用来求1到100之间所有的数字之和的。



实例三:

代码如下:
  1. jc = 1;
  2. for (i=1; i<=10; i++) {
  3. jc = jc*i;
  4. }
  5. trace(jc);
复制



   小技巧:
jc = jc*i可以写成
jc *=i

代码大家自行分析。这个是用来计算10的阶乘的【阶乘是多个数相乘的结果,只不过,这些相乘的数字之间有一定的规律:
5的阶乘等于5×4×3×2×1
8的阶乘等于8×7×6×5×4×3×2×1
10的阶乘等于10×9×8×7×6×5×4×3×2×1】


二、for…in循环:
这是遍历或者叫循环访问一个组对象中的成员.。比如影片剪辑的子级、对象的属性、数组等。由于数组等在前面还没有介绍,因此我们将for…in循环放到下一课介绍数组时再详细说明。

三、while循环:
有点类似if语句,只要条件成立就执行相应语句。

格式:
while(条件表达式){
要执行的语句
................

计数语句

}




当条件表达式为真时,执行大括号中的语句(可以是一条,也可以是多条),执行计数语句;然后用计数语句的结果再次检测条件表达式。如此反复循环,直到条件表达式为假为止。


  注意:
如果没有计数语句,或者计数语句的结果永远不能使条件表达式为假,那么循环将水远无休止地反复。这就形成了一个死循环。我们在编程的过程中一定要避免这种情况。

for循环却不会出现死循环的情况。那么,while循环存在的意义是什么呢?
在不确定要将一个代码块循环多少次时,使用 while 循环可能会非常有用。




1、下面的代码是一个死循环,请不要测试。
  1. var a=0;
  2. while(a<10)
  3. { trace(a);
  4. }
复制
        看看这段代码,程序执行时a等于0,然后进入循环,条件表达式a<10成立,执行trace(a),,输出0。
然后再检查条件表达式,因为没有计数语句,a没发生变化,条件表达式仍成立,于是又输出一个0。
然后又反复,一直不停地输出0,无休无止,直到天荒地老。




2、下面的代码仍是一个死循环,请不要测试。 var a=0;
while(a<10){
trace(a);
a--;
}  
         这一例加上了计数语句a--
但a的初始值为0,每一个循环它减1。
这样条件表达式a<10也是永远为真。
因此循环也是永不停息,直到地老天荒。



3、该例不会陷入死循环,请放心测试:
  1. var a=0;
  2. while(a<10){
  3. trace(a);
  4. a++;
  5. }  
复制
              这一例将计数语句改为a++这样每一次循环,a加1
当10个循环后,a为10。条件表达式a<10为假,循环停止。测试本例我们会在输出面板中看到下面的画面:


0
1
2

9




四、do…while循环:
这个循环实际和while循环是一样的。只是它先执行一次语句,然后再检测条件语句。而while循环是先检测条件语句,再执行大括号内的语句。

do…while循环的格式为:
  1. do{
  2. 要执行的语句
  3. 计数语句
  4. }while(条件表达式);
复制
do..while 循环确保循环内的代码至少执行一次。尽管这也可以用 while 循环通过在 while 循环开始前放一段要执行的语句副本来实现,但很多程序员认为 do..while 循环更易于阅读。
  1. var mynb:Number = 0;
  2. do {
  3. trace(mynb);
  4. mynb++;
  5. }
  6. while (mynb < 5);
复制
在这里我们首先定义了一个变量,并给他赋值为0
接下来进入循环体。由于是do...while循环,所以必须先执行一次循环体(输出0)
接下来变量值增加1变成了1
然后才会进入循环条件,发现满足条件,那么再执行一次循环体,输出1,变量变为2
以此类推。最后输出的结果想必大家都能分析出来了吧(只能输出到4)




若将该例改成for循环:
  1. for(var mynb:Number = 0;mynb < 5;mynb++){
  2. trace(mynb);
  3. }
复制
输出的结果跟do while循环一样。

再看一例:
  1. var i:Number = 5;
  2. do {
  3. trace(i);
  4. i++;
  5. } while (i < 5); // 输出: 5
  6. 若将该例改成for循环:
  7. for (var i:Number = 5; i<5; i++) {
  8. trace(i);
  9. } // 没有输出
  10. 输出的结果跟do while循环是不一样的。
复制
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.

友情提示:单击下列任意一个表情,即可瞬间自动回复本帖!

好贴......
郁闷......
开心......
擦汗......
鄙视......
狂怒
谢谢
爱你呦
拜托了
嗯嗯
OMG
求关注
伤心......
无奈.....
无奈.....
无奈.....
无奈.....
无奈.....
哈哈哈
NO
OK
what
我来了

最近访问本帖者列表:

打赏

取消

感谢您的支持,我会继续努力的!

扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by 爱秀代码,分享从这里开始,精彩与您同在

点评
B Color Smilies

您还可以输入:个字符
X

X

 

B Color Image Link Quote Code Smilies
高级模式 | 发新话题

您需要登录后才可以回帖 登录|立即注册

快速
返回顶部
返回首页