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

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

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

小小期待下~~~~

02-C#入门(循环)的更多相关文章

  1. 03 Mybatis:01.Mybatis课程介绍及环境搭建&&02.Mybatis入门案例

    mybatis框架共四天第一天:mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 -------------------------------------- ...

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

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

  3. C语言第02次作业--循环结构

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 1- 经过这两周的学习,我深切地体会C语言非常的难(对于我而言).大部分情况都是题目不理解和没有思路,或者编译 ...

  4. C博客第02次作业---循环结构

    1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量 1.2 本章学习体会及代码量 1.2.1 学习体会 1.这两周的学习懂得了循环结构的使用方法,懂得了在什么时候应该使用循环结构来处理问 ...

  5. 02 Maven 入门使用

    Maven 入门使用 1. Maven 项目工程目录约定 Project |-src | |-main | | |-java -- 存放项目的 .java 文件 | | |-resources -- ...

  6. java入门---循环结构 - for, while 及 do...while&break&continue

        顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构.Java中有三种主要的循环结构: while 循环 do…while 循环 for 循环     在Jav ...

  7. SpringMVC札集(02)——SpringMVC入门完整详细示例(下)

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  8. python2.7入门---循环语句(for&嵌套循环)

        咱们直接先来看for循环.Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串.然后再来看一下它的语法结构: for iterating_var in sequence: ...

  9. python2.7入门---循环语句(while)

        接下来就要了解循环语句了.我们都知道,程序在一般情况下是按顺序执行的.编程语言提供了各种控制结构,允许更复杂的执行路径.循环语句允许我们执行一个语句或语句组多次,下面是在大多数编程语言中的循环 ...

  10. C语言入门-循环

    一.循环 输入一个数字,输出该数字有几位 #include <stdio.h> int main() { int x; int n = 0; scanf("%d" , ...

随机推荐

  1. win7系统.LNK类型文件打开方式的修复办法

    1.首先 win+r 2.打开运行程序 3.输入: regedit 4.找到: 计算机\HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\currentvers ...

  2. Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!)

    Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!) 一.JDK的安装 安装位置都在同一位置(/usr/tools/jdk1.8.0_73) jdk的安装在克隆三台机器的时候可以提前安装 ...

  3. MySQL字符串处理函数的几种常见用法

    1.字符串大小写转化: (1).将tbl_student表的user_name字段所有小写字母,替换为大写: update tbl_student set user_name=UPPER(user_n ...

  4. 请求网络get

    package com.baidu.net; import java.io.IOException; import org.apache.http.HttpEntity;import org.apac ...

  5. 【Cocos2d-x 3.x】 场景切换生命周期、背景音乐播放和场景切换原理与源码分析

    大部分游戏里有很多个场景,场景之间需要切换,有时候切换的时候会进行背景音乐的播放和停止,因此对这块内容进行了总结. 场景切换生命周期 场景切换用到的函数: bool Setting::init() { ...

  6. maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener

    环境:Groovy/Grails Tool Suite 3.1.0.RELEASE(BASED ON ECLIPSE JUNO 3.8.1).JDK1.6.Maven3.05.Tomcat6 错误描述 ...

  7. linux性能指令分析进阶篇

    作为刚刚走入测试领域的我来说,对性能测试了解的也不是很深,只不过自己平常一直在收集资料,性能测试也没有那么神秘,也请广大测试小白不要陷入误区,其实性能测试跟功能测试关系并不大,即使你做10年功能测试, ...

  8. hiho一下123周 后缀数组四·重复旋律

    后缀数组四·重复旋律4 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列.小Hi ...

  9. 2016HUAS_ACM暑假集训4C - 递推

    题目大意:给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形. 这里我们可以这样看: 对于行:假如是m单位长度,则长度为1的矩形有m个,长度为2的矩形有m-1个......长度为m的只有1 ...

  10. day26 分布式监控系统开发

    本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设 ...