C#基础讲义.doc_第1页
C#基础讲义.doc_第2页
C#基础讲义.doc_第3页
C#基础讲义.doc_第4页
C#基础讲义.doc_第5页
免费预览已结束,剩余139页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C#简介及C#程序的构成一、课堂组织 1介绍自己5303、联系电话QQ:3499627322通过点名初步了解班上学生二、引入课题 1从C语言引入C#,介绍两种语言的关联与区别(1)圣人与巨人的比较:两者不具备可比性,就看你是想继承圣人的衣钵,还是想站在巨人的肩膀上。(2)语法基本上没有区别(3)C面向过程,适合作为系统描述语言,C#-面向对象区别:C#通常不使用指针。可以在一个方法里的任何地方声明变量,不必把声明语句放在方法的顶端。使用一个对象前,不一定要声明它,可以在用到的时候再定义。C#对结构体类型的定义有些不同,它根本不支持联合类型。C#有枚举类型,允许一系列被命名的量(如颜色或一周里的各天)赋值为连续的数值,但语法有些不同。C#没有位域,也就是说,变量至少要占用一个字节的存储空间。C#不支持变长参数列表。必须针对参数数值和类型定义一个方法。然而,C#语句允函数的最后一个参数为可变参数数组。C#引入了代理和索引器的思想,这些在其他流行的语言中是没有的。 C#没有自己的类库,访问的是.net类库2介绍C#与Java的区别与联系C# 的语法要比Java强大,因为C#支持运算符重载和类型安全的枚举,另外,如果需要,还可以在C#代码中选择嵌入式指针和其它不合法的语法,只要把它们放在“非安全”的代码块中即可。C# 可以与其他.NET语言编写的代码进行无缝的交互操作,IT部门不需要标准化C#,就可以在工程中使用它。.NET基类为C#提供了一个统一的、标准的源,以满足常用功能的需要。例如XML、互联网和图形化。为了访问相同的功能,Java程序员有时必须从各种不同的源中获取。三、主要知识点 1C#相关的课程信息(课程标准、考核方式) 2学习C#的基本方法 书中自有黄金屋,书中自有颜如玉 动手实践 上网查找相关资料,注意最新的技术 多看源码,参考别人的成果3C#语言简介 (1)C#的由来 C与C+ 2000年6月26日正式发布。 C#的发展历程时间.NET框架版本C#语言规范2002年.NET 1.0C# 1.02003年4月25日,VS2003.NET 1.1C# 1.22005年10月27日,VS2005.NET 2.0 C# 2.02006年11月6日.NET 3.02007年8月20日C# 3.02007年11月19日,VS2008.NET 3.5C# 3.02010年4月12日,VS2010.NET 4.0C# 4.0(2)C#的特点 简洁易用的语法 自动的资源回收机制 与WEB的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性和兼容性(3)C#的开发前景 C#不适合开发与硬件相关的代码 适合:数据处理系统、信息管理系统 C#与JAVA4C#程序的构成 第一个程序:“Hello World!”控制台应用程序namespace ConsoleApplication1 class Program static void Main(string args) Console.WriteLine(Hello World!); 四、小结及作业布置C#程序的基本输入/输出一、课堂组织 二、内容回顾并引入新课 1回顾:C#语言的由来、特点及C#程序的构成2引入:C#语言的输入/输出与C语言有较大的区别,常用的几种方法要熟悉并掌握。C中的输入输出:scanf()、printf()、putchar()、getchar()、gets()、puts(),在C中都称为“函数”三、主要知识点1System.Console类简介 表示控制台应用程序的标准输入流、输出流和错误流,无法继承此类。控制台是一个操作系统窗口,用户可在其中通过计算机键盘输入文本,并从计算机终端读取文本输出,从而与操作系统或基于文本的控制台应用程序进行交互。例如,在 Windows 中控制台称为命令提示窗口,可以接受 MS-DOS 命令。Console 类对从控制台读取字符并向控制台写入字符的应用程序提供基本支持。 控制台应用程序启动时,操作系统会自动将三个 I/O 流与控制台关联。您的应用程序可以从标准输入流读取用户输入;将正常数据写入到标准输出流;以及将错误数据写入到标准错误输出流。这些流会作为 In、Out 和 Error 属性的值提供给应用程序。Console 类提供用于从控制台读取单个字符或整行的方法;该类还提供若干写入方法,可将值类型的实例、字符数组以及对象集自动转换为格式化或未格式化的字符串,然后将该字符串(可选择是否尾随一个行终止字符串)写入控制台。Console 类还提供一些用以执行以下操作的方法和属性:获取或设置屏幕缓冲区、控制台窗口和光标的大小;更改控制台窗口和光标的位置;移动或清除屏幕缓冲区中的数据;更改前景色和背景色;更改显示在控制台标题栏中的文本;以及播放提示音。2C#语言的输入方法 (1)Read():从标准输入流读取下一个字符,返回int类型 static void Main(string args) int name; name = Console.Read(); Console.Write(name); 在上述例题中重复输入a、0、12、123 看看他们的区别。(2)ReadLine():从标准输入流读取下一行字符,返回string类型static void Main(string args) string name; name = Console.ReadLine(); Console.Write(name); (3)Read()与ReadLine()的区别static void Main(string args) int c = Console.Read(); int d = Console.Read(); Console.WriteLine(c + + + d); 输入:wwstatic void Main(string args) string c = Console.ReadLine(); string d = Console.ReadLine(); Console.WriteLine(c + + + d); 还是输入:ww看看他们的区别。3C#语言的输出方法 (1)Write():将指定的字符串值写入标准输出流static void Main(string args) Console.Write(How); Console.Write(Hello!); 特点:输出后不换行(2)WriteLine():使用指定的格式信息,将指定的对象的文本表示形式写入标准输出流static void Main(string args) Console.WriteLine(How); Console.WriteLine(Hello!); 特点:输出后换行(3)Write()与WriteLine()的区别小知识:C#中的回车换行名称英文描述ASCII值C#表示回车符Carriage Return回到一行开头13r换行符New Line下一行开头位置10n4上机实践 (1)输入三角形的三边长,求三角形的面积。static void Main(string args) int a, b, c; double l = 0, s = 0; a = Convert.ToInt32(Console.ReadLine(); b = Convert.ToInt32(Console.ReadLine(); c = Convert.ToInt32(Console.ReadLine(); l = (a + b + c) / 2.0; s = Math.Sqrt(l*(l-a)*(l-b)*(l-c); Console.WriteLine(面积=0,s); Convert类简介:Convert类是将一个基本数据类型转换为另一个基本数据类型。例如如下的代码就行不通了:stringtext=1412; intid=(int)text;我们把上面的代码稍稍修改就可以达到目的了stringtext=1412; intid=Convert.ToInt32(text); 四、小结及作业布置 输入梯形的上底、下底、高,求梯形的面积。C#开发环境的使用(VS 2008)一、课堂组织 二、内容回顾并引入新课 1回顾:C#语言的输入/输出方法2引入:C#现在常用的环境主要是VS2008,要想学好C#语言,首先还是要把工具先熟悉直至能够熟练的使用。三、主要知识点1.NET框架体系 (1)了解.NET FrameWork的结构.NET Framework是一种新的计算平台,它简化了在高度分布式Internet环境中的应用程序开发,是.NET平台的核心部分。(2)理解.NET Framework 的基本概念(CLR、JIT、CTS、MSIL)公共语言运行时(CLR)公共语言运行时是一个在执行时管理代码的代理,它提供核心服务(如内存管理、线程管理和远程处理),而且还强制实施严格的类型安全以及可确保安全性和可靠性的其他形式的代码准确性。 即时编译器JIT 公共语言运行库为所支持的每种CPU结构都提供了JIT编译器,开发人员可以编写一组可在具有不同结构的计算机上进行JIT编译和运行的MSIL。JIT编译考虑了在执行过程中某些代码可能永远不会被调用的事实。它不是耗费时间和内存将可移植可执行(PE)文件中的所有MSIL转换为本机代码,而是在执行期间根据需要转换MSIL并存储生成的本机代码以供后继的调用使用。 中介语言MSILMSIL包括用于加载、存储和初始化对象以及对对象调用方法的指令,还包括用于算术和逻辑运算、控制流、直接内存访问、异常处理和其他操作的指令。 CTS公共类型系统 (CTS) 通常包含标准数据类型 、包含准则集(3)了解 .NET Framework 命名空间命名空间是.NET避免类名冲突的一种方式,实际上,命名空间就是一组数据类型,但命名空间中的所有数据类型的名称都会自动加上一个该命名空间的名字作为前缀。另外,命名空间是可以嵌套的。命名空间的声明由关键字namespace,跟着一个命名空间名称和主体,最后有一个可选的分号组成。 引入:在编写大程序时,随着代码的增多,就意味着越来越多的名称、命名数据、已命名方法以及已命名类等,很可能发生两个或两个以上的标识符名称冲突,造成项目的失败。为了解决类似的问题,引入“命名空间”的概念。A命名空间的含义 .NET为了避免类名冲突的一种方式。实际上,命名空间就是一组数据类型,但命名空间中的所有数据类型的名称都会自动加上一个该命名空间的名字作为前缀。命名空间可以嵌套。常用命名空间:命名空间说明System.Drawing 处理图形和绘图,包括打印 System.Data 处理数据存取和管理,在定义 ADO.NET 技术中扮演重要角色System.IO 管理对文件和流的同步和异步访问System.Windows 处理基于窗体的窗口的创建System.Reflection 包含从程序集读取元数据的类System.Threading 包含用于多线程编程的类 System.Collections 包含定义各种对象集的接口和类B命名空间的声明:namespace关键字 基本语法:namespace 命名空间的名称 / 该名称空间的所有类都放在这里。C命名空间的引入:using关键字 D实例 菲律浦与索尼namespace Philips class Monitor public void ListModels() Console.WriteLine(供应以下型号的显示器:);Console.WriteLine(15, 17 n); /STAThread /static void Main(string args) / / / / / TODO: 在此处添加代码以启动应用程序 / / /namespace Sony public class Monitor public void ListModelStocks() Console.WriteLine(以下是 Sony 显示器的规格及其库存量:); Console.WriteLine(15=500, 17=2000, 19=3000);static void Main(string args)Philips.Monitor objPhilips = new Philips.Monitor();Monitor objSony = new Monitor();objPhilips.ListModels();objSony.ListModelStocks(); 2VS2008简介 (1)安装VS2008的步骤(2)VS2008集成开发环境(IDE)介绍3开发环境的初步实践 (1)创建项目的步骤(2)创建控制台应用程序 项目一:创建“Hello World”控制台应用程序 static void Main(string args) Console.WriteLine(Hello World!); (3)创建windows应用程序 项目二:创建“Hello World” windows应用程序private void button1_Click(object sender, EventArgs e) textBox1.Text = Hello World!; private void button2_Click(object sender, EventArgs e) textBox1.Text = ; 4上机实践 项目一:第一个应用程序用控制台应用程序实现,显示“这是我的第一个应用程序”项目二:乘法计算器private void button1_Click(object sender, EventArgs e) textBox3.Text =Convert.ToString(Convert.ToInt32(textBox1.Text)*Convert.ToInt32(textBox2.Text); private void button2_Click(object sender, EventArgs e) textBox1.Text = ; textBox2.Text = ; textBox3.Text = ; 5代码编写规范要求(1)标识符的命名规则(2)添加注释(3)要有相应的缩进四、小结及作业布置 通过两个实训项目的评讲,对本节课介绍的VS2008集成环境进行总结,并再次强调.NET框架。数据类型及其转换、常量与变量一、课堂组织 二、内容回顾并引入新课 1回顾:VS2008的使用2引入:代码的编写要涉及到数据类型、常量、变量以及运算符和表达式,对这些内容有了相应的了解后,才能更好的编写代码。三、主要知识点1基本数据类型 bool、byte、sbyte、char、decimal、double、float 、int 、uint、long、ulong、short、ushort、string、object、var几个注意事项:(1) C#中的int是32位,而C中是16位。Short才是16位(2) float 、double和decimal的区别Name CTS Type Description Significant Figures Range (approximate) float System.Single 32-bit single-precision floating point 7 1.5 1045 to 3.4 1038 double System.Double 64-bit double-precision floating point 15/16 5.0 10 324 to 1.7 10308 decimal System.Decimal 128-bit high precision decimal notation 28 1.0 1028 to 7.9 1028 static void Main(string args) float f = 12.3f; Console.WriteLine(f=0,f); double d = 12.3d; Console.WriteLine(d=0,d); decimal dd = 12.3m; Console.WriteLine(dd=0,dd); 注意:在C#中默认的实型为double,float 和 decimal要加相应的后缀。var 是C# 3.0新出的一个定义变量的类型,其实也就是弱化类型的定义。var可代替任何类型,编译器会根据上下文来判断你到底是想用什么类型的。至于什么情况下用到var,我想就是你无法确定自己将用的是什么类型就可以使用var。类似 object,但是效率比object高点使用var定义变量时有以下四个特点:(1)必须在定义时初始化。也就是必须是var s = “abcd”形式,而不能是如下形式:var s;s = “abcd”;(2)一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。(3)var要求是局部变量。(4)使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。Object类型是.NET框架中所有类型的根类型。2数据类型转换 (1)隐式转换从 sbyte 到 short、int、long、float、double 或 decimal。从 byte 到 short、ushort、int、uint、long、ulong、float double 或 decimal。从 short 到 int、long、float、double 或 decimal。从 ushort 到 int、uint、long、ulong、float、double 或 decimal。从 int 到 long、float、double 或 decimal。从 uint 到 long、ulong、float、double 或 decimal。从 long 到 float、double 或 decimal。从 ulong 到 float、double 或 decimal。从 char 到 ushort、int、uint、long、ulong、float、double 或 decimal。从 float 到 double。注:一般是低类型往高类型转换,能够保证值不发生改变。static void Main(string args) char ch = a; int i = ch - 32; Console.WriteLine(i=0,i); (2)显示转换 static void Main(string args) long l = 1000; int i = (int)l; Console.WriteLine(i=0,i); 还可以使用Convert和parse来进行显示转换static void Main(string args) float f = 5.5f; int i = Convert.ToInt32(f); /*如果 value 为两个整数中间的数字,则返回二者中的偶数。但首先是要进行四舍五入*/ Console.WriteLine(i=0,i); int iii = (int)f; /*直接舍掉小数,取整数*/ Console.WriteLine(iii=0,iii); int ii = int.Parse(5.5);/*直接报错:输入字符串的格式不正确. */ Console.WriteLine(ii=0, ii); 3常量 (1)符号常量:const 数据类型 常量名=表达式(2)数值常量(3)字符常量:单引号括起来的字符(4)字符串常量:双引号括起来的字符串(5)布尔常量:true、flase(6)转义字符转义符 字符名 单引号 双引号 反斜杠0 空字符a 感叹号b 退格f 换页n 新行r 回车t 水平 tabv 垂直tab4变量 (1)标志符与关键字命名规则:l 由字母、数字、下划线或汉字组成,且数字不能作为开头l 如果以下划线开头,则必须包括至少一个其他字符l 不能是关键字l 区分大小写static void Main(string args) int 你 = 100; Console.WriteLine(0,你); (2)变量的声明与赋值5练习 数据类型、常量、变量实例四、小结及作业布置 作业:课后习题运算符与表达式一、课堂组织 二、内容回顾并引入新课 1回顾:数据类型及其转换、常量、变量2引入:代码的编写还要涉及到运算符和表达式,对这些内容有了相应的了解后,才能更好的编写代码。三、主要知识点1运算符 (1)算术运算符:+、-、*、/、%、-(取负)static void Main(string args) Console.WriteLine(0,1,5/2,5%2); (2)字符串连接运算符:+-连接两个字符串static void Main(string args) string str1, str2, str3; Console.WriteLine(请输入一个字符串:); str1 = Console.ReadLine(); Console.WriteLine(请再输入一个字符串:); str2 = Console.ReadLine(); str3 = str1 + str2; Console.WriteLine(0+1=2,str1,str2,str3); (3)关系运算符:、=、2); 输出:true(4)逻辑运算符:&、|、!、&、|、&、|:无短路规则注:C#中无法把int 类型转换为boolstatic void Main(string args) Console.WriteLine(0,52&!(1=2); (5)位运算符:按位与&、按位或|、按位异或、按位取反、移位运算符、:左移和右移static void Main(string args) int a = 20; int b = 3; Console.WriteLine(0,ab); (6)赋值运算符:=、+=、-=、*=、/=、%=(7)自增、自减运算符:+、-(8)运算符的优先级算术运算符移位运算符比较运算符位运算符逻辑运算符赋值运算符2表达式及其使用 C#中的表达式只能写在同一条水平线上,有些内容要做相应的转换。常用的数学函数在Math类中。转换成C#中的表达式:static void Main(string args) int a = 5; int b = 20; int c = 4; double x1=0, x2=0; x1 = (-b + Math.Sqrt(Convert.ToDouble(b * b - 4 * a * c) / (2 * a); x2 = (-b - Math.Sqrt(Convert.ToDouble(b * b - 4 * a * c) / (2 * a); Console.WriteLine(x1=0,x2=1,x1,x2); 保留小数后位数:Console.WriteLine(x1=0,x2=1,x1.ToString(.00),x2.ToString(.00);3练习 计算下列表达式的值:(1)2*3%2+2*8/4+3*2(2)4+5/6*7/8%9(3)”Visual”+”C#”+”2008”(4)!(2*5=11)(5)(2=2)&(84+2)(6)!(86)&(48)|(2=4)(7)38(8)5 b ? a : b; Console.WriteLine(0,result); result = a b ? a : c d ? c : d; /注意右结合 Console.WriteLine(0, result); (2)if语句n 单分支例题:输入一个整型成绩,如果超过60分,输出“及格”static void Main(string args) int chengji; chengji = Convert.ToInt32(Console.ReadLine(); if (chengji = 60) Console.WriteLine(及格); n 双分支例题:输入一个整型成绩,如果超过60分,输出“及格”,否则输出“不及格” static void Main(string args) int chengji; chengji = Convert.ToInt32(Console.ReadLine(); if (chengji = 60) Console.WriteLine(及格); else Console.WriteLine(不及格); n if语句嵌套例题:成绩等级 static void Main(string args) int chengji; chengji = Convert.ToInt32(Console.ReadLine(); if (chengji = 90 & chengji = 80) Console.WriteLine(等级B); else if (chengji = 70) Console.WriteLine(等级C); else if (chengji = 60) Console.WriteLine(等级D); else Console.WriteLine(等级E); (3)switch语句:开关语句 static void Main(string args) int chengji; chengji = Convert.ToInt32(Console.ReadLine(); switch(chengji/10) case 10: case 9: Console.WriteLine(等级A); break; case 8: Console.WriteLine(等级B); break; case 7: Console.WriteLine(等级C); break; case 6: Console.WriteLine(等级D); break; default: Console.WriteLine(等级E); break; 注意:在C中可以运行完一个case语句后,运行另一个case语句,而C#不可以。即default语句也要有break 语句。2循环结构 (1)for循环例题

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论