清华大学C#程序设计经典教程课件.pptx
- 文档编号:1691606
- 上传时间:2023-05-01
- 格式:PPTX
- 页数:339
- 大小:2.13MB
清华大学C#程序设计经典教程课件.pptx
《清华大学C#程序设计经典教程课件.pptx》由会员分享,可在线阅读,更多相关《清华大学C#程序设计经典教程课件.pptx(339页珍藏版)》请在冰点文库上搜索。
6/28/2019,1,C#程序设计经典教程,第一章C#概述,1.总体要求了解C#语言的特点及其发展了解简单的三种应用程序(控制台应用程序、Windows窗体应用程序和Web应用程序)的结构及其特点初步掌握VisualStudio.Net2010中的操作方法,包括创建项目、编辑程序、生成和调试应用程序的方法2.相关知识点了解计算机软件、计算机语言及分类的知识熟悉Windows系统基础知识及操作3.学习重点C#程序的结构、特点C#程序的建立、编辑、生成和运行等基本上机操作过程,6/28/2019,3,第一章C#概述,主要内容1.1C#简介1.2C#程序的开发环境1.3C#程序入门,6/28/2019,4,1.1C#简介,1.1.1C#语言的发展1.1.2C#语言的特点,返回,6/29/2019,5,1.1.1C#语言的发展,C#(读作CSharp)是一种最新的、面向对象的编程语言。
C#是从C和C+语言演化而来。
目前C#有四个版本,最新的是C#4.0,随VisualStudio.Net2010一起发布。
本书以C#4.0、.NetFramework4.0和VisualStudio.Net2010为范本,所有案例均在VisualStudio.Net2010中经过调试运行无误的。
6/29/2019,6,1.1.2C#语言的特点,C#是一种精确、简单、类型安全、面向对象的语言。
C#具有生成持久系统级组件的能力,提供COM+或其他技术平台支持以集成现有代码,提供垃圾回收和类型安全以实现应用程序可靠性,提供内部代码信任机制以保证应用程序的安全性。
C#利用.NetFramework的通用类型系统能够与其他程序设计语言交互操作。
C#应用程序能跨语言、跨平台互相调用。
C#支持MSMQ、COM+组件服务、WCF服务和.NETFramework,实现了组件之间的跨互联网的调用。
C#语言允许自定义数据类型,以扩展元数据。
C#增强了开发者的效率,同时也致力于消除编程中可能导致严重结果的错误。
C#使C/C+程序员可以快速进行网络开发,同时也保持了开发者所需要的强大性和灵活性。
6/29/2019,7,1.2C#程序的开发环境,VisualStudio.Net的基本操作解决方案和项目文件的组织结构VisualStudio.Net的帮助,返回,6/29/2019,8,1.2.1VisualStudio.Net的基本操作,1.应用程序项目的创建与打开新建项目打开项目2.应用程序项目的设计与编辑3.应用程序项目的调试与生成操作演示,6/29/2019,9,1.2.2解决方案和项目文件的组织结构,6/29/2019,10,1.2.3VisualStudio.Net的帮助,VS2010的帮助系统是基于Web的,有两种工作模式,包括本地模式和联机模式在VS窗口中选择“帮助-管理帮助设置”菜单命令,可切换帮助系统的工作模式。
操作演示,返回,6/29/2019,11,1.3C#程序入门,1.3.1一个简单的C#控制台应用程序1.3.2一个简单的Win32应用程序1.3.3一个具有输入功能的Win32应用程序1.3.4一个简单的WEB应用程序1.3.5C#程序的特点,返回,6/29/2019,12,1.3.1一个简单的C#控制台应用程序,实例1-1:
设计一个C#控制台应用程序,效果如下图:
操作演示代码分析,
(1)C#程序必须引入命名空间:
usingSystem;System命名空间是.Net最基本的命名空间,缺少System命名空间,源程序代码将无法编译。
(2)使用“/”或“/*/”来添加代码注释。
注意,程序的注释在编译将被自动忽略。
使用namespace定义命名空间。
定义类:
使用class标识类的定义。
C#控制台应用程序必须包含一个Main方法。
默认的格式为:
staticvoidMain(stringargs)编写程序语句:
一个C#程序通常包含若干条语句,每一个语句必须以英文字符分号“;”结尾。
6/29/2019,1.3.2一个简单的Win32应用程序,操作演示代码分析,实例1-2:
设计一个C#Windows窗体应用程序,效果如下图所示设计Windows窗体应用程序时,必须引用命名空间System.Windows.Forms和System.Drawing。
Windows应用程序也是从Main方法开始执行的。
VS2010会在program.cs文件中自动生,成维护Main方法,故不需要在Main方法中添加任何代码。
Windows应用程序采用事件驱动编程思想,只有当事件发生时系统才能可能调用相应的事件方法。
例如,窗体的Load事件对应事件方法HelloFrm_Load。
事件方法根据需要编程。
13,6/29/2019,14,1.3.3一个具有输入功能的Win32应用程序,实例1-3:
设计一个C#Windows应用程序,效果,如下图所示,操作演示代码分析,控件组成了程序运行时的操作界面,可以在程序运行时才添加,也可以在运行前完成所有设计。
最常用的控件有:
Label控件、TextBox控件和Button控件。
其中,Label控件(即标签控件),一般用来显示提示信息或程序的运行结果;TextBox控件用来接收用户的键盘输入;Button控件,用于响应鼠标单击操作,触发单击事件并通知系统调用特定的方法。
根据需要编写事件方法,6/29/2019,15,1.3.4一个简单的WEB应用程序,操作演示代码分析,实例1-4:
设计一个C#Web应用程序,效果如图所示。
一个Web应用程序必须引用命名空间System.Web、System.Web.UI、System.Web.UI.WebControls。
C#Web应用程序不需要Main方法。
C#Web应用程序也采用事件驱动编程思想,只有当事件发生时系统才执行事件方法。
例如,Web窗体的Load事件对应Page_Load事件方法。
根据需要编写事件方法。
6/29/2019,16,五、C#程序的特点,必须借助NetFramework类库实现必须定义类类的代码主要由方法组成C#程序中的方法由方法头部、方法体组成。
C#程序的语句C#程序的输入与输出操作C#程序的注释返回,6/29/2019,17,作业,书面作业(见本章教材)上机实验(见本章教材),6/29/2019,18,ClassOver,Thankyou!
第二章C#程序设计基础,总体要求掌握常量和变量概念,掌握变量的声明、初始化方法掌握C#的常用的简单数据类型,了解枚举型、结构型,理解数据类型转换掌握C#的运算符和表达式的概念,理解运算符运算规则,理解表达式的使用方法理解数组和字符串的概念,掌握一维数组和字符串的使用方法,了解多维数组、数组型数组的应用相关知识点了解内存及其地址分配的相关知识了解计算机中的数制(二进制、八进制、十六进制等)与字符编码(ASICC码、GB2312-80等、Unicode码等)的相关知识,第二章C#程序设计基础,学习重点C#语言中的常量、变量、数据类型、运算符、表达式等的概念C#语言中一维数组和字符串的概念及其使用方法学习难点枚举型、结构型数据类型转换运算符的运算规则多维数组、数组型数组的概念,6/29/2019,21,第二章C#程序设计基础,主要内容2.1常量与变量2.2C#的数据类型2.3运算符与表达式2.4数组和字符串,6/29/2019,22,2.1常量与变量,2.1.1常量2.1.2变量,返回,6/29/2019,23,2.1.1常量,在程序运行过程中,其值始终不变的量称之为常量。
整型常量整型常量又分为:
有符号的整型常量、无符号整型常量、长整型常量。
无符号整型常量在书写时添加u或U标志。
长整型常量在书写时添加l或L标记。
浮点型常量浮点型常量又分为:
单精度浮点型常量和双精度型常量。
单精度浮点型常量在书写时添加f或F标记,而双精度型常量添加d或D标记。
6/29/2019,24,2.1.1常量,小数型常量小数型常量的后面必须添加m或M标记,字符型常量字符型常量是一个标准的Unicode字符,使用两个英文单引号来标记。
C#语言还允许使用一种特殊形式的字符常量,即以反斜杠符()开头,后跟字符的字符序列,称之为转义字符常量,用它来表示控制及不可见的字符。
25,2.1.1常量,常用的转义字符,6/29/2019,26,2.1.1常量,布尔型常量布尔型常量只有两个,一个是true,表示逻辑真;另一个false,表示逻辑假。
字符串常量字符串常量表示若干个Unicode字符组成的字符序列,使用两个英文双引号来标记,,6/29/2019,27,2.1.2变量,变量的概念在程序运行过程中,其值可以被改变的量称之为变量。
变量名每个变量都必须有一个名字,即变量名。
变量命名应遵循标识符的命名规则,如必须以字母、下划线(_)和汉字打头,可包含字母、数字、下划线和汉字,不能包含空格,不能使用C#保留字等。
变量值程序运行时,系统自动为变量分配内存单元,用来存储变量的值。
在程序中,通过变量名来引用变量的值。
6/29/2019,28,2.1.2变量,变量的定义使用变量之前必须先指定变量名、变量值的数据类型,该操作称为变量的定义。
其一般形式为:
类型标识符变量名1,变量名2,;,inta,b,c;/a,b,c为整型变量在定义变量时,应注意以下几点:
在多个相同类型的变量时,各变量名之间用逗号间隔,类型标识符与变量名之间至少用一个空格间隔;最后一个变量名之后必须以“;”号结尾;变量定义必须放在变量使用之前;,6/29/2019,29,2.1.2变量,变量的初始化变量初始化就是指定变量的初始值。
变量的初始化有两种形式。
一种是在定义变量的同时实始化,另一种是先定义变量再初始化。
前者的一般形式为:
类型标识符变量名1初值1,变量名2初值2,;例如:
inta=12,b=-24,c=10;注意,C#允许在定义变量时部分初始化。
例如:
floatf11.25,f23.6,f3;后者允许为多个变量设置不同的初始值,也允许为多个变量设置相同的初始值。
例如,inta,b,c;a=1;b=2;c=3;,6/29/2019,30,2.1.2变量,实例2-1创建一个Windows应用程序,展示变量的使用方法,包括定义、初始化和引用。
6/29/2019,31,2.2C#的数据类型,简单类型枚举型enum结构型struct数据类型转换,返回,2.2.1简单类型,C#中简单类型,6/29/2019,33,2.2.1简单类型,整数型,6/29/2019,34,2.2.1简单类型,浮点型浮点型一般用来表示一个有确定值的小数,float型:
取值范围在1.5e45到3.4e38,精度为7位double型:
取值范围在5.0e324到1.7e308,精度为15到16位小数型decimaldecimal型:
取值范围在1.010e28至7.910e28,精度为28到29位。
布尔型bool布尔型用来表示逻辑真或逻辑假,因此只有两种取值:
true或false,,6/29/2019,35,2.2.2枚举型enum,枚举型实质就是使用符号来表示的一组相互关联的数据。
enumMonthsJan,Feb,Mar,Apr,May,Jun,Jul,Augt,Sep,Oct,Nov,Dec。
枚举元素的数据值是确定的,一旦声明就不能在程序的运行过程中更改;枚举元素的个数是有限的,同样一旦声明就不能在程序的运行过程中增减;默认情况下,枚举元素的值是一个整数,第一个枚举数的值为0,后面每个枚举数的值依次递增1;如果需要改变默认的规则,则重写枚举元素的值即可,6/29/2019,36,2.2.2枚举型enum,【实例2-2】创建一个Windows应用程序,展现枚举型的使用方法,6/29/2019,37,2.2.3结构型struct,结构型的定义C#的结构型必须使用struct来标记。
C#的结构型的成员包含数据成员、方法成员等。
其中,数据成员表示结构的数据项,方法成员表示对数据项的操作。
一个完整的结构体示例如下:
structStudentpublicintno;publicstringname;publiccharsex;publicintscore;,;,6/29/2019,38,2.2.3结构型struct,结构型的使用自定义的结构型与简单类型(如int)一样,可用来定义变量。
一旦定义了结构型变量,就可以通过该变量来引用其任意成员。
引用结构型的成员的格式如下:
结构型变量.结构型成员,Students;s.no=10001;,/定义结构型变量s/为s的成员变量no赋值,s.name=许恒;/为s的成员变量name赋值,6/29/2019,39,2.2.2枚举型enum,【实例2-3】创建一个Windows应用程序,展示结构型的使用方法,6/29/2019,40,2.2.4数据类型转换,隐式转换隐式转换一般在不同类型的数据进行混合运算时候发生,当编译器能判断出转换的类型,而且转换不会带来精度的损失时,C#语言编译器会自动进行隐式转换。
隐式转换遵循以下规则:
如果参与运算的数据类型不相同,则先转换成同一类型,然后进行运算;转换时按数据长度增加的方向进行,以保证精度不降低,例如int型和long型运算时,先把int数据转成long型后再进行运算;所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算;byte型和short型参与运算时,必须先转换成int型;char可以隐式转换为ushort、int、uint、long、ulong、float、double或decimal,但是不存在从其他类型到char类型的隐式转换。
6/29/2019,41,2.2.4数据类型转换,显示转换显示转换就是需要明确要求编译器完成的转换,也称强制类型转换,在转换时,需要用户明确指定转换的类型,强制类型转换的一般形式为:
(类型说明符)(待转换的数据)其含义是:
把特转换的数据的类型强制转换成类型说明符所表示的类型。
显示转换有可能造成精度损失.,6/29/2019,42,2.2.4数据类型转换,【注意】在使用强制转换时应注意以下问题:
待转换的数据不是单个变量时,类型说明符和特转换的数据都必须加圆括号。
无论是强制转换或是隐式转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。
C#允许用System.Convert类提供的类型转换方法来转换数据类型,常用的转换方法有:
ToBoolean、ToByte、ToChar、ToInt32、ToSingle、ToString、ToDateTime等,分别表示将指定数据转换为布尔值、字节数、字符编码、整型数、单精度数、字符串、日期等,6/29/2019,43,2.3运算符与表达式,算术运算符与表达式赋值运算符与表达式关系运算符与表达式逻辑运算符与表达式,返回,6/29/2019,44,2.3.1算术运算符与表达式,算术运算符用于数值运算。
C#算术运算符包括+(加)、-(减)、*(乘)、/(除)、%(求余数)、+(自增)、-(自减)共七种。
+、-、*、/、%是二目运算符,两个整数相除的结果为整数,6/29/2019,45,2.3.1算术运算符与表达式,+、-两种运算符都是单目运算符,具有右结合性(也就是优先同运算符右边的变量结合,使该变量的值增加1或减小1),而且它们的优先级比其他算术运算符高。
当+或-运算符置于变量的左边时,称之为前置运算,表示先进行自增或自减运算再使用变量的值当+或-运算符置于变量的右边时,称之为后置运算,表示先引用变量的值再自增或自减运算。
6/29/2019,46,2.3.1算术运算符与表达式,【实例2-4】算术运算符的应用测试,6/29/2019,47,2.3.2赋值运算符与表达式,简单赋值运算符其一般形式为:
变量=表达式其功能是先计算表达式的值再赋给左边的变量。
赋值运算符具有右结合性。
【注意】在使用赋值表达式时,应注意以下两点:
在赋值运算中,如果赋值号两边的数据类型不同,则系统将自动先将赋值号右边的类型将转换为左边的类型再赋值;在赋值运算中,不能把右边数据长度更大的数值类型隐式转换并赋值给左边数据长度更小的数值类型。
6/29/2019,48,2.3.2赋值运算符与表达式,【实例2-5】赋值运算符及隐式数据类型转换应用测试,6/29/2019,49,2.3.3关系运算符与表达式,关系运算符用来对两个操作数比较,以判断两个操作数之间的关系。
C#的关系运算符有=、!
=、=,分别是相等、不等、小于、大于、小于等于、大于等于运算。
关系运算符的优先级低于算术运算符。
由关系运算符组成的表达式称为关系表达式。
关系表达式的运算结果只能是布尔型值,要么是true,要么是false。
6/29/2019,50,2.3.4逻辑运算符与表达式,C#的逻辑运算符包括!
、&或&、|或|、,分别是逻辑“非”运算、逻辑“与”运算、逻辑“或”运算、逻辑“异或”运算。
逻辑运算符的优先级低于关系运算符的优先级,但高于赋值运算符的优先级。
由逻辑运算符组成的表达式称为逻辑表达式。
逻辑表达式的运算结果只能是布尔型值,要么是true,要么是false。
逻辑非运算符“!
”是,表示对某个布尔型操作数的值求反,即当操作数为false时运算符返回true。
6/29/2019,51,2.3.4逻辑运算符与表达式,逻辑与运算符“&”或“&”表示对两个布尔型操作数进行与运算,当且仅当两个操作数均为true时,结果才为true。
运算符“&”与运算符“&”的主要区别是,当第一个操作数为false时,前者不再计算第二个操作数的值。
逻辑或运算符“|”或“|”表示对两个布尔型操作数进行或运算,当两个操作数中只要有一个操作数为true时,结果就为true。
运算符“|”与运算符“|”的主要区别是,当第一个操作数为true时,前者不再计算第二个操作数的值。
逻辑异或运算符“”表示对两个布尔型操作数进行异或运算,当且仅当只有一个操作数为true时,结果才为true,注意或运算与异或运算的区别。
6/29/2019,52,2.3.4逻辑运算符与表达式,【实例2-6】创建一个Windows应用程序,测试关系运算符与逻辑运算符,6/29/2019,53,2.4数组和字符串,一维数组多维数组数组型的数组字符串string,返回,6/29/2019,54,2.4.1一维数组,数组是一种由若干个变量组成的集合,数组中包含的变量称为数组元素,它们具有相同的类型。
数组元素可以是任何类型,但没有名称,只能通过索引(又称下标,表示位置编号)来访问。
数组有一个“秩”,它表示和每个数组元素关联的索引的个数。
数组的秩又称为数组的维度。
“秩”为1的数组称为一维数组,“秩”大于1的数组称为多维数组。
一维数组的元素个数称为一维数组的长度。
一维数组长度为0时,称之为空数组。
一维数组的索引从零开始,具有n个元素的一维数组的索引是从0到n-1。
6/29/2019,55,2.4.1一维数组,一维数组的声明和创建声明和创建一维数组的一般形式如下:
数组类型数组名=new数组类型数组长度一维数组也可以先声明后创建。
一维数组的初始化如果在声明和创建数组时没有初始化数组,则数组元素将自动初始化为该数组类型的默认初始值。
初始化数组有多种方式:
一是在创建数组时初始化,二是先声明后初始化,三是先创建后初始化。
6/29/2019,56,2.4.1一维数组,一维数组的初始化创建时初始化数组类型数组名=new数组类型数组长度初始值列表其中,数组长度可省略。
如果省略数组长度,系统将根据初始值的个数来确定一维数组的长度。
如果指定了数组长度,则C#要求初始值的个数必须和数组长度相同,初始值之间以逗号作间隔。
创建时初始化一组数组可采用如下简写形式:
数组类型数组名=初始值列表,6/29/2019,57,2.4.1一维数组,一维数组的初始化先声明后初始化C#允许先声明一维数组,然后再初始化各数组元素。
其一般形式如下:
数组类型数组名;数组名=new数组类型数组长度初始值列表;先创建后初始化C#允许先声明和创建一维数组,然后逐个初始化数组元素。
其一般形式如下:
数组类型数组名=new数组类型数组长度;数组元素=值;,6/29/2019,58,2.4.1一维数组,一维数组的使用数组是若干个数组元素组成的。
每一个数组元素相当于一个普通的变量,可以更改其值,也可以引用其值。
使用数组元素的一般形式如下:
数组名索引一维数组的操作C#的数组类型是从抽象基类型System.Array派生的。
Array类的Length属性返回数组长度。
Array类的方法成员:
Clear、Copy、Sort、Reverse、IndexOf、LastIndexOf、Resize等,分别用于清除数组元素的值、复制数组、对数组排序、反转数组元素的顺序、从左至右查找数组元素、从右到左查找数组元素、更改数组长度等。
Sort、Reverse、IndexOf、LastIndexOf、Resize只能针对一维数组进行操作。
6/29/2019,59,2.4.1一维数组,【实例2-7】数组及其应用演示,6/29/2019,60,2.4.2多维数组,多维数组的声明和创建声明和创建多维数组一般形式如下:
数组类型逗号列表数组名=new数组类型维度长度列表逗号列表的逗号个数加1就是维度数,即如果逗号列表为一个逗号,则称为二维数组;如果为两个逗号,则称为三维数组,依此类推。
维度长度列表中的每个数字定义维度的长度,数字之间以逗号作间隔。
6/29/2019,61,2.4.2多维数组,多维数组的初始化以维度为单位组织初始化值,同一维度的初始值放在一对花括号之中。
可以省略维度长度列表,系统能够自动计算维度和维度的长度。
但注意,逗号不能省略。
初始化多维数组可以使用简写格式。
但如果先声明多维数组再初始化,就不能采用简写格式。
多维数组不允许部分初始化。
多维数组的使用数组名索引列表,6/29/2019,62,2.4.3数组型的数组,数组型的数组是一种由若干个数组的构成数组。
数组型数组的声明和创建声明数组型数组的格式如下:
数组类型维度子数组的维度数组名=new数组类型维度长度子数组的维度其中,省略维度为一维数组,省略子数组的维度表示子数组为一维数组。
6/29/2019,63,2.4.3数组型的数组,数组型数组的初始化数组型数组同样有多种初始化方式,包括创建时初始化、先声明后初始化等。
其中,创建时初始化可省略维度长度引用子数组的元素对于数组型的数组来说,可按以下格式引用子数组的每一个元素:
数组名索引列表索引列表,6/29/2019,64,2.4.3数组型的数组,【实例2-8】多维数组、数组型的数组的应用展示,6/29/201965,2.4.4字符串string,C#字符串是一个由若干个Unicode字符的组成字符数组。
字符串常量使用双引号来标记,字符串变量使用string关键字来声明。
两个字符串可以通过加号运算符(+)来连接,C#字符串是不可变的,也就是说字符串一旦创建,其内容就不能更改。
C#允许使用关系运算符=、!
=来比较两个字符串各对应的字符是否相同。
C#的字符串可以看成一个字符数组。
因此,C#允许通过索引来提取字符串中的字符。
6/29/2019,66,2.4.4字符串string,C#的string是System.String的别名。
在.NetFramework之中,System.String提
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 清华大学 C# 程序设计 经典 教程 课件