第2章C#基础知识.ppt

上传人:本田雅阁 文档编号:3423391 上传时间:2019-08-24 格式:PPT 页数:61 大小:955.04KB
返回 下载 相关 举报
第2章C#基础知识.ppt_第1页
第1页 / 共61页
第2章C#基础知识.ppt_第2页
第2页 / 共61页
第2章C#基础知识.ppt_第3页
第3页 / 共61页
第2章C#基础知识.ppt_第4页
第4页 / 共61页
第2章C#基础知识.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《第2章C#基础知识.ppt》由会员分享,可在线阅读,更多相关《第2章C#基础知识.ppt(61页珍藏版)》请在三一文库上搜索。

1、1,回顾,.NET Framework由 .NET Framework 类库和公共语言运行时两个主要组件组成 。 Visual Studio .NET 2005 是用于创建、编写、运行和调试程序的集成开发环境。 C#程序组成:一个方案(sln)由若干项目(csproj)组成,一个项目由窗体、类模块、资源等文件(cs)组成 应用程序创建步骤 书写规范,C# 基础知识,第二章,3,目标,使用C# 中的基本数据类型 在C#中定义变量和常量 理解装箱和拆箱的概念和数据类型转换 使用C#中的运算符,选择结构和循环结构 定义和使用数组,了解结构和枚举 了解C#中的预处理指令 理解C#中常用的字符串处理方法

2、,4,2.1 数据类型,C#的数据类型可分为两大类: 1)值类型(简单类型、结构类型和枚举类型) 简单类型包括整型、浮点型、字符型、布尔型 2)引用类型(数组、字符串、类、委托和接口) 值类型和引用类型有区别:值类型变量直接存储它的数据内容,而引用类型不存储实际数据内容,是存储对实际数据的引用。,5,C#的数据类型结构图,6,2.1.1 值类型 1、整数类型:,7,2、浮点型,浮点类型的数据包含两种:单精度浮点型(float)和双精度浮点型(double),其区别在于取值范围和精度的不同。 float类型是32位宽,精度为7 位数, 取值范围在+ 1.510-45 3.41038之间。 如fl

3、oat x=123.34f double类型是64位宽,精度为1516位数, 取值范围为+5.010-324 1.710308之间。 例如:double y=12.56 常量无后缀时为double型,8,3、小数类型(decimal),小数类型(decimal)占用16个字节(128位),主要为了满足需要高精度的财务和金融计算机领域。 小数类型数据的取值范围和精度如下: ,精度为29位数 取值范围在+ 1.010-28 7.91028之间。 注意:小数类型数据的后面必须跟m或者M后缀来表示它是decimal类型的,如3.14m、0.28m等,否则就会被解释成标准的浮点类型数据,导致数据类型不匹

4、配。 如:22.1m 代表decimal类型的数值22.1,9,4、字符型和布尔型,1)布尔类型bool:采用true和false两个值来表示布尔逻辑量 。 例: bool a1=true; bool a2=(x0 ,10,为了表示单引号和反斜杠等特殊的字符常数,C#提供了转义符。,C#常用的转义符,C#常用的转义符,11,5、日期时间型(DateTime),DateTime值类型表示值范围在公元0001 年 1 月 1 日午夜 12:00:00 到公元 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间 ,时间值以 100 毫微秒为单位。 声明一个日期型变量birth

5、DateTime birth = DateTime.Parse(“1989/12/12“); DateTime.Now /获取当前系统日期和时间 birth.Year /获取birth日期变量的年份 birth. Month /获取birth日期变量的月份 birth. Day /获取birth日期变量为该月中的第几天。 birth. DayOfWeek 获取birth日期变量表示的日期是星期几。 Hour , Minute, Second获取小时、分钟、秒部分。,12,2.2.2 引用类型,引用类型包括数组、字符串、类、委托和接口 1. object类 object类是系统提供的基类型,是所

6、有类型的基类,C#中所有的类型都直接或间接派生于对象类型。 对于任一个object变量,均可以赋以任何类型的值。 double d=3.14; object obj1; obj1=d; obj1=k; 对于object类型的变量,声明必须使用object关键字,13,2.string类,一个字符串是被双引号包含的一系列字符。 string类是专门用于对字符串进行操作的。 如: string str1=中国,; string str2=你好!; string str3=str1+str2; char c=str30; /取出str3的第一个字符,即“中”字。 C#支持两种形式的字符串常数:常规字

7、符串常数和逐字字符串常数,14,如: “this is a test” “C#程序设计教程” 例: using System; class StringDemo public static void Main( ) string str1=“A string”; string str2=“Another string.“; Console.WriteLine(“0n1”,str1,str2); ,(1)常规字符串常数,15,(2)逐字字符串常数,逐字字符串常数以开头,后跟一对双引号,在双引号中放入字符。如: “电子高专” “This is a book.” 逐字字符串常数同常规字符串常数的区别

8、: 在逐字字符串常数的双引号中,每个字符都代表其最原始的意义,在逐字字符串常数中没有转义字符。 注意:如果要包含双引号(),就必须在一行中使用两个双引号()。,16,string str1=“hello t world“; /hello world string str2= “hello t world“; /hello t world string str3=“He said“ Hello “ to you“; /Tom said “Hello“ to you string str4=“He said “Hello“ to you“; /Tom said “Hello“ to you 练习:

9、看以下三个语句有什么区别,哪个是错误的 string path1= “ c:windowssystemreadme.txt“; string path1= “ c:windowssystemreadme.txt“; string path1=“ c:windowssystemreadme.txt “;,举例,17,数据类型在一定条件下是可以相互转换的。 C#允许使用两种转换的方式:隐式转换和显式转换。 1. 隐式转换 隐式转换是系统默认的、不需要加以声明就可以进行的转换。 隐式数据转换的使用方法如下: int i=518; /a为整型数据 long b=i; /b为长整型数据 float f=

10、i; /f为单精度浮点型数据,2.1.3 类型转换,18,显式转换又叫强制类型转换,显式转换要明确指定转换类型。 显式转换格式: (类型标识符)表达式 意义为:将表达式的值的类型转换为类型标识符的类型。比如: (char)65 /把int类型的65转换成char类型 注意:(1)显式转换可能会导致错误。 (2)对于将float,double, decimal转换为整数,将通过舍入得到最接近的整型值,如果这个整型值超出目标域,则出现转换异常。 比如: (int)6.28m / 转换的结果为6 (int) 3e25f /将产生溢出错误,2显式转换,19,3. 方法转换,1)System.Conve

11、rt类提供了一整套转换方法。 (1)将string值转换为boolean值。 string MyString=“true“; bool MyBool=Convert.ToBoolean(MyString); /MyBool=true (2)将数字字符的字符串转换为Int32值。 string newString=“123456789“; int MyInt=Convert.ToInt32(newString); /MyInt=123456789 (3)将Int64数据转换成Int32数据。 Int64 MyInt64=123456789 int MyInt=Convert.ToInt32(My

12、Int64) /MyInt=123456789 (4)进行四舍五入的转换。 double MyDouble=42.72; int MyInt=Convert.ToInt32(MyDouble); /MyInt=43,20,2)ToString方法和Parse方法,ToString()方法:将其他数据类型转换为字符串型。 格式:变量名称.ToString() 例:int x=1234; string y=x.ToString(); Parse()方法:将特定格式的字符串转换为数值。 格式:数据类型名称.Parse(字符串表达式) 说明:字符串表达式必须符合数据类型名称格式 例:string x=

13、“1234”; int y=int.Parse(x),21,4.装箱和拆箱,装箱和拆箱:值类型和引用类型之间的转换。 装箱是将值类型转换为引用类型 拆箱是将引用类型转换为值类型 利用装箱和拆箱功能,可通过允许值类型的任何值与 Object 类型的值相互转换,将值类型与引用类型链接起来,22,1)装箱,装箱:装箱转换是指将一个值类型的数据隐式地转换成一个对象类型(object)的数据。 把一个值类型的值装箱,也就是创建一个object实例并将这个值复制给这个object实例。 例如: int x = 123; object obj1=x; / 装箱操作 也可用显式的方法进行装箱操作: objec

14、t obj=(object)a;,23,2)拆箱,和装箱相反,拆箱转换是指将一个对象类型的数据显式地转换成一个值类型数据。 拆箱的过程分为两步:首先,检查这个对象实例,看它是不是给定的值类型的装箱值,然后将该值从实例中复制出来,送给值类型的变量。 例如: int k=10; object obj=k;/装箱 int j=(int)obj; /拆箱 注:被装过箱的对象才能被拆箱,24,using System class UnboxingDemo static void Main( ) int k=228; object obj=k; /装箱转换 int j=(int ) obj; /拆箱转换

15、k=300; Console.WriteLine(“k=0tobj=1tj=2“, k, obj, j); ,练习2:分析运行结果。,25,2.3变量和常量,定义语法: 访问修饰符 数据类型 变量名,Public,Private(默认值),Protected,int,string,float,变量用于存储特定数据类型的值,变量赋值: 变量名=表达式;,26,标识符,标识符(identifier)是一串字符,在程序中作为各种标识,用来代表一个名字。并不是任何一串字符都可以作为C#的标识符。 C#的标识符有如下规则: (1)一个合法的C#标识符,是以字母或者下划线开头、其后可以跟任意个字母、数字或

16、者下划线 。 (2) C#的标识符严格区分大小写,即使两个标识符的区别仅仅字母的大小写不同,也认为是两完全不同的标识符。 (3) 关键字也可以作为标识符,只要在关键字前加上前缀。 void static,27,举例:,static void Main(string args) / 声明布尔型、字符串型、整型、短整型和浮点型变量 bool t = false; short n1 = 30; int n2 = 1200; string str = “jeny“; float n3 = 23.1f; / 显示变量值 Console.WriteLine (“布尔值 = “ + t); Console.

17、WriteLine (“短整型值 = “ + n1); Console.WriteLine (“整型值 = “ + n2); Console.WriteLine (“字符串值 = “ + str); Console.WriteLine (“浮点值 = “ + n3); ,变量中存储的值取决于该变量的类型,28,常量,常量用于在整个程序中将数据保持同一个值 符号常量声明语法: const 数据类型 常量名 = 常量值;,static void Main(string args) const float PI = 3.1415169F; / PI常量PI const float GRAVITY =

18、 980; / 由地球引力引起的加速度常量,单位为 cm/s*s int length = 60; / 钟摆的长度 /*计算钟摆的周期 */ double period = 0; period = 2 * PI * Math.Sqrt(length / GRAVITY ); / 钟摆周期的计算公式 Console.WriteLine (“钟摆的周期为 0 秒“, period); ,29,2.4运算符和表达式,运算符和表达式,Result,=,number,*,10,变量,变量,常量,操作数,表达式,操作数和运算符的组合,运算符,30,1.算术运算符,31,一元运算符 (+/-),Variab

19、le +; 相当于 Variable = Variable + 1; Variable -; 相当于 Variable = Variable - 1;,32,前置和后置自加/自减运算符,33,2.关系运算符,34,3.逻辑运算符,35,4.赋值运算符,36,可以把表达式的值通过复合赋值运算符赋予变量,这时复合赋值运算右边的表达式是作为一个整体参加运算的。 例: int a=8,b=3; a%=b*2-5; /*相当于a%=(b*2-5),它与 a=a%(b*2-5)是等价的。*/ 对变量可以进行连续赋值。 例: int z=3; x=y=z; /等价于x=(y=z)。,复合赋值举例说明,37,

20、6.条件运算符,格式:操作数1?操作数2:操作数3 含义:进行条件运算时,首先判断问号前面的布尔值是true还是false,如果是true,则值等于操作数2的值;如果为false,则值等于操作数3的值。 例如:68?15+a:39 由于68的值为false,所以整个表达式的值是39。,38,(1) 字符串连接符(+):将两个字符串连接在一起,形成新的字符串。 比如:“abc”+“efg” /结果是abcefg “36812”+“3.14” / 结果是368123.14 (2) is运算符:用于检查表达式是否指定的类型,如果是,结果为true,否则结果为false。 例如: int k=2; b

21、ool isTest=k is int; /isTest=true (3) sizeof运算符 sizeof运算符用于获得值类型数据在内存占用的字节数。 例如: int a=sizeof(double); /a=8,7.其他运算符,39,C# 运算符的优先级,40,分析运行结果:,1、 int i = 0; bool result = true; result = (+i) + i = 2?true:false; result =,true,41,2.4选择结构,选择结构用于根据表达式的值执行语句,双分支if语句: if(布尔表达式) 语句1 else 语句2,单分支if语句: if(布尔表达

22、式) 语句1,多分支if语句: if(布尔表达式1) 语句1 else if(布尔表达式2) 语句2 else if(布尔表达式3) 语句3 else 语句n,42,练习:在加法器上进行改进,要求输入运算符,根据不同运算符进行不同运算。,43,代码:,private void button1_Click(object sender, EventArgs e) int a, b,c; a = int.Parse(textBox1.Text); b = int.Parse(textBox2.Text); char op = Convert.ToChar(textBox3.Text); if (op

23、 = +) c = a + b; else if (op = -) c = a + b; else if (op = *) c = a * b; else if (op = /) c = a * b; else label5.Text=“运算符输入错误“); return; textBox4.Text = c.ToString(); ,44,switchcase选择结构,语法: switch (选择变量) case 值1: break; case 值2: break; case 值3: break; . . default : ,45,switchcase 的其他特性,选择结构 3-3,各个

24、case 标签不必连续,也不必按特定顺序排列 default 标签可位于 switchcase 结构中的任意位置,default 标签不是必选的,但使用 default 标签是一个良好的编程习惯 每两个 case 标签之间的语句数不限,46,练习:将数学运算窗体用switch改进,switch (op) case +: c = a + b; break; case -: c = a - b; break; case *: c = a * b; break; case /: c = a / b; break; default: MessageBox.Show(“运算符输入错误“); return

25、; ,47,using System; class StudentGrade public static void Main( ) Console.Write (“输入学生百分制的成绩:“); int Grade = (int)Console.Read ( ) ; switch ( Grade / 10 ) case 9: case 10: Console.WriteLine (“你的成绩为:A“); break; case 8: Console.WriteLine (“你的成绩为:B“); break; case 7: Console.WriteLine (“你的成绩为:C“); break

26、; case 6: Console.WriteLine (“你的成绩为:D“); break; default: Console.WriteLine (“你的成绩为:E“); break; ,【例】 从键盘输入学生的百分制成绩,换算成等级制成绩,48,2.5循环结构,循环结构用于对一组命令执行一定的次数或反复执行一组命令,直到指定的条件为真。 循环结构的类型 while 循环 do 循环 for 循环 foreach 循环,49,案例:求n以内的和,50,while 循环反复执行指定的语句,直到指定的条件为真 语法 : while (条件) / 语句 break 语句可用于退出循环 conti

27、nue 语句可用于跳过当前循环并开始下一循环,2.5.1while 循环,51,【例】 用while语句求求n以内的和,52,2.5.2dowhile 循环,dowhile 循环与 while 循环类似,二者区别在于 dowhile 循环中即使条件为假时也至少执行一次该循环体中的语句。 语法 : do / 语句 while (条件),53,while语句与do_while语句很相似,它们的区别在于while语句的循环体有可能一次也不执行,而do_while语句的循环体至少执行一次。,【例】 用do_while语句求n以内的和,54,2.5.3for 循环,for 循环要求只有在对特定条件进行判

28、断后才允许执行循环 这种循环用于将某个语句或语句块重复执行预定次数的情形 语法 : for (初始值; 条件; 增/减) /语句 ,55,【例】 用for语句求求n以内的和,56,上机练习,用三种方法编写求100200之间被5整除的个数和被3整除的个数。,57,2.5.4foreach 循环,foreach 循环用于遍历整个集合或数组 语法: foreach (数据类型 元素(变量) in 集合或者数组) /语句 ,58,例:分别计算字母、数字、标点符号的个数,为所有计数器设置初始值,接受输入,对输入的每一个 字符都进行循环,使用了所有输入的字符 之后,循环自动终止,59,练习:,在数学运算窗体,要求文本框只能输入数字,请编程验证,60,总结,变量是存放特定数据类型的值的容器,而常量也存放特定数据类型的值,但常量在整个程序中都保持一致 装箱是将值类型转换为引用类型,而拆箱则是将引用类型转换为值类型 C# 提供了以下类型的选择结构: ifelse switchcase C# 提供了以下类型的循环结构: while 循环 do 循环 for 循环 foreach 循环,61,课后练习,视频:预习数组http:/ 教材: 查找不同数据类型运算的函数 上机习题FrmAddStudent:输入学号、姓名和成绩,然后添加到右边文本框中 提示:文本框中换行是“rn”转义字符,

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

当前位置:首页 > 其他


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