最近发现读书是个慢过程,很难一口吃个胖子,尤其读这种技术类的书,需要细嚼慢咽的精读,很耐心的读。迄今为止我一个像样的C#程序都没有做过,是小白中的小白,这倒不影响什么,毕竟在曾经学过C语言的,再去学习C#,基本的理论很相似,入门倒也不难。
想要快速熟练一种编程语言,一是要有牢固的编程基础,就是基本知识要扎实!扎实!二是尽快的写一万行可以执行的代码,注意是可执行的,不是简单的抄写。
那么,我们现在就从基本的熟悉流程控制语句开始吧,流程控制语句虽然简单,好像就那么五六种,但是它却是C#语言的核心,就像写文章一样,它是基本的脉络,能熟练的活用,倒也没有那么容易呢。
C#的流程控制包含顺序语句、分支选择语句、循环语句和跳转语句,通过这些语句可以控制程序代码的执行次序,提高程序的灵活性,从而完成比较复杂的功能。
1、顺序语句,最简单,只有一种类型,就是逐条执行
概念 | 在编程的世界中,程序就相当于“菜谱”,而程序的流程便是菜谱中规定的执行顺序,即先做什么,后做什么,而这种按顺序执行的过程称为顺序语句。 顺序结构是程序代码中最基本的结构,是指程序中所有语句都是按照书写顺序逐一执行的,代码从main()函数开始运行,从上到下,一行一行地执行,不漏掉代码。 |
实例 | using System namespace Project1 {//注意此处的格式,这个括号需要和它对应的关键字对齐。 class Program { //这个括号的位置是上个括号往右缩一个TAB键,或者4个空格 static viod Main(string[] args) { Console.WriteLine("请输入第一个参数"); Console.WriteLine("请输入第二个参数"); } } } 以上代码实现的是按照顺序输入两串字符,程序一行行的执行,不漏掉任何代码。 |
注意事项 | 在书写代码时注意代码的规范。 |
2、分支选择语句:if条件语句;if else语句;if....else if....else语句;嵌套if语句;switch语句;唉!类型还挺多,理解深刻,才可以熟练运用。
概念 | 一种控制代码分支的结构,一个if语句的条件可以是布尔变量,也可以是表达式,但如果是表达式,则得到的结果必须是布尔值。 |
语法格式 | if(布尔表达式) { /*如果布尔表达式为真将执行的语句*/ } 如果布尔表达式为True,则if语句内的代码块将被执行。如果布尔表达式为False,则if语句结束后的第一组代码将被执行。 |
实例 | using System namespace Project1 {//注意此处的格式,这个括号需要和它对应的关键字对齐。 class Program { //这个括号的位置是上个括号往右缩一个TAB键,或者4个空格 static viod Main(string[] args) { /*局部变量初始化*/ int a=10; /*使用if语句检查布尔条件*/ if(a>20) { Console.WriteLine("a大于20"); } Console.WriteLine("a的值是{0}",a); } } } |
注意事项 | 在书写代码时注意代码的规范,注意注释书写的格式/* */ |
概念 | 一种控制代码分支的结构,一个if语句后可以跟一个else语句。当布尔表达式为假,才会执行else后边的语句。 |
语法格式 | if(布尔表达式) { /*如果布尔表达式为真将执行的语句*/ } else { /*当布尔表达式为假,将会执行的语句*/ } 如果布尔表达式为True,则if语句内的代码块将被执行。如果布尔表达式为False,将会执行else语句内的代码。 条件运算符(?:),可以用来代替if.....else语句。 ?: |
实例 | int a=8; string b=(a<10)?"小于10":"大于10"; 计算表达式可得到一个布尔值,运算符的结果根据这个值来确定是result if true,还是result if false。 using System namespace Project1 {//注意此处的格式,这个括号需要和它对应的关键字对齐。 class Program { //这个括号的位置是上个括号往右缩一个TAB键,或者4个空格 static viod Main(string[] args) { /*局部变量初始化*/ int a=50; /*使用if语句检查布尔条件*/ if(a<10) { Console.WriteLine("a小于10"); } else { Console.WriteLine("a大于10");//这行会被执行 } Console.WriteLine("a的值是{0}",a);//这行会执行 } } } |
注意事项 | 在书写代码时注意代码的规范,注意注释书写的格式/* */ |
概念 | 一个if语句后可跟一个可选的else if......else语句,该语句用于执行多种条件。 |
语法格式 | if(布尔表达式1) { /*如果布尔表达式为真将执行的语句*/ } else if(布尔表达式2) { /*当布尔表达式2为真时,将会执行的语句*/ } else if(布尔表达式3) { /*当布尔表达式3为真时,将会执行的语句*/ } else { /*当以上条件都不为真时执行*/ } |
实例 | using System namespace Project4 { class Program { static viod Main(string[] args) { Console.WriteLine("请输入学生成绩:"); String s=ReadLine(); int a; a=int.Parse(s);//将字符串转化成int型数据 /*检查布尔条件*/ if(a>=90) { Console.WriteLine("成绩优秀:"); } else if(a>=80) { Console.WriteLine("成绩优良:"); } else if(a>=70) { Console.WriteLine("成绩中等:"); } else if(a>=60) { Console.WriteLine("再接再厉:"); } else { Console.WriteLine("继续努力:"); } } } } |
注意事项 | 1、一个if后可跟0个或一个else,它必须在任何一个else if 之后。 2、一个if后可跟0个或1个else if ,它必须在else 之前。 3、if语句是至上而下执行,只要一个符合条件,就不会再去判断后边的语句。 4、else if 的语句个数不受限制,但是如果else if语句的个数较多,则应该考虑另外一种分支结构switch。 |
概念 | 用户可以在一个if或else if语句中使用另一个if或else if语句 |
语法格式 | if(布尔表达式) { /*如果布尔表达式为真将执行的语句*/ if(布尔表达式2) { /*当布尔表达式为真时执行*/ } } |
实例 | using System namespace Project1 {//注意此处的格式,这个括号需要和它对应的关键字对齐。 class Program { //这个括号的位置是上个括号往右缩一个TAB键,或者4个空格 static viod Main(string[] args) { Console.WriteLine("请输入机票原价"); string str1 = Console.ReadLine(); double money=double.Parse( str1); Console.WriteLine("请输入月份"); String str2 = Console.ReadLine(); int month=int.Parse( str2 ); Console.WriteLine("选择仓位:1头等舱 2经济舱"); string str3=Consle.ReadLine(); int type = int.Parse(str3); if(month>=5&&month<=10) { if(type==1) { Console.WriteLine("您的机票价格为{0}",money*0.9); } else if(type==2) { Console.WriteLine("您的机票价格为{0}",money*0.75); } } else { if(type==1) { Console.WriteLine("您的机票价格为{0}",money*0.6); } else if(type==2) { Console.WriteLine("您的机票价格为{0}",money*0.3); } } ` } } } |
注意事项 | 当需要判定多个维度的条件时,需要用到嵌套if语句。 |
概念 | 允许测试一个变量等于多个值时的情况,每个值称为一个case,且被测试的变量会对每个case进行检查。 |
语法格式 | switch(控制表达式) { case 测试值1: break; case 测试值2: break; case 测试值3: break; ....... case 测试值n: break; default: break; } |
实例1 | using System namespace Project1 {//注意此处的格式,这个括号需要和它对应的关键字对齐。 class Program { //这个括号的位置是上个括号往右缩一个TAB键,或者4个空格 static viod Main(string[] args) { Console.WriteLine("请输入第一个数字"); int x=Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入运算类型"); char z=char.Parse(Console.ReadLine()); Console.WriteLine("请输入第三个数字"); int y=int.Parse(Console.ReadLine()); switch(z) { case '+': Console.WriteLine("计算结果为:{0}",x+y); Console.ReadKey(); break; case '-': Console.WriteLine("计算结果为:{0}",x-y); Console.ReadKey(); break; case '*': Console.WriteLine("计算结果为:{0}",x*y); Console.ReadKey(); break; case '/': Console.WriteLine("计算结果为:{0}",x/y); Console.ReadKey(); break; default: Console.WriteLine("运算类型输入错误"); Console.ReadKey(); break; } } } } |
实例2 | using System namespace Project1 {//注意此处的格式,这个括号需要和它对应的关键字对齐。 class Program { //这个括号的位置是上个括号往右缩一个TAB键,或者4个空格 static viod Main(string[] args) { char c1='A'; char c2='B'; switch(c1) case 'A': Console.WriteLine("这是外部switch的一部分"); switch(c2) { case 'B': Console.WriteLine("这是内部switch的一部分"); break; } break; } Console.WriteLine("c1的字符为{0}",c1); Console.WriteLine("c2的字符为{0}",c2); } } |
注意事项 | 用户可以把一个switch语句嵌套在另一个switch语句内,即使内部和外部的case常量包含相同的值也不冲突。 由于C#存在不准贯穿的原则,所以需要一条跳转语句来阻止贯穿,而break语句则是最常见的方式,但是也可以用一条return语句或者一条throw语句来替代它。 |
3、循环语句
概念 | 只要给定的条件为准,while循环语句会重复执行一条目标语句。 |
语法格式 | while(表达式) { 语句或语句块; } |
实例 | using System namespace Project1 {//注意此处的格式,这个括号需要和它对应的关键字对齐。 class Program { //这个括号的位置是上个括号往右缩一个TAB键,或者4个空格 static viod Main(string[] args) { int x=3; while(x<13) { Console.WriteLine("x的值{0}",x); x++; } } } } |
注意事项 | 循环体包含一条以上的语句时,应用{},括起来,以复合语句的形式出现,否则,它只认为while后面的第一条语句是循环体。 |
概念 | do while循环和while循环类似,但是do.....while循环会确保至少执行一次循环。 |
语法格式 | do { 语句或语句块; }while(表达式); |
实例 | using System namespace Project1 {//注意此处的格式,这个括号需要和它对应的关键字对齐。 class Program { //这个括号的位置是上个括号往右缩一个TAB键,或者4个空格 static viod Main(string[] args) { int x=3; { Console.WriteLine("x的值{0}",x); x=x+1; } while(x<16); } } } |
注意事项 | 1、do while 语句是先执行循环体语句,后判断循环终止条件,与while语句不同,二者的区别在于当while后边的表达式为假时,while语句的循环体一次也不执行,而do while 语句的循环体至少要执行一次。 2、在书写格式上,循环体部分要用{}括起来,即使只有一条语句也如此,do while 语句最后以分号结束。 3、do while语句是从后面控制表达式退出循环,但它也可以构成无限循环,此时要利用break语句或return 语句直接从循环体内跳出循环。 |
概念 | for循环是允许用户编写执行特定次数的循环控制结构。 |
语法格式 | for(;;) { 语句或语句块 } for循环的3个表达式都是可以省略的,但;不能省略。 |
实例 | using System namespace Project1 {//注意此处的格式,这个括号需要和它对应的关键字对齐。 class Program { //这个括号的位置是上个括号往右缩一个TAB键,或者4个空格 static viod Main(string[] args) { for (int x=10;x<20;x++) { Console.WriteLine("x的值{0}",x); } } } } |
注意事项 |
foreach循环语句
概念 | foreach循环用于列举出集合中所有的元素,foreach语句中的表达式由关键字in隔开的两个项组成,in右边的项是集合名,in左边的项是变量名,用来存放该集合中的每个元素。 |
语法格式 | foreach(类型 标识符 in 集合) { 循环代码; } |
实例 | using System namespace Project1 {//注意此处的格式,这个括号需要和它对应的关键字对齐。 class Program { //这个括号的位置是上个括号往右缩一个TAB键,或者4个空格 static viod Main(string[] args) { int x=0,y=0; char[]ch=new char[]{'0','1,'0','1','1','0'}; foreach(char a in ch) { if(a=='0') x++; else y++; } Console.WriteLine(ch); Console.WriteLine("0的个数为{0}\n1的个数为:{1}",x,y); } } } |
注意事项 |
嵌套循环语句
概念 | 一个循环结构的结构体内又包含另一个完整的循环结构。内嵌的循环中还可以嵌套循环,这样就构成了多层嵌套循环。 |
语法格式 | 嵌套for循环语句 for(;;) { 语句或语句块; for(;;) { 语句或语句块; } } |
语法格式2 | 嵌套While循环语句 while(表达式1) { while(表达式2) { 语句或语句块; } 语句或语句块; } |
语法格式3 | 嵌套do while循环语句 do { 语句或语句块; do { 语句或语句块; } while(表达式1); }while(表达式2); |
实例 | 实例比较多,这里就不给大家一一列举了,只要深刻理解基本的循环结构,嵌套结构理解起来就特别容易了。 |
注意事项 |
另外,还有跳转语句,break,continue,return,goto,后面会重点介绍。
现在是21点44分,今天就先写到这儿吧,要整理整理入睡了,未完待续!
也友善的提醒各位程序员朋友们,不要熬夜!保重身体!毕竟身体是革命的本钱,保持充足的精力,迎接明日的朝阳。朋友们,晚安!明日的阳光很美,值得期待。