记得第一次学编程的时候,就听说过一句话:“新手学习和掌握一门编程语言是很容易的,但是如果你学会了某种编程语言,再去学习新的语言,就很难掌握了”,现在深深地感受到了这方面的阻力。

其实流程控制、循环,包括面向对象这些知识,基本所有语言都是相通的,唯一的区别就在于书写时的格式、规范不一致。而这些方面的差异,又是比较细微的,所以往往在学的时候依靠经验能很快理解,但过后却发现并未能使(掌)用(握)。

  • do / while

循环的意义,其实就是重复执行语句,当然,还会有相应的条件判断,不然就成死循环了。do循环其实和while循环的区别:do循环会先执行一次循环体,才继续判断;而while循环会先判断,再决定是否执行循环体:

            double benJ, liV, muB, liX;int needY = 0;Console.WriteLine("请输入您的存款数额:");benJ = Convert.ToDouble(Console.ReadLine());Console.WriteLine("请输入存款利率:");// +1,计算后的结果则为本金+利息,如只需要利息,则去掉+1。学好数学很重要啊liX = Convert.ToDouble(Console.ReadLine()) / 100.0;liV = 1 + liX;liX = benJ * liX;Console.WriteLine("请输入预期收益额:");do{muB = Convert.ToDouble(Console.ReadLine());if (muB <= benJ){Console.WriteLine("预期收益额低于本金,请输入高于本金的收益额:");}} while (muB <= benJ);while (benJ < muB){benJ *= liV;++needY;}Console.WriteLine("每年利息 {3},存入 {0} year{4},您的本金和利息之和 {1} 能够达到预期的目标 {2}。", needY, benJ, muB, liX, needY > 1 ? "s" : "");if (needY == 0) Console.WriteLine("高起点,低目标,其实,您根本没必要存款到银行~");Console.ReadKey();

这儿遇到个很不错的do循环的应用场景:使用do循环判断用户输入的内容是否满足条件,如果没有,则重复执行,直到满足条件才退出循环(do循环的while结尾处需要添加 ; 号)。示例还应用了前面学习的三元运算符 ? ,根据条件判断结果,格式前面的字符串。

  • for

for循环比较适合于指定次数的应用,在使用时,需初始化一个作为计数器的变量值(可放在for语句中声明,但在循环体外就不能访问该计数器变量了):

            for (int i = 1; i <= 10; i++){Console.WriteLine("{0}", i);}

声明了for的计数器变量后,使用 ; 号隔开,接着添加条件判断的表达式(应涉及计数器变量) i <= 10,继续使用 ; 号隔开,添加对计数器变量的操作 i++(不用 ; 号结尾)。尝试把i++去掉,放在循环体内,也是可行的。

书上举了一个例子,用for循环打印出mandelbrot集,呵呵,虽然看懂代码的逻辑结构了,但是算法完全看不懂,就不贴上来了。不过,还是延伸阅读了一下mandelbrot集的创始人:本华·曼德博,以及一个数学构造:碎形(fractal)。花了点时间阅读了一些资料,感谢前人,致敬。

当然,示例的重要性不言而喻,试着回想当年学basic写的《九九乘法表》,在C#中简单做了一个。原理是相同的,主要注意细节:

            int i, k;for(i = 1; i < 10; i++){Console.Write("{0}: ", i);for(k = 1;k <= i; k++){Console.Write("{0}x{1}={2} " ,k, i, i * k);}Console.WriteLine("\n");}Console.ReadKey();

这种for循环嵌套的方式,在实现横、纵向循环(输出、控制)是很有用的,之前在做excel VBA的时候,经常会用到。

  • 循环的中断

以前一直没记住,倒底是该用break还是用continue,不过下面这个例子,倒是很形象地描述清楚了:

            int i = 1;while (i <= 10){if (i == 6)break;Console.WriteLine("{0}", i++);}for (i = 1; i <= 10; i++){if ( i % 2 == 0)continue;Console.WriteLine("{0}",i);}Console.ReadKey();

其实两个都可以叫中断,只不过:break是中断当前的循环体(退出循环体),而continue是中断循环体的当次循环(不会退出循环体)。

至于goto,呵呵,暂时让它见鬼去吧。主要目前没有遇到它可以合理出现的应用场景,希望高手可以指教。

  • 结语

学好数学很重要啊,编程语言只是实现理论的工(方)具(法),真正的原理还是需要很基础的理论知识才行。

到此,第4章的学习就算基本完成了。书的每一章结尾都会有练习题和小结知识点,下一篇笔记,就先把练习题做了,再把自己想实现的一个程序写出来,目的:主要是结合前面学到的知识点,综合运用,提高熟练度、加深记忆。

小小期待下~~~~

转载于:https://www.cnblogs.com/sfrost/p/3655118.html

02-C#入门(循环)相关推荐

  1. MyBatis-学习笔记02【02.Mybatis入门案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  2. 02前端入门HTML5 +CSS3+电商网页制作:CSS

    02前端入门HTML5 +CSS3+电商网页制作 0 来源 1 CSS基础 1.1 基础认识 1.1.1 css demo 1.1.1 css的层叠性 1.2 CSS引入方式 1.3 选择器 1.4 ...

  3. 吉林大学超星MOOC学习通高级语言程序设计 C++ 实验02 分支与循环程序设计(2021级)(1)

    由于本章节题目太多,我将分几次发布 实验02 分支与循环程序设计(2021级) 一. 程序题(共15题,100分) 1. (程序题) 题目编号 :Exp02-Enhance02,GJBook3-04- ...

  4. 吉林大学超星MOOC学习通高级语言程序设计 C++ 实验02 分支与循环程序设计(2021级)(4)

    13. 倍数 题目编号:Exp02-Basic07,GJBook3-03-07 题目名称:倍数 题目描述:任意一个整数n,如果n能同时被3.5.7整除,则n是3.5.7的倍数,如果n只能同时被其中的两 ...

  5. js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称

    1,列举对象属性的名称 <script language="javascript"> var obj=new Object(); obj.a="您好,我是田洪 ...

  6. 【NodeJS 学习笔记02】入门资源很重要

    前言 在我映像中,异步最早出现与ajax,当时我还在搞.net,然后.net居然出了一个异步的控件...... 虽然我最后知道了他不是异步的......然后,前端异步用得特别多,如果不是异步的程序,你 ...

  7. 02.JavaScript入门

    javascript: JavaScript在1995年由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成.因为Netscape与Sun合作,Netscape管理层 ...

  8. 简单入门循环神经网络RNN:时间序列数据的首选神经网络

    更多深度文章,请关注:https://yq.aliyun.com/cloud 随着科学技术的发展以及硬件计算能力的大幅提升,人工智能已经从几十年的幕后工作一下子跃入人们眼帘.人工智能的背后源自于大数据 ...

  9. axios vue 回调函数_Vue 02 —— Vue 入门小案例~使用 Axios 中的GET、POST请求

    作为后端攻城狮,写前端代码是一种什么体验? 相信不少人和 @Python大星 一样,有写过前端代码的经历. 记录一下,Vue 框架开发中"啼笑皆非"的故事,非专业前端人员,该案例无 ...

  10. (六)python3 只需3小时带你轻松入门——循环

    for循环 使用循环可以重复执行某些代码,可以方便程序编写:但是不记效率的使用循环会使程序运行效率降低. range 使用range()函数可以生成多个连续整数的range对象(这个概念后面会说).基 ...

最新文章

  1. android studio导入第三方库和demo
  2. After Effects CS4 期末考试卷
  3. centos 7 安装codeblocks
  4. 在SAP分析云里利用词云技术显示大段文本里的关键词
  5. PyTorch常用代码段整理合集
  6. 计算机系统的无形组成部分,软件是什么东西?!
  7. ES11新特性_动态import---JavaScript_ECMAScript_ES6-ES11新特性工作笔记065
  8. 跨境电商ERP是什么?
  9. 简单又帅气的折纸机器人教程_几张纸做出帅气纸飞机,做法简单飞行速度超快,手工折纸飞机...
  10. [c# 20问] 4.Console应用获取执行路径
  11. 性能,不是不重要,而是,它没有可维护性重要
  12. c语言源程序最多可能由组成,一个c语言源程序是由什么组成_后端开发
  13. detach()函数理解
  14. 支付宝相关服务申请入口
  15. JVM菜鸟进阶高手之路十(基础知识开场白)
  16. 016 Rust死灵书之安全方式内存初始化
  17. Vscode鼠标乱跳
  18. nginx学习十 ngx_cycle_t 、ngx_connection_t 和ngx_listening_t
  19. 软考中级一般需要备考多久?过来人告诉你
  20. PS学习-制作下雨效果

热门文章

  1. Python报错:UnicodeDecodeError:‘ascii‘ codec can‘t decode byte 0xe8 in position
  2. 1001: [BeiJing2006]狼抓兔子
  3. Linux platform驱动模型
  4. UVa11882,Biggest Number
  5. HDU1054 Strategic Game
  6. 推荐系统算法-Apriori
  7. javascript 对象的设计模式
  8. CSS中颜色代码和单位
  9. java 将Map拷贝到另一个Map对象当中
  10. 经常在比特币中看到的merkle树是什么?