C程序设计教学课件作者李林项刚电子课件C程序设计教学课件作者李林项刚电子课件KC09090000004电子

上传人:E**** 文档编号:91241684 上传时间:2019-06-26 格式:PPT 页数:112 大小:686.50KB
返回 下载 相关 举报
C程序设计教学课件作者李林项刚电子课件C程序设计教学课件作者李林项刚电子课件KC09090000004电子_第1页
第1页 / 共112页
C程序设计教学课件作者李林项刚电子课件C程序设计教学课件作者李林项刚电子课件KC09090000004电子_第2页
第2页 / 共112页
C程序设计教学课件作者李林项刚电子课件C程序设计教学课件作者李林项刚电子课件KC09090000004电子_第3页
第3页 / 共112页
C程序设计教学课件作者李林项刚电子课件C程序设计教学课件作者李林项刚电子课件KC09090000004电子_第4页
第4页 / 共112页
C程序设计教学课件作者李林项刚电子课件C程序设计教学课件作者李林项刚电子课件KC09090000004电子_第5页
第5页 / 共112页
点击查看更多>>
资源描述

《C程序设计教学课件作者李林项刚电子课件C程序设计教学课件作者李林项刚电子课件KC09090000004电子》由会员分享,可在线阅读,更多相关《C程序设计教学课件作者李林项刚电子课件C程序设计教学课件作者李林项刚电子课件KC09090000004电子(112页珍藏版)》请在金锄头文库上搜索。

1、单元4 C#进阶编程,知识目标,(1)掌握结构化的异常处理机制; (2)深刻理解委托和事件; (3)掌握枚举和结构; (4)掌握字符串的常用方法; (5)掌握正则表达式的基本用法; (6)掌握常用的集合类和泛型集合类。,能力目标,(1)能够捕获并处理异常; (2)能使用枚举或结构描述数据; (3)能对文本进行较为复杂的处理; (4)能使用正则表达式实现文本的验证; (5)能定义和使用委托类型; (6)能给对象添加事件并能处理事件; (7)能使用集合类存储数据,能编写基于栈、队列、链表、哈希表等数据结构的程序。,教学任务,任务1 异常处理 任务2 枚举和结构 任务3 委托和事件 任务4 字符串与

2、正则表达式 任务5 泛型和集合,单元4 C#进阶编程,任务1 异常处理,引例,给定一个计算器程序,捕捉计算器中的异常,class Program static void Main(string args) int flag = 0; Console.WriteLine(“请输入第一个操作数;“); int num1 = int.Parse(Console.ReadLine(); Console.WriteLine(“请输入第二个操作数:“); int num2 = int.Parse(Console.ReadLine(); int result = 0; Console.WriteLine(“

3、请输入运算符(+、-、*、/):“); string operater = Console.ReadLine(); if (operater = “+“) flag = 0; if (operater = “-“) flag = 1; if (operater = “*“) flag = 2; if (operater = “/“) flag = 3; ,switch (flag) case 0: result = num1 + num2; break; case 1: result = num1 - num2; break; case 2: result = num1 * num2; bre

4、ak; case 3: result = num1 / num2; break; Console.WriteLine(num1 + operater + num2 + “=“ + result); Console.ReadKey(); ,知识储备,知识点1:结构化异常处理,trycatchfinally语句。 知识点2:系统异常类。 知识点3:用户定义异常类。,知识点1:结构化异常处理,在C#中,程序中的运行时错误使用一种称为“异常”的机制在程序中传播。异常由遇到错误的代码引发,由能够更正错误的代码捕获。异常可由.NET Framework公共语言运行库(CLR)或由程序中的代码引发。 异常由

5、从Exception派生的类表示,程序中发生一个异常时,就会生成一个异常类的某种类型的对象。C#中使用try、catch、throw和finally四个关键字来管理的。 1Try/catch块 2Finally块,异常处理代码语法格式,Try 语句; Catch(Exception e) 语句; ,int SafeDivision(int x, int y) try return (x / y); catch (DivideByZeroException dbz) Console.WriteLine(“Division by zero attempted!“); return 0; ,/try

6、catch语句 int a; / 声明变量 try / 试图捕获异常 / 将文本转换为Int32类型的整数 a = Convert.ToInt32(textBox1.Text); catch / 发生异常时的处理 Console.WriteLine(“提示:请将被除数的值输入为数字!“); return; ,异常处理Finally块,Try 语句; Catch(Exception e) 语句; Finally 语句; ,int a; / 声明变量 try / 试图捕获异常 / 将文本转换为Int32类型的整数 a = Convert.ToInt32(textBox1.Text); finall

7、y Console.WriteLine(“感谢你使用本软件“); ,异常处理捕获多个异常,Try 语句; Catch(Exception e) 语句; Catch(Exception e) 语句; ,trycatchfinally语句,try /可能会导致异常的语句 catch (Exception e) /用于处理异常的语句 finally /清理代码 ,int a, b, c; try c = a / b; catch (DivideByZeroException) / 如果发生除数为0的异常 Console.WriteLine(“提示:除数不能为!“); return; finally

8、/ 无论是否发生异常,都正常结束 Console.WriteLine(“感谢使用本软件!“, “程序结束“); ,知识点2:系统异常类,知识点3:用户定义异常类,声明一个异常类的语法格式如下: 引发自定义异常的格式如下: throw(ExceptionName); 引发系统异常类的格式如下: throw new ;,class ExceptionName:Exception ,static void CopyObject(SampleClass original) if (original = null) throw new ArgumentException(“Parameter canno

9、t be null“, “original“); ,引例分析与实现计算器程序异常捕捉,class Program static void Main(string args) int flag = 0; int num1 = 0; int num2 = 0; int result = 0; try Console.WriteLine(“请输入第一个操作数;“); num1 = int.Parse(Console.ReadLine(); Console.WriteLine(“请输入第二个操作数:“); num2 = int.Parse(Console.ReadLine(); catch (Exce

10、ption ex) Console.WriteLine(ex.Message); ,try Console.WriteLine(“请输入运算符(+、-、*、/):“); string operater = Console.ReadLine(); if (operater = “+“) flag = 0; if (operater = “-“) flag = 1; if (operater = “*“) flag = 2; if (operater = “/“) flag = 3; ,switch (flag) case 0: result = num1 + num2; break; case

11、1: result = num1 - num2; break; case 2: result = num1 * num2; break; case 3: result = num1 / num2; break; Console.WriteLine(num1 + operater + num2 + “=“ + result); catch (Exception ex) Console.WriteLine(ex.Message); Console.ReadKey(); ,归纳总结,知识要点: (1)trycatch语句; (2)多重catch语句; (3)嵌套异常结构; (4)系统级异常类的基类E

12、xception,常用系统异常类; (5)用户定义异常类。,拓展实践,对前面完成的猜数字游戏进行合理的异常捕捉。,单元4 C#进阶编程,任务2 枚举和结构,引例,存储和读取一组学生的基本信息。,知识储备,知识点1:使用枚举描述数据。 知识点2:使用结构描述数据。 知识点3:结构与类的区别。,知识点1:使用枚举描述数据,枚举可以理解为一组常数的集合,并限定了常数的范围。 枚举是派生自System.Enum的一种独特的值类型。每种枚举类型均有一种基础类型,此基础类型可以是出char类型以外的任何整型。枚举元素的默认基础类型为int,默认情况第一个枚举元素的值为,后面每个元素一次递增1。,示例:实现

13、学员按学习方向分类,强制指定枚举元素的值。,enum Direction Design, Business, Testing, Game ,enum Direction Design = 1, Business = 2, Testing = 4, Game ,实践任务1,定义枚举,用来描述彩虹的颜色。,知识点2:使用结构描述数据,结构的定义语法中使用struct关键字,格式如下: 结构内容包括,构造函数、常数、字段、方法、属性、索引器、运算符和嵌套类型等。其中属性是无法初始化的,除非声明为const或static。,struct 结构名 /结构内容 ,示例:定义一个结构来解决学生信息的存储,s

14、truct Student public int no; public string name; public string sex; public Direction direction; public int credit; public bool isGraduate; public string Status() if (isGraduate) return “毕业“; else return “在读“; ,【例4-1】描述电影票的数据信息,struct Ticket Name name; DateTime datetime; string hall; string seat; str

15、ing type; string remark; decimal price; enum Name 哈利波特1, 哈利波特2, 哈利波特3, 哈利波特4 ,实践任务2,定义一个游戏角色结构。,知识点3:结构与类的区别,在C#中结构和类大部分是一样的,结构拥有的成员和类也是一致的,二者唯一的差别在与存储位置不同。 类是引用类型,而结构是值类型。引用类型在堆中分配,内存管理由垃圾回收器处理。值类型在堆栈上或以内联方式分配,且在超出范围时释放。通常,值类型的分配和释放开销更小。然而,如果在要求大量的装箱和取消装箱操作的情况下使用,则值类型的表现就不如引用类型。,微软建议在以下情况下才使用结构:,数据在逻辑上表示单个值,与基元类型(整型、双精度型等)类似。 数据的实例大小小于 16 字节。 数据是不可变的。 数据将不必频繁被装箱,引例分析与实现,一个结构可以存储一个学生的信息,当有多个学员信息要存储时,使用多个结构就可以实现,遇到重复的数据类型的时候我们可以使用数组来完成,定义学员数组如下: Student student=new Student3; 数组的初始化,我们使用for循环从键盘读入。,enum Direction Design, Business, Testing, Game

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号