专栏首页高渡号外能否简单地讲清楚循环语句?

能否简单地讲清楚循环语句?

能否简单地讲清楚循环语句?

—— 新手编程1001问之C#编程基础


曾经听一位有名望的计算机专业老师跟我讲过一件事,他说他的历届学生在学习语言课程的时候,遇到循环语句,总是感觉比其他流程控制语句理解起来更为难一些。特别是一些女生,对循环语句的理解似乎更费劲。

循环语句真的那么难以理解吗?

我后来尝试过跟我的学生探讨这个问题,其实,如果他们不花点功夫刻意去领悟的话,确实会觉得相对没那么好理解。特别是如何熟练的使用他们,会更不容易一些。

于是,我从一个“会使用者”的的角色中跳出来,试图去体会初学者的感受,发现大家的反馈应该没错。我们说,学习计算机语言有利于训练我们的逻辑思维能力,其实这种训练,它主要就体现在学习、掌握和熟练运用流程控制语句上面,而循环语句在所有的流程控制语句中,的确更抽象一些,就像多维空间超出我们日常认知范围一样,理解一个循环语句,需要我们有更强的想象力。

但是,遗憾的是,学习和掌握它们却仍然没有什么捷径。应主题的要求,我们今天就系统地,且尽可能简洁地把循环语句讲清楚,以方便大家的理解和运用。

首先,我们要建立一个基本的认知:所有的循环语句,都是需要建立循环条件的。在条件成立的情况下,重复执行指定的代码块。

常用的循环语句有以下四种:

  • while 语句
  • do 语句
  • for 语句
  • foreach 语句

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]);
    }
}

好了,今天的问题就讲到这里,希望对你有帮助。

本文分享自微信公众号 - 高渡号外(igaodu),作者:高渡号外

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python入门(6)

    回顾前几期的课程,关于python语法,我们已经学习了常量和变量、运算符和表达式,甚至接触过几个内置函数(input()和print()),虽然我们还没有正式介...

    高一峰
  • 能否一次性帮我把数组讲明白?

    都知道,对于程序员来说,数组是个好东西。它能帮助我们大幅度提高编程及数据处理的效率。但是,定义和使用数组又有许多规矩,没有彻底厘清之前,总是会一不小心就会制造出...

    高一峰
  • 夯实Python基础(2)

    我们知道,字符串是Python的内置对象,用来存储和表现基于文本的信息。通过《Python入门》的学习,我们已经了解和掌握了字符串的如下特性:

    高一峰
  • Day 1-Java-imooc-4.流程控制语句

    课程地址:http://www.imooc.com/learn/85 总结图片来自 http://www.imooc.com/article/10535 ? 本...

    杨熹
  • JDK8的LinkedList源码学习笔记

    itliusir
  • 每天 3 分钟,小闫带你学 Python(八)

    It's not who you think you are that holds you back; it's who you think you're no...

    小闫同学啊
  • 警惕钓鱼陷阱:95%赌球网站是钓鱼网站

    这一届世界杯,阿根廷、德国、西班牙接连败北,让球迷连呼意外。而网络赌球更是害人害己,前不久深圳一男子欲跳水库,只因押车卖房套现60万元赌球,哪知不断的冷门,让他...

    安恒信息
  • 网站速度优化之“动静分离”、有效减轻后端服务器压力!

    在介绍动静分离之前,我感觉还是有必要介绍一下:什么是静态网站?什么是动态网站?由于我之前已经在一篇个人博客中详细介绍了动静态网站,在这里就不再做详细的描述(有需...

    Levi.Ackermann
  • 一文揭露各类劫持浏览器主页手段 附火绒修复方式

    相信不少用户都经历过这样恼人的经历:打开常用的浏览器后,突然发现首页大变样,各种导航站铺满全屏,还充斥悬浮广告和各类弹窗,好不容易修改回原有的首页,没过多久却又...

    用户6477171
  • Golang语言--反转字符串

    Go反转字符串 似乎没什么好办法,string的话也得需要先转换成rune再反转再转成string ?

    李海彬

扫码关注云+社区

领取腾讯云代金券