C#的语法----程序结构(1)

接下来的内容是整个C#学习的脉络,它将各个知识点串联了起来,是整个C#的重点,所以篇幅较长。

首先,我们类比一下PLC和C#执行代码的方式,其实不难发现都是顺序扫描,以Main为程序入口,从上到下一行一行执行。这属于顺序结构。下面我们看看已下几种结构

(1)分支结构:if if-else

(2)选择结构:if-else-if  switch-case

(3)循环结构:while do-while for foreach

首先先分享分支结构的用法

if语句

语法:

if(判断条件)

{

    要执行的代码;

}

判断条件:一般为关系表达式或者bool类型的值。

执行过程:程序运行到if处,首先判断判断条件,若为true则执行{}中的程序,如果返回false,则继续向下执行。

即先判断在执行

if else语句

语法:

if(判断条件)

{

   执行代码1;

}

else

{

    执行代码2;

}

执行过程:程序执行到if处,首先判断判断条件是否诚意,返回true,则执行代码1,否则执行代码2。用于两种情况的判断。

注意:else永远和离他最近的那个if配对。

这里我们还要去提到一个if-else的一个简化版用法,若语法条件不是很复杂可以这样使用:

(表达式)?(result1):(result2)

 

if else-if语句

作用:用来处理多条件的区间的判断。

语法:

if(判断条件1)

{

    要执行的语句1;

}

else if(判断条件2)

 

{

 

    要执行的语句2;

 

}

 

else if(判断条件3)

{

 

    要执行的语句3;

 

}

 else

{

        要执行的语句4;

}

 

.....

执行过程:程序首先判断判断条件1,条件成立,执行语句1,否则执行判断条件2,成立跳出,否则继续执行语句3.如果都不成立则执行最后else语句。(else语句可以省略)

所以总结一下:if处理一种情况,if-else处理两种情况,if else-if处理多种情况。

 


 

try-catch异常捕获

问题引出:语法上没有错误,在程序运行过程当中,由于某些原因程序出现了错误,不能在正常的运行。

下面我们看一段代码:

1 Console.WriteLine("请输入一个数字");
2 int number = Convert.ToInt32(Console.ReadLine());
3 
4 Console.WriteLine(number*2);
5 Console.ReadKey();

我们正常输入int类型数字时,是没有问题的,但是我们呢要是输入类似“123ab”这样的数字,系统就会抛异常,程序停止运行。这时,

若想你的程序变得坚强,就会用到try-catch进行异常捕获。

就是哪里可能会出问题就将他try起来。

语法:

try

{

    可能会出现异常的代码;

}

catch

{

     出现异常后要执行的代码;

}

执行过程:如果try中的代码没有出现异常,那么catch中的代码就不会执行。

更改后的代码如下:

 

 1 int number = 0;
 2 Console.WriteLine("请输入一个数字");
 3 try
 4 {
 5      int number = Convert.ToInt32(Console.ReadLine());
 6      Console.WriteLine(number*2);
 7 }
 8 catch
 9  {
10       Console.WriteLine("输入的内容不能转换成数字");
11  }  
12  Console.ReadKey();

 

 

这里要注意变量的作用域,变量的作用域就是你能使用到这个变量的范围,一般是从声明他的那个括号开始到那个括号对应的括号结束。

注意:try-catch之间不允许有代码,要紧密相连。

下面看这样一个练习:

李四的年终工作评定,若为A,工资涨500,为B,工资涨200,为C工资不变,若为D工资降200,若为E,工资降500.原工资为5000

要求输入李四评级,然后显示李四来年的工资。

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace 草稿
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             double salary = 5000;
14             Console.WriteLine("请输入对李四的年终评定");
15             string level = Console.ReadLine();
16             if (level=="A")
17             {
18                 salary += 500;
19             }
20             else if (level=="B")
21             {
22                 salary += 200;
23             }
24             else if (level == "C")
25             {
26                 salary += 0;
27             }
28             else if (level == "D")
29             {
30                 salary -= 200;
31             }
32             else if (level == "E")
33             {
34                 salary -= 500;
35             }
36             else
37             {
38                 Console.WriteLine("输入有误程序退出");
39             }
40             Console.WriteLine("李四来年的工资是{0}",salary);
41             Console.ReadKey();
42         }
43     }
44 }

 

但是以上代码会有问题,就是当你输入的为ABCDE以外的字母时,会发生一下问题:

 

 

 也就是在执行完else代码后 最后的Console.WriteLine("李四来年的工资是{0}",salary);不应该输出为了解决这个问题,我们可以用以下方法解决。也就是用一个标志位。

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace 草稿
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             bool b = true;
14             double salary = 5000;
15             Console.WriteLine("请输入对李四的年终评定");
16             string level = Console.ReadLine();
17             if (level=="A")
18             {
19                 salary += 500;
20             }
21             else if (level=="B")
22             {
23                 salary += 200;
24             }
25             else if (level == "C")
26             {
27                 salary += 0;
28             }
29             else if (level == "D")
30             {
31                 salary -= 200;
32             }
33             else if (level == "E")
34             {
35                 salary -= 500;
36             }
37             else
38             {
39                 Console.WriteLine("输入有误程序退出");
40                 b = false;
41             }
42             if (b)
43             {
44                 Console.WriteLine("李四来年的工资是{0}", salary);
45             }
46             
47             Console.ReadKey();
48         }
49     }
50 }
posted @ 2019-12-22 13:42  大勇者  阅读(610)  评论(0编辑  收藏  举报