资源描述
课程名称:.NET应用开发 第二章 C#基础
《2.2 C#程序结构》
1. 目标概述 [2分钟] 2
2. 回顾 [5分钟] 2
3. 课程知识点讲解 2
3.1. C#的程序流程 [5分钟] 2
3.2. 条件语句 [15分钟] 3
3.3. 循环语句 [25分钟] 3
3.4. 跳转语句 [10分钟] 5
3.5. 程序的结构 [15分钟] 6
3.6. 编译运行 [10分钟] 6
4. 小结 [3分钟] 7
5. 考核点 7
6. 作业答案 7
7. 扩展练习 8
8. 学生问题汇总 8
9. 教学后记 8
本节目标
n 本节中将讲述如下主要内容:
² C#的程序流程
² C#的程序结构
² C#程序的编译运行
n 通过教学使学生掌握C#编译器的使用方法。
本节重点
n C#的程序流程
n C#的程序结构
n C#程序的编译运行
本节难点
n
授课课时
n 2课时
教法建议
1. 目标概述 [2分钟]
本节主要讲述C#语言程序结构。
2. 回顾 [5分钟]
回顾上一节的相关知识。
3. 课程知识点讲解
3.1. C#的程序流程 [5分钟]
引入:
主题:
在程序模块中,C#可以通过条件语句控制程序的流程,从而形成程序的分支和循环。C#中提供了以下控制关键字:
l 选择控制:if、else、switch、case
l 循环控制:while、do、for、foreach
l 跳转语句:goto、break、continue、return
l 编译控制:#if、#elif、#else、#endif
l 异常处理:try、catch、finally
3.2. 条件语句 [15分钟]
引入:
主题:
当程序中需要进行两个或两个以上的选择时,可以根据条件判断来选择将要执行的一组语句。C#提供的选择语句有if语句和switch语句。
1.if语句
if语句是最常用的选择语句,它根据布尔表达式的值来判断是否执行后面的内嵌语句。其格式为:
if (boolean-expression)
embedded-statement
或
if (boolean-expression)
embedded-statement
else
embedded-statement
[示例讲解]
示例2.2.1 考察以下代码,判断是否往应用程序传送参数。
2.switch 语句
if语句每次判断只能实现两条分支,如果要实现多种选择的功能,那么可以采用switch语句。switch 语句根据一个控制表达式的值选择一个内嵌语句分支来执行。它的一般格式为:
switch(controlling-expression)
{
case constant-expression:
embedded-statements
default:
embedded-statements
}
switch语句的控制类型,即其中控制表达式(controlling-expression)的数据类型可以是sbyte、byte、short、ushort、uint、long、ulong、char、string或枚举类型(enum-type)。
3.3. 循环语句 [25分钟]
引入:
主题:
循环语句可以实现一个程序模块的重复执行,它对于简化程序,更好地组织算法有着重要的意义。C#提供了四种循环语句,分别适用于不同的情形:
l while语句
l do-while 语句
l for语句
l foreach语句
1.while语句
while语句有条件地将内嵌语句执行0遍或若干遍,语句的格式为:
while (boolean-expression) embedded-statement
它的执行顺序是:
⑴ 计算布尔表达式boolean-expression的值;
⑵ 当布尔表达式的值为真时,执行内嵌语句embedded-statement一遍,程序转至第1步;
⑶ 当布尔表达式的值为假时,while循环结束。
while语句中允许使用break语句结束循环,执行后续语句;也可以用continue语句来停止内嵌语句的执行,继续进行while循环。
2.do-while语句
do-while语句与while语句不同的是,它将内嵌语句执行一次(至少一次)或若干次。语句的格式为:
do embedded-statement while(boolean-expression);
它按如下顺序执行:
⑴ 执行内嵌语句embedded-statement一遍;
⑵ 计算布尔表达式boolean-expression的值,为true则回到第一步,为false则终止do循环;
在do-while循环语句中,同样允许用break语句和continue语句实现与while语句中相同的功能。
[示例讲解]
例2.2.2 以下代码表示了如何使用do-while循环来实现求整数的阶乘。
3.for语句
for语句是C#中使用频率最高的循环语句。在事先知道循环次数的情况下,使用for语句是比较方便的。for语句的格式为:
for(initializer;condition;iterator) embedded-statement
其中initializer,condition,iterator这三项都是可选项。initializer为循环控制变量做初始化,循环控制变量可以有一个或多个(用逗号隔开);condition为循环控制条件,也可以有一个或多个语句;iterator按规律改变循环控制变量的值。
请注意,初始化、循环控制条件和循环控制都是可选的。如果忽略了条件,就可以产生一个死循环,要用跳转语句(break或goto)才能退出。
for语句执行顺序如下:
⑴ 按书写顺序将initializer部分(如果有的话)执行一遍,为循环控制变量赋初值;
⑵ 测试condition(如果有的话)中的条件是否满足;
⑶ 若没有condition项或条件满足,则执行内嵌语句一遍,按iterator改变循环控制变量的值,回到第二步执行;
⑷ 若条件不满足,则for循环终止。
[示例讲解]
例2.2.3 打印杨辉三角形。
4.foreach语句
foreach语句是在C#中新引入的,C++中没有这个语句。它表示收集一个集合中的各元素,并针对各个元素执行内嵌语句。语句的格式为:
foreach(type identifier in expression) embedded-statement
其中类型(type)和标识符(identifier)用来声明循环变量,表达式(expression)对应集合。每执行一次内嵌语句,循环变量就依次取集合中的一个元素代入其中。在这里,循环变量是一个只读型局部变量,如果试图改变它的值或将它作为一个ref或out类型的参数传递,都将引发编译时错误。
foreach语句中的expression必须是集合类型,如果该集合的元素类型与循环变量类型不一致,则必须有一个显示定义的从集合中的元素类型到循环变量元素类型的显式转换。
[示例讲解]
示例2.2.4假设Prime是一个满足条件的集合类型,它的元素类型为0到1000以内的质数。MyInt是自定义的一个类型,其范围为200到300之间的整数。
3.4. 跳转语句 [10分钟]
引入:
主题:
1.goto语句
goto语句可以直接跳转到程序中用标签指定的另一行(标签是一个标识符,后跟一个冒号)。
goto语句有两个限制:不能跳转到像for循环这样的代码块中,也不能跳出类的范围,不能退出try…catch块后面的finally块(后面会介绍用try…catch…finally处理异常)。
2.break语句
前面简要提到过break语句──在switch语句中使用它退出某个case语句。实际上,break也可以用于退出for、foreach、while或do…while循环,循环结束后,立即执行后面的语句。
3.continue语句
continue语句类似于break,也必须用于for、foreach、while或do…while循环中。它只从循环的当前迭代中退出,然后在循环的下一次迭代开始重新执行,而不是退出循环。注意(与其他跳转语句一样)continue语句不能用于退出finally块,如果continue语句导致退出try块,就会执行相关的finally块,之后进行循环的下一次迭代。
4.return语句
return语句用于退出类的方法,把控制返回方法的调用者,如果方法有返回类型,return语句必须返回这个类型的值,如果方法没有返回类型,该语句就不能用于表达式。
3.5. 程序的结构 [15分钟]
引入:
主题:
1.类
2.命名空间
命名空间提供了一种组织相关类和其他类型的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包括在命名空间定义中。以后,在定义另一个类,在另一个文件中执行相关操作时,就可以在同一个命名空间中包含它,创建一个逻辑组合,告诉其他使用类的开发人员如何使类相关以及如何使用它们。
3.Main方法
C#程序在开始执行时,是从一个方法Main()开始的。这个方法必须是类或结构的静态方法,并且其返回类型必须是int或void:
public static int Main()
或
public static void Main()
4.多个Main方法
在编译C#控制台或Windows应用程序时,默认状态下,编译器会在与上述名称列表相匹配的任何类查找Main方法,并使这个类方法成为程序的入口。如果有多个Main方法,编译器就会返回一个错误。
[示例讲解]
示例2.2.5考虑下面代码。
[示例讲解]
示例2.2.6以下例子是传送给Main方法的字符串数组中迭代,并把每个选项的值写入控制台窗口。
3.6. 编译运行 [10分钟]
引入:
主题:
选项
输 出
/t:exe
控制台应用程序(默认)
/t:library
类库(带有清单)
/t:module
没有清单的组件
/t:winexe
Windows应用程序(没有控制台窗口)
[示例讲解]
示例2.2.7该示例说明了如何编译类库,再在另一个装配件中引用这个库。它包含两个文件,类库和控制台应用程序,该应用程序调用库中的一个类。
4. 小结 [3分钟]
本节主要介绍了以下内容:
1.C#提供的选择语句有if语句和switch语句。
2.在if语句中,每一条else语句与离它最近且没有其它else与之对应的if相搭配。
3.C#的if语句与C++不同,即if后的逻辑表达式必须是布尔类型的。
4.C#中要求switch语句中每个标签项后使用break语句或跳转语句goto,即不允许从一个case自动遍历到其它case,否则编译时将报错。
5.C#允许switch语句中可以把字符串当成常量表达式来使用。
6.while语句有条件地将内嵌语句执行0遍或若干遍,语句的格式为:while (boolean-expression) embedded-statement。
7.do-while语句与while语句不同的是,它将内嵌语句执行一次(至少一次)或若干次。语句的格式为:do embedded-statement while(boolean-expression)。
8.for语句是C#中使用频率最高的循环语句。for语句的格式为:for(initializer;condition;iterator) embedded-statement。
9.foreach语句是在C#中新引入的,它表示收集一个集合中的各元素,并针对各个元素执行内嵌语句。语句的格式为:foreach(type identifier in expression) embedded-statement。
10.goto语句不能跳转到像for循环这样的代码块中,也不能跳出类的范围,不能退出try…catch块后面的finally块。
11.Main方法必须是类或结构的静态方法,并且其返回类型必须是int或void。
12.代码中包含两个类,它们都有一个Main方法。此时可以使用/main选项,其后跟Main方法所属类的全名(还可以包括名称空间),显式告诉编译器把哪个方法作为程序的入口点。
5. 考核点
考核点1:C#的程序结构
6. 作业答案
1:if语句的嵌套使用应注意哪些问题?
答:
2:为什么在C#中取消了switch语句中的遍历功能?如何在C#程序中实现遍历?
答:
3:编写一个程序,对输入的四个整数,求出其中的最大值和最小值。
答:具体见solution-code/T2_2_3.cs
4:试分别使用for、while和do-while语句编写程序,实现求前n个自然数之和。
答:
5:使用/main选项是用于处理什么情况的?
答:显式告诉编译器把哪个方法作为程序的入口点。
7. 扩展练习
8. 学生问题汇总
(注:汇总学生在学习过程中容易出现的问题)
9. 教学后记
(注:在此写上个人在授课过程中所遇到的教案中所没有涉及到的特殊问题及其解决方法或解决方案,也可以总结自己的授课体会,课程体系、教材的不足等。)
授课教师(签名): 授课时间: 授课班级:
8
- -
展开阅读全文