第5章基础类及常用算法.ppt

上传人:本田雅阁 文档编号:2577933 上传时间:2019-04-11 格式:PPT 页数:42 大小:331.01KB
返回 下载 相关 举报
第5章基础类及常用算法.ppt_第1页
第1页 / 共42页
第5章基础类及常用算法.ppt_第2页
第2页 / 共42页
第5章基础类及常用算法.ppt_第3页
第3页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第5章基础类及常用算法.ppt》由会员分享,可在线阅读,更多相关《第5章基础类及常用算法.ppt(42页珍藏版)》请在三一文库上搜索。

1、第5章 基础类及常用算法,唐大仕 http:/,本章内容,1 DotNet基本类库 2 类型转换 3 数学、文字、日期 4 数组、集合、泛型 5 常用算法 6 程序的调试,5.1 DotNet基本类库,统一的编程API:NET Framework 类库,统一的编程API:NET Framework 类库,5.2 基本类型及类型转换,任何事物都是对象,任何事物都是object类的子类 一个函数如果需要object参数,则可以代入任意参数 任何对象都有以下方法 ToString() Equals() GetType() MemberwiseClone()等 常量也是对象 3.ToString()

2、 “Hello”.Length,表达式中的类型转换,当有不同种类的混合运算时: intlongfloatdouble (所有的byte, short, char 等转为int ),强制类型转换,在表达式前面用(类型)来表示 double d=3.14; int a = (int) d; float b = (float)(d+1.5); 注意圆括号,类型转换函数,System.Convert类有以下static方法 ToDouble() ToInt32() ToDateTime(),基本类型,关键字含有等价的类 int 即 System.Int32 含有一些特殊的属性或方法 int.MaxVa

3、lue double.NaN Double.PositiveInfinity Double.IsNaN(),数与字符串的转换,int.Parse(string) double.ToString(); ToString(“#0.00“),5.3 几个常用类,Math类,提供了相关的数学方法 Abs() Sin() Cos() Tan() Round() Exp() Log() Pow() 乘方,Random类,.Next(100) 0到100之间(不含100) .NextDouble() 0到1之间 Random得到的是伪随机数 如果要用更强的随机数,可以使用 System.Security.C

4、ryptography .RNGCryptoServiceProvider,DateTime及TimeSpan,DateTime 是值类型 new DateTime(y,m,d,h,m,s) .Now .ToString( “yyyy-MM-dd HH:mm:ss“) .AddMinutes(5) .Year, .Month, .Day, .Date TimeSpan 两个日期相减,可以得到一个TimeSpan,String类,= + .Length .IndexOf .LastIndexOf .StartsWith, .EndsWith .Substring(idx, len ) 注意第二个

5、参数 .Trim, .TrimEnd, .PadLeft, .Insert, .Remove .Split(;), string.Join,String 及 StringBuilder,String内容不可变 (immutable) StringBuilder内容可变 .Append, .Remove, .Replace .Length, .ToString 在循环体中用 s+=.可能会带来效率问题,5.4 数组与集合,数组,声明 int a; int , b; 分配空间 a = new int5; b = new int4,5;,集合类,ArrayList 相当于动态数组,实现IList H

6、ashtable 相当于键/值的集合, 实现 IDictionary 用进行访问,表示获取、增加、删除、修改 提示:用于查询时,比线性搜索的效率要高,可用于程序的优化 SortedList Stack Queue,使用foreach访问数组及集合,foreach(类型 变量 in xxxx) 其中xxxx必须是实现了实现 IEnumerable 接口或含有 GetEnumerator 方法的类型 IEnumerator GetEnumerator(); IEnumerator Current属性 MoveNext 及 Reset 方法,泛型 Generic,泛型具有更好的类型检查及性能 Sys

7、tem.Collections.Generic名称空间 List 列表 Dictionary, SortedDictionary 字典 Stack, Queue 栈,队列,5.5 常用算法,算法,指令的有限序列 特点: 有穷性 确定性 可行性 输入、输出,遍试,逻辑上:针对所有可能的情况进行判断 形式上: For 中用 If 示例:1.韩信点兵,百鸡问题,鸡兔同笼问题 2.水仙花数 13+53+33=153 3. 完全数 28=1+2+4+7+14 4.百分币 5. 佩尔方程 6.验证猜想:哥德巴赫猜想,迭代,逻辑上:多次使用同一算法 形式上:a = f( a ) 示例:1.求平方根 2. M

8、andelbrot集,Julia集 3. 倍边法求Pi 4. 数字平方和,递归,逻辑上:一个问题化为同样的问题 形式上:自己调用自己 示例:1.求阶乘 2.菲波那契数列 3. Celay树, Koch分形集,小结,遍试: for中用if 迭代: for中n=f(n) 递归: f(n)中用f(n-1),6 程序的调试,错误的种类,代码的错误通常可以分成三大类 语法错误 运行错误 逻辑错误 其中语法错误比较容易排除,也是一种低级的错误。运行错误和逻辑错误需要靠经验、调试工具以及不断的深入代码来排除。,语法错误,此类型的错误通常发生在程序员对语言本身的熟悉度不足 如if之后忘了加上大括号、For语句

9、少了分号。还有比如定义一个变量是Student,但是在引用的时候不小心就变成studnet了。还有一种情况是调用函数错误的语法。 例如调用SubString函数少传了一个参数。使用Visual Studio.NET开发工具,多数的错误会在编辑程序的时候发现。,逻辑错误,逻辑错误(Logic Error)是指程序算法的错误,这种错误程序不会发生任何程序中断或跳出程序,而是一直执行到最后,可能有结果。但是执行结果是不对的。 如计算1到10的总数,结果应该为55,利用下面的算法。,运行时错误,运行时错误(Runtime Error)多数发生在不可预期的异常。 比如打开硬盘上的某个文件时,该文件不存在

10、。向硬盘上写某个文件的时候,硬盘的空间不足。 由于网络阻塞得不到预期的数据等等。也有可能是用户不按正确的操作步骤而造成的错误, 如在做除法的时候除数为零,访问数组的时候,超出了可访问下标的范围,这些都是发生错误的原因。比如下面的代码。,程序调试的基本手段,断点 跟踪 监视,断点,断点 用鼠标单击左边 Ctrl+B 调试|窗口|断点 Ctrl+Alt+F9 断点的属性 条件断点(先设置断点,右击,可编辑条件) 命中次数 清除或禁用断点 清除所有断点 Ctrl+Shift+F9,跟踪,单步执行 逐语句 F11 逐过程 F10 点右键,运行到光标处 跳出函数 Shift+F11 拖动到下一句(跳过中

11、间一些语句),监视,即时监视 快速监视 Ctrl+Alt+Q 自动窗口 调用堆栈 指令 调试|窗口|反汇编,练习,练习基本类的用法 练习常用算法 练习调试 参见forDebug下的示例 while循环的跟踪 数组的跟踪(筛法求素数) 构造方法执行过程的跟踪 一个dotNET BUG的跟踪,一个奇异的bug,int a = 0x79de61c0; /2044617152; a += 0x12345678; /a 应为 0x8c12b838; /-1944930248 if( a 0 ) a = -a; / 注意,如果加上以下语句,则程序出错 /string str1 = a.ToString(); System.Console.WriteLine( a );,/ 一个我发现的在.net fx1.1中的 bug,见http:/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1