曾经听一位有名望的计算机专业老师跟我讲过一件事,他说他的历届学生在学习语言课程的时候,遇到循环语句,总是感觉比其他流程控制语句理解起来更为难一些。特别是一些女生,对循环语句的理解似乎更费劲。
循环语句真的那么难以理解吗?
我后来尝试过跟我的学生探讨这个问题,其实,如果他们不花点功夫刻意去领悟的话,确实会觉得相对没那么好理解。特别是如何熟练的使用他们,会更不容易一些。
于是,我从一个“会使用者”的的角色中跳出来,试图去体会初学者的感受,发现大家的反馈应该没错。我们说,学习计算机语言有利于训练我们的逻辑思维能力,其实这种训练,它主要就体现在学习、掌握和熟练运用流程控制语句上面,而循环语句在所有的流程控制语句中,的确更抽象一些,就像多维空间超出我们日常认知范围一样,理解一个循环语句,需要我们有更强的想象力。
但是,遗憾的是,学习和掌握它们却仍然没有什么捷径。应主题的要求,我们今天就系统地,且尽可能简洁地把循环语句讲清楚,以方便大家的理解和运用。
首先,我们要建立一个基本的认知:所有的循环语句,都是需要建立循环条件的。在条件成立的情况下,重复执行指定的代码块。
常用的循环语句有以下四种:
1、while 循环
根据while括号里的条件,判断是否执行循环体内的代码块。条件成立则继续执行,否则,终止循环。
//while循环语句的静态方法
static void WhileStatement(string[] x)
{
//定义一个循环计数器
int i = 0;
//根据条件判断,是否继续执行循环体内的代码块
while (i < x.Length)
{
Console.WriteLine(x[i]);
i++;
}
}
2、do 循环
同样是根据while括号里的条件,判断是否执行循环体内的代码块。条件成立则继续执行,否则,终止循环。
但是,它与while循环的显著差别是,do循环体里面的代码会被首先执行一次以后,才开始检查循环条件。
//do循环语句的静态方法
static void DoStatement(string[] x){
string s = '开始循环...';
int i = 0;
//do循环开始
do
{
Console.WriteLine(s);
s = x[i];
i++;
} while (!string.IsNullOrEmpty(s));
}
3、for 循环
for循环自定义完整的循环条件,包括循环计数器、计数器的自增长,以及计数器的基数范围。for循环因为是一个基于计数器的循环,所以它有时也称之为迭代器。
//for循环语句的静态方法
static void ForStatement(string[] args)
{
//for循环开始
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine(args[i]);
}
}
4、foreach 循环
foreach循环定义一个元素对象,这个元素对象的值将自动按索引顺序取值于一个序列类型。循环语句将执行到序列类型的最后一个索引,索引结束后循环终止。
//foreach循环语句的静态方法
static void ForEachStatement(string[] args)
{
//foreach循环开始
foreach (string s in args)
{
//s自动按索引顺序取值于数组args
Console.WriteLine(s);
}
}
break 语句:
break,负责终止一个循环语句。它通常放在一个条件判断语句中。
//演示break语句的静态方法
static void BreakStatement(string[] args)
{
int i=0;
//循环语句
while (true)
{
string s = args[i];
//如果条件成立则终止循环
if (string.IsNullOrEmpty(s)) {
break;
}
//打印输出
Console.WriteLine(s);
i++;
}
}
continue 语句:
continue,直接跳到下一轮循环。它通常也是放在一个条件判断语句中。
//continue语句的静态方法
static void ContinueStatement(string[] args)
{
//for循环
for (int i = 0; i < args.Length; i++)
{
//如果条件成立直接跳到下一轮循环
if (args[i].StartsWith("/")){
continue;
}
Console.WriteLine(args[i]);
}
}
好了,今天的问题就讲到这里,希望对你有帮助。