版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第5章 根底类及常用算法唐大仕dstang2000263dstang本章内容n1 DotNet根本类库n2 类型转换n3 数学、文字、日期n4 数组、集合、泛型n5 常用算法n6 程序的调试5.1 DotNet根本类库一致的编程API:NET Framework 类库一致的编程API:NET Framework 类库5.2 根本类型及类型转换任何事物都是对象n任何事物都是object类的子类n一个函数假设需求object参数,那么可以代入恣意参数n任何对象都有以下方法nToString() Equals() GetType()nMemberwiseClone()等n常量也是对象n3.ToSt
2、ring()n“Hello.Lengthn当有不同种类的混合运算时:nintlongfloatdoublen(一切的byte, short, char 等转为int )强迫类型转换n在表达式前面用类型来表示ndouble d=3.14;nint a = (int) d;nfloat b = (float)(d+1.5);n留意圆括号类型转换函数nSystem.Convert类有以下static方法nToDouble()nToInt32()nToDateTime()根本类型n关键字含有等价的类nint 即 System.Int32n含有一些特殊的属性或方法nint.MaxValuendouble
3、.NaNnDouble.PositiveInfinitynDouble.IsNaN()数与字符串的转换nint.Parse(string)ndouble.ToString();nToString(#0.00)5.3 几个常用类Math类n提供了相关的数学方法nAbs()nSin() Cos() Tan()nRound()nExp() Log()nPow() 乘方Random类n.Next(100) 0到100之间(不含100)n.NextDouble() 0到1之间nRandom得到的是伪随机数n假设要用更强的随机数,可以运用nSystem.Security.Cryptographyn.RNG
4、CryptoServiceProviderDateTime及TimeSpannDateTime 是值类型nnew DateTime(y,m,d,h,m,s)n.Nown.ToString( yyyy-MM-dd HH:mm:ss“)n.AddMinutes(5)n.Year, .Month, .Day, .DatenTimeSpann两个日期相减,可以得到一个TimeSpanString类n= + n.Length .IndexOf .LastIndexOfn.StartsWith, .EndsWithn.Substring(idx, len ) 留意第二个参数n.Trim, .TrimEnd
5、, .PadLeft, .Insert, .Removen.Split(;), string.JoinString 及 StringBuildernString内容不可变 immutablenStringBuilder内容可变n.Append, .Remove, .Replacen.Length, .ToStringn在循环体中用 s+=.能够会带来效率问题5.4 数组与集合数组n声明nint a;nint , b;n分配空间na = new int5;nb = new int4,5;集合类nArrayList n相当于动态数组,实现IListnHashtable n相当于键/值的集合, 实现
6、 IDictionaryn用进展访问,表示获取、添加、删除、修正n提示:用于查询时,比线性搜索的效率要高,可用于程序的优化nSortedList Stack Queue运用foreach访问数组及集合nforeach(类型 变量 in xxxx)n其中xxxx必需是实现了实现 IEnumerable 接口或含有 GetEnumerator 方法的类型nIEnumerator GetEnumerator();nIEnumeratornCurrent属性nMoveNext 及 Reset 方法泛型 Genericn泛型具有更好的类型检查及性能nSystem.Collections.Generic称
7、号空间nList 列表nDictionary, SortedDictionary 字典nStack, Queue 栈,队列5.5 常用算法算法n指令的有限序列 n特点:n有穷性 n确定性 n可行性 n输入、输出遍试n逻辑上:针对一切能够的情况进展判别n方式上: For 中用 Ifn例如:1.韩信点兵,百鸡问题,鸡兔同笼问题n 2.水仙花数 13+53+33=153n 3. 完全数 28=1+2+4+7+14n 4.百分币n 5. 佩尔方程 n 6.验证猜测:哥德巴赫猜测迭代n逻辑上:多次运用同一算法n方式上:a = f( a )n例如:1.求平方根n 2. Mandelbrot集,Julia集
8、n 3. 倍边法求Pin 4. 数字平方和 Xn Xn+1 )(/ )(1nnnnxfxfxx递归n逻辑上:一个问题化为同样的问题n方式上:本人调用本人n例如:1.求阶乘n 2.菲波那契数列n 3. Celay树, Koch分形集小结n遍试: for中用ifn迭代: for中n=f(n)n递归: f(n)中用f(n-1)6 程序的调试错误的种类n代码的错误通常可以分成三大类n语法错误n运转错误n逻辑错误n其中语法错误比较容易排除,也是一种低级的错误。运转错误和逻辑错误需求靠阅历、调试工具以及不断的深化代码来排除。语法错误n此类型的错误通常发生在程序员对言语本身的熟习度缺乏n如if之后忘了加上大
9、括号、For语句少了分号。还有比如定义一个变量是Student,但是在援用的时候不小心就变成studnet了。还有一种情况是调用函数错误的语法。n例如调用SubString函数少传了一个参数。运用Visual Studio.NET开发工具,多数的错误解在编辑程序的时候发现。逻辑错误n逻辑错误Logic Error是指程序算法的错误,这种错误程序不会发生任何程序中断或跳出程序,而是不断执行到最后,能够有结果。但是执行结果是不对的。n如计算1到10的总数,结果应该为55,利用下面的算法。运转时错误n运转时错误Runtime Error多数发生在不可预期的异常。n比如翻开硬盘上的某个文件时,该文件不
10、存在。向硬盘上写某个文件的时候,硬盘的空间缺乏。n由于网络阻塞得不到预期的数据等等。也有能够是用户不按正确的操作步骤而呵斥的错误,n如在做除法的时候除数为零,访问数组的时候,超出了可访问下标的范围,这些都是发生错误的缘由。比如下面的代码。程序调试的根本手段n断点n跟踪n监视断点n断点n用鼠标单击左边 Ctrl+Bn调试|窗口|断点 Ctrl+Alt+F9n断点的属性n条件断点(先设置断点,右击,可编辑条件)n命中次数n去除或禁用断点n去除一切断点 Ctrl+Shift+F9跟踪n单步执行n逐语句 F11n逐过程 F10n点右键,运转到光标处n跳出函数 Shift+F11n拖动到下一句(跳过中间一些语句)监视n即时监视n快速监视 Ctrl+Alt+Qn自动窗口n调用堆栈n指令n调试|窗口|反汇编练习n练习根本类的用法n练习常用算法n练习调试n参见forDebug下的例如nwhile循环的跟踪n数组的跟踪筛法求素数n构造方法执行过程的跟踪n一个dotNET BUG的跟踪一个奇特的bug int a = 0 x79de61c0; /2044617152; a += 0 x12345678; /a 应为 0 x8c12b83
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论