第二章C编程基础.ppt
《第二章C编程基础.ppt》由会员分享,可在线阅读,更多相关《第二章C编程基础.ppt(78页珍藏版)》请在三一办公上搜索。
1、第二章 C#编程基础,本章学习目标,熟悉C#基本数据类型掌握选择、循环、跳转语句的使用方法掌握定义和初始化数组的方法掌握访问数组元素的方法,第二章 C#编程基础,2.1 基本数据类型2.2 常量与变量2.3 表达式2.4 选择语句2.5 循环语句2.6 跳转语句2.7 数组,2.1 基本数据类型,2.1.1 值类型2.1.2 引用类型2.1.3 值类型与引用类型的关系,2.1 基本数据类型,简单类型枚举类型结构类型,值类型,引用类型,类接口数组委托,两者有很大区别,2.1 基本数据类型,值类型,引用类型,内存,.,int num;num=1024;,num,.,string str;str=“
2、abc”;,str,内存,2.1.1 值类型,所谓值类型就是一个包含实际数据的量。即当定义一个值类型的变量时,C#会根据它所声明的类型,以堆栈方式分配一块大小相适应的存储区域给这个变量,随后对这个变量的读或写操作就直接在这块内存区域进行。,2.1.1 值类型,2.1.1 值类型,枚举类型:由用户定义的一组有限个整型符号常量。定义枚举类型枚举成员赋值声明枚举变量访问枚举变量,2.1.1 值类型枚举类型,定义枚举类型enum 枚举名:数据类型/枚举成员 数据类型除了char之外的整数类型。默认为32位整数类型,第一个枚举值为0,第二个为1,依次加1。枚举成员 枚举成员均为符号常量,常量名之间用逗号
3、分隔。,2.1.1 值类型枚举类型,定义枚举类型实例 enum WeekdaysMon,Tues,Wed,Thur,Fri,Sat,Sun/Mon=0,Tues=1,Wed=2,Thur=3,Fri=4,Sat=5,Sun=6,2.1.1 值类型枚举类型,枚举成员赋值(1)修改枚举的默认值(2)修改一个或多个枚举成员的值(3)为多个枚举成员赋同样的值,2.1.1 值类型枚举类型,枚举成员赋值(1)修改枚举的默认值public enum WeekdaysMon=1,Tues,Wed,Thur,Fri,Sat,Sun,枚举Weekdays的第一个枚举值为1,其后依次加1.,2.1.1 值类型枚举类
4、型,枚举成员赋值(2)修改一个或多个枚举成员的值public enum Weekdays Mon,Tues=-1,Wed,Thur,Fri=3,Sat,Sun,第一个被赋值的枚举成员之前的枚举成员,按默认方式赋值;如为某个枚举成员赋值,则其后的枚举成员值在此基础上依次加1.,2.1.1 值类型枚举类型,枚举成员赋值(3)为多个枚举成员赋同样的值 public enum Weekdays Mon,Tues=3,Wed,Thur,Fri=Mon,Sat,Sun,被赋值枚举成员一定要位于赋值的枚举成员之后!,2.1.1 值类型枚举类型,声明枚举变量 格式:枚举名 变量名;,2.1.1 值类型枚举类型
5、,访问枚举变量 枚举变量的值必须是枚举成员,枚举成员需要用枚举名引导。例:enum Color red,green,blue Color c=Color.red;int i=(int)c;或:int i=(int)Color.red;,2.1.2 引用类型,2.1.2 引用类型,一个引用类型的变量不存储它们所代表的实际数据,而是存储实际数据的引用。引用类型分两步创建:首先在堆栈上创建一个引用变量,然后在堆上创建对象本身,再把这个内存的句柄(也是内存的首地址)赋给引用变量。,2.1.2 引用类型,例如:string s1,s2;s1=ABCD;s2=s1;其中,s1,s2是指向字符串的引用变量,
6、s1的值是字符串“ABCD”存放在内存的地址,这就是对字符串的引用,两个引用型变量之间的赋值,使得s2、s1都是对“ABCD”的引用。如图所解。,堆内存,栈内存,ABCD,s1,s2,2.1.3 值类型与引用类型关系,可以把值类型与引用类型的值赋给object类型变量,C#用“装箱”和“拆箱”来实现值类型与引用类型之间的转换。装箱就是将值类型包装成引用类型的处理过程。当一个值类型被要求转换成一个object对象时,装箱操作自动进行,它首先创建一个对象实例,然后把值类型的值复制到这个对象实例,最后由object对象引用这个对象实例。拆箱操作与装箱相反,它是将一个object类型转换成值类型。首先
7、检查由object引用的对象实例值类型的包装值,然后把实例中的值拷贝到值类型的变量中。,2.1.3 值类型与引用类型关系,装箱操作实例:using System;class Demo public static void Main()int x=123;object obj1=x;/装箱操作 x=x+100;/改变x的值obj1的值并不会随之改变 Console.WriteLine(x=0,x);/x=223 Console.WriteLine(obj1=0,obj1);/obj1=123,2.1.3 值类型与引用类型关系,实例的装箱操作说明如图所示。,2.1.3 值类型与引用类型关系,拆箱操
8、作实例:using System;class Demo public static void Main()int x=123,y;object obj1=x;/装箱操作 x=x+100;/改变x的值,此时obj1的值并不会随之改变 y=(int)obj1;/拆箱操作,必须进行强制类型转换 Console.WriteLine(x=0,x);/x=223 Console.WriteLine(obj1=0,obj1);/obj1=123,2.2 常量与变量,2.2 常量与变量,变量的声明数据类型 变量名int age;变量名标示符命名规则只能使用数字、字母、下划线标识符首字母必须是字母、下划线不能使
9、用关键字作为标示符C#区分大小写变量命名规范不要用下划线作为变量名首字符不要仅靠大小写区分两个变量小写字母开头如果多个单词命名变量名,从第二个单词开始,每个单词首字母大写。例如:int averageAge;,2.2 常量与变量,变量初始化,int a=2;/定义a为整型变量,初值为2char b=A;/定义b为字符型变量,初值为Adouble x=2.1234;/定义x为实型变量,初值为2.1234也可对被定义的变量的部分变量进行初始化。如int u,v=100,w;/定义u,v,w为整型变量,v的初值为100,float y=1.1;/错误,因为1.1默认为double类型,范围比floa
10、t大,因此double类型向float类型转化时会报错。如需转化:float y=(float)1.1或float y=1.1f,2.3 表达式,算术运算符关系运算符逻辑运算符位运算符赋值运算符条件运算符,2.3 表达式,算术运算符,关系运算符,关系运算符,逻辑运算符,逻辑运算符,&:短路与(当第一个操作数为假时,则表达式的结果为假,不再计算第二个操作数)|:短路或(当第一个操作数为真时,则表达式的结果为假,不再计算第二个操作数),位运算符,位运算符,赋值运算符,赋值运算符,条件运算符,条件运算符表达式1?表达式2:表达式3如果“表达式1”的值为非0(真),则条件表达式的运算结果等于“表达式2
11、”的值,否则,运算结果等于“表达式3”的值。例如:int i=2,j=4;max;max=ij?i:j;/max的值为4,表达式中的类型转换,在表达式中,操作数的数据类型可以不同,只要相互兼容即可。当表达式中混合了几种不同的数据类型时,C#会基于运算的顺序将它们自动转换成同一类型。隐式转换:数值范围小的类型数值范围大的类型,无符号整数类型 有符号整数类型(float不能转换为decimal),2.4 选择语句,if()if()else if()else(else语句与最近的if匹配)switch,条件判断嵌套 if,机票预定:输出实际机票价格原价为4000元5-10月为旺季,头等舱打9折,经济
12、舱打7.5折其他时间为淡季,头等舱打6折,经济舱打3折,需要两次判断首先判断是旺季还是淡季再判断头等舱还是经济舱,嵌套 if 实现,条件判断嵌套 if,if(month=5 else/淡季/,关键代码回顾,嵌入的一对 ifelse,switch 示例,从键盘输入学生的百分制成绩,换算成等级成绩90-100:A,80-89:B,70-79:C,60-69:D,其余:E,switch 示例,Console.Write(“输入学生百分制成绩:”);int grade=int.Parse(Console.ReadLine();switch(grade/10)case 9:case 10:Console
13、.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;,条件判断的表达式类型 整型或字符串break 语句的要求:每个 case 都有 breakdefault 也要有 break特殊情况:,case 中没有其他语句时,不需要break语句,2.4 循环语句,
14、While语句do-while语句for 语句,2.4 循环语句,用不同的循环语句求,While语句,using System;public class Sum100 public static void Main()int Sum,i;Sum=0;i=1;while(i=100)Sum+=i;i+;Console.WriteLine(Sum is+Sum);,do-while语句,using System;public class Sum100 public static void Main()int sum,i;sum=0;i=1;do sum+=i;i+;while(i=100)Cons
15、ole.WriteLine(“sum is+sum);,for 语句,using System;public class Sum100 public static void Main()int sum,i;for(sum=0,i=1;i=100;i+)sum+=i;Console.WriteLine(“sum is+sum);for(sum=0,i=1;i=100;sum+=i,i+);/循环体是一空语句 Console.WriteLine(“sum is+sum);,2.6 跳转语句,continue语句break语句return语句,2.6 跳转语句,在循环结构中,continue 和 b
16、reak怎样跳转?,for()continue;,for()break;,跳出循环结构,跳到下次循环,在二重循环中会怎样呢?,Continue语句,下面红色框中代码的作用是什么?,int count=0;for(i=0;i 3;i+)/提示输入成绩 for(j=0;j 4;j+)Console.Write(第0个学员的成绩:,j+1);score=int.Parse(Console.ReadLine();sum=sum+score;if(score 85)continue;count+;/计算平均分并输出,continue 跳出本次循环,继续下一次循环,统计成绩在85分以上的学员人数,Brea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 编程 基础

链接地址:https://www.31ppt.com/p-5988743.html