循环语句的使用
循环,顾名思义,就是重复;在c#中就是重复的去做某一件事,也就是去执行某一段代码;在c#中只有三种循环结构那就是:while循环,do while循环,和for循环;其实功能都是一样的,而且互相也都是可以转换的,注意是在书写格式,以及各个循环,所侧重的方面,有所不同;下面将一一的介绍
1.while循环
一开始也说了,循环和if,else有些许的相似,在执行前都是需要先进行,逻辑判断,成立的话,循环就执行,否则循环结束;在这里主要记住书写格式就可以了:
eg:{
while(<循环的条件>){
//条件成立执行的语句,也就是循环体
//需要注意的是,在循环体中必须要有一个变量,随着循环的执行
//一直在改变,并且最终使循环的条件不成立,从而使循环结束,要
//不然就成了 死循环
}
}
循环的条件是逻辑表达式,成立则执行循环,否则循环就结束了;
while循环主要的运用场合是在,不知道具体要循环多少次;
在循环体中要有一个循环增量,可以使循环趋于结束,不然就是死循环;
在设计程序的时候,应该尽量的避免死循环,但是有些程序也要用到死循环;
2.do while循环
do while循环和while循环是颠倒过来的,后者是先判断条件然后执行循环体,前者相反,不管三七二十一,先执行一次循环体,然后在进行条件的判断,这样的话,循环再运行的时候,就至少的会执行一次。别看这细微的差别,要知道有时候while循环可能一次都不执行,因为可能一开始条件就是不成立的;
书写格式:
{
do{
//这里面放的是循环体,和while是一样的
}while(<循环的条件>);//需要注意的是,这里有一个分号,这种格式不能
//对比while来记忆,少了分号,编译就会出错
}
3.for循环
for循环在程序设计中使用的频率,相对于其它两种循环来说,要更加的高一些,可能是因为它的书写格式,使得循环的循环条件、循环体、循环增量看起来一目了然,不容易造成死循环,在while和do while中有时可能不经意间,就忘了写循环增量,造成循环结束不了;
书写格式:
{
for(<初始化变量> ; <循环的条件> ;<循环增量(也叫迭代器)>){
//循环体
}
}
在for中的三个参数,初始化变量,和迭代器忽略不写也是可以的;
刚才讲了,三种循环可以互相的转换,只是侧重的循环种类,有些不同,for循环主要是侧重,知道了循环的次数,和while正好是相对的;
它的执行流程,和前面两个循环只有一点小小的差别,那就是执行完循环体之后,会执行一次迭代器,然后在去判断循环的条件。其它的都一样;
4.循环其他的结束方式
这里引出了一个新的问题,就是除了循环的条件不成立了,循环结束了,还有没有其他的方式,使循环结束呢?
答案是肯定的,而且方法也很多,但是涉及到几个关键字,它们具体的用法如下:
- break:和case中的break是一样的,循环中只要一执行到这个关键字,循环立即结束,非常干脆,作用就是跳出当前的循环;
- continue:和break的干净利落的退出循环不一样,continue就显得委婉一些,在循环中遇到它,程序就会跳过本次循环,是本次循环,然后继续判断循环的条件,执行下一个循环;
- goto:它的使用争议比较大,过多的使用的话,会造成程序的混乱,这也是因为它的功能太强大;循环体中遇到它,就会跳转到它所指定的标签(就是事先在代码中标记的好的);
- return:它就更加的简单粗暴了,和break的功能一样,也是直接的退出循环,可是它退出的就更加的狠了,直接的退出了 函数
循环中出现以上四个关键字的时候,它们的后面是不可以跟其它的代码的,那样编译器,会报错,因为那些代码压根就执行不到;
在代码中如何打标签:标签只可以打在选择和循环结构的前方,作用就像桌面上的一个快捷方式,使用到这个标签时,程序直接跳到标签对应的代码:
书写格式:
{
outer:for(){ //这就是在循环的前面打了一个标签
inner :for(){ //这也是一个标签;
if(){
//需要注意的是break,continue,goto,都是可以使用标签的,
//各自原本的功能不变
break outer;//跳转到outer标签,对应的代码下执行;
}
}
}
}
这里定义了一个嵌套的for循环,里面的循环中有一个判断的条件,一旦条件成立,立马的跳转到外面的for循环中,这就干预了,程序的正常执行,以达到我们要的功能;