D语言-循环 Part 1:while循环 Part 2:用的更多的for循环 Part 3:do-while循环 Part 4:循环的嵌套 Part 5:break和continue 课后作业:

所谓循环,就是不断的做一个事情。
while循环的结构是这样子的:

while (<一个表达式>){
    //如果表达式为真,执行这里
}
//否则,直接跳出到这里

举个例子:

int a = 10;
while (a > 0){
    writeln(a);
    a--;//这一句很重要,不然的话a一直都大于0,就一直不能跳出循环
    //我们把这种永远不能跳出的循环叫死循环
}
writeln("End While");

你会看到输出:

10
9
8
7
6
5
4
3
2
1
End While


Part 2:用的更多的for循环

for循环的语法格式是这样子的:

for(<定义控制循环次数的变量>;<循环条件>;<对于循环变量的操作>){
    //和While一样
}

你会发现:for循环只是把whle循环的所有条件放在了一堆
我们用for循环来改写上面的那个例子:

for(int a = 10;a > 0;a --){
    writeln(a);
}
writeln("End While");

你会看到输出:

10
9
8
7
6
5
4
3
2
1
End While

当然,for循环也会有死循环,双分号是个基本的for死循环:

for(;;){
    //do
}

for循环的任意一个条件都是可以省略的,前提是你知道你在干什么。


Part 3:do-while循环

do-while看起来是这样子的:

do{
    //不管是否为真,先把这里做一遍再说
}while(<循环控制表达式>);//循环一次过后再来看是否符合循环条件  

这个时候,编者想让你自己试试用do-while循环改写上面的程序。你发现了他的输出和while/for的输出有什么区别?怎么改进?


Part 4:循环的嵌套

当然,循环也可以放在循环当中。下面的例子是经典的用两个循环输出乘法口诀表:

import std.stdio;
int main (string[] args){
    for(int i=1; i<=9; i++){
        for(int j=1; j <= i; j++)
            write(i,"*",j,"=",i*j,"	");
        writeln();
    }  
    return 0;
}

Oh糟糕,你看见了:当需要用大括号括起来的一组语句中,如果只有一条语句,可以省略大括号
程序输出:D语言-循环
Part 1:while循环
Part 2:用的更多的for循环
Part 3:do-while循环
Part 4:循环的嵌套
Part 5:break和continue
课后作业:


Part 5:break和continue

break用于直接跳出当前循环,continue表示忽视continue下边的内容,直接开始第二次循环。
用法:

for(.....){
    if(....)
        break;//此时,直接跳出for循环
    else if(....)//我希望你还记得上次我们谈到的else-if
        continue;//此时,直接忽视下边的语句,开始下一次循环
}

课后作业:

1.写出一个程序,输出[2,n]的素数。
2.简述while、for和dowhile的区别。
3.尝试输出在三个不同的循环结束之后,他们控制循环的变量(假定为i)有什么区别?
4.在第三题的基础上尝试一下:i++换为++i,输出又会发生什么变化?