第3章C编程基础.ppt

上传人:sccc 文档编号:5637561 上传时间:2023-08-04 格式:PPT 页数:44 大小:598.51KB
返回 下载 相关 举报
第3章C编程基础.ppt_第1页
第1页 / 共44页
第3章C编程基础.ppt_第2页
第2页 / 共44页
第3章C编程基础.ppt_第3页
第3页 / 共44页
第3章C编程基础.ppt_第4页
第4页 / 共44页
第3章C编程基础.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《第3章C编程基础.ppt》由会员分享,可在线阅读,更多相关《第3章C编程基础.ppt(44页珍藏版)》请在三一办公上搜索。

1、第三章 C#编程基础,2,本章目标,数据类型变量与常量枚举表达式语句,无条件分支语句条件分支语句循环语句操作符预处理指令,3,C#的基本数据类型,C#中的数据类型分为两个基本类别 值类型 表示实际数据 只是将值存放在内存中 值类型都存储在堆栈中 int、char、结构引用类型 表示指向数据的指针或引用 包含内存堆中对象的地址 为 null,则表示未引用任何对象 类、接口、数组、字符串等,在C语言中,数据类型主要规定变量的范围和精度。,与C语言的数据类型类似,C#新增,4,C#的基本数据类型,与C语言相比,C#中的数据类型的种类有所增加,但是,程序员在设置变量类型时仍然可以遵守与C类似的原则,选

2、择简单几种数据类型。选择数据类型的依据:数据的范围和精度要求。,5,C#数据类型,6,C#数据类型的转换,隐式转换:不同类型变量间直接赋值;显式转换:不同类型变量间赋值加强制类型转换。原则:高精度向低精度转换时需要显式转换,低精度向高精度转换时可以隐式转换。int a=600,a1;short b=700,b1;a1=b;/可以运行 b1=a;/错误提示,错误1无法将类型“int”隐式转换为“short”。存在一个显式转换(是否缺少强制转换?)b1=(short)a/正确语句,7,变 量,语法:访问修饰符 数据类型 变量名,Public,Private,Protected,int,string

3、,float,糖,盐,胡椒粉,盐,胡椒粉,糖,int,float,string,2,5.4,“Test”,变量用于存储特定数据类型的值,8,变 量,static void Main(string args)/声明布尔型、字符串型、整型、短整型和浮点型变量 bool test=true;short num1=19;int num2=14000;string val=Jamie;float num3=14.5f;/显示变量值 Console.WriteLine(布尔值=+test);Console.WriteLine(短整型值=+num1);Console.WriteLine(整型值=+num2)

4、;Console.WriteLine(字符串值=+val);Console.WriteLine(浮点值=+num3);,变量中存储的值取决于该变量的类型,9,数组是同一数据类型的一组值;数组属于引用类型,因此存储在堆内存中 数组初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段中进行。语法:数据类型元素个数 数组名称;int6 arrayHere;与C语言的格式明显不同,但在具体使用上很类似。,数组简介,10,数 组,学生分数的整数数组,职员姓名的字符串数组,室温的浮点数组,数组位置,11,数 组,static void Main(string args)int count,i;Con

5、sole.WriteLine(请输入您要登记的学生人数);count=int.Parse(Console.ReadLine();/声明一个存放姓名的字符串数组,其长度等于提供的学生人数 string names=new stringcount;/用一个 for 循环来接受姓名 for(i=0;icount;i+)Console.WriteLine(“请输入学生 0 的姓名,i+1);namesi=Console.ReadLine();Console.WriteLine(已登记的学生如下:);/用 foreach 循环显示姓名 for(i=0;icount;i+)Console.WriteLin

6、e(0,namesi);,数组声明,初始化数组元素的循环,显示输出的循环,12,struct structEx public int structDataMember;public void structMethod1()/structMethod1 实现,自定义数据类型可以在其内部定义方法 无法实现继承属于值类型主要结构:,struct studentpublic int stud_id;public string stud_name;public float stud_marks;public void show_details()/显示学生详细信息,结 构,数据成员,方法,所有与 Stu

7、dent 关联的详细信息都可以作为一个整体进行存储和访问,13,常 量,语法:const 数据类型 常量名=常量值;,Public,Private,Protected,常量用于在整个程序中将数据保持同一个值,14,常 量,static void Main(string args)/PI常量PIconst float _pi=3.14F;/由地球引力引起的加速度常量,单位为 cm/s*s const float _gravity=980;/钟摆的长度 int length=40;/钟摆的周期 double period=0;/钟摆周期的计算公式 period=2*_pi*Math.Sqrt(le

8、ngth/_gravity);Console.WriteLine(钟摆的周期为 0 秒,period);,声明常量,在表达式中使用常量,const 关键字用于声明常量,15,枚 举,枚举是一种特殊的常量,能够将意义相关但数值不相关的常量集中存储,便于修改和访问。举例:example3_5 枚举关键是要理解为什么要设置枚举常量类型,将若干常量封装保存,便于修改和访问。,16,在以下示例中:enum Color:longRed,Green,Blue 声明一个名为 Color 的枚举类型,该类型具有三个成员:Red、Green 和 Blue。,17,字符串常量字符串常量指包含在一对双引号中的字符,包

9、括字母,数字,特珠字符和转义字符,在字符串常量中转义字符不作为转义字符时,前面加就可以了,下面是字符串常量示例。SSu000AKK;C:u005CHello.cs;学习u0027C#u0027;u0027;,string类型,18,string类型是引用类型,但设计人员对string类型做了一些“手脚”,让它跟引用类型又有些差别,比如:string s1=a string;string s2=s1;然后,若改变了s1的值,但是并不会影响s2,这就是设计人员在string类型上做的“手脚”,,19,设计人员动的手脚过程:首先在创建s1字符串的时候,CLR会检测托管堆里是否含有“a string”

10、这个字符串,如果没有,就重新创建字符串“a string”,如果有,就直接把s1指向这个字符串,然后创建s2的时候,把s1赋值给s2,此时,s1和s2指向托管堆的同一块内存(即字符串“a string”),当你改变s2的时候(比如改为“b string”),CLR并不会直接更改托管堆上的“a string”,而是重新开辟一个内存单元存字符串“b string”,这个机制就叫“copy on write”,其实c+和java都采用这种机制。但你不必担心内存泄露的问题(这个问题你都能想到的话,.net的设计人员也早考虑到了),.net的垃圾回收机制会自动回收那些“无引用/无效”对象。string类

11、型是一种特殊类型,它本身是引用类型,但它却模拟了值类型。,20,运算符和表达式,运算符和表达式,Result,=,number,*,100,变量,变量,常量,操作数,表达式,操作数和运算符的组合,运算符,21,运算符和表达式,22,运算符和表达式,23,运算符和表达式,24,运算符和表达式,25,运算符和表达式,一元运算符(+/-),Variable+;相当于 Variable=Variable+1;Variable-;相当于 Variable=Variable-1;,26,运算符和表达式,27,运算符和表达式,C#运算符的优先级,28,前置和后置自加/自减运算符,自加和自减符号要慎用!不便于

12、错误追踪,一般用于程序后期优化!,29,算术运算符,static void Main(string args)/x2 的系数int coefficient1=2;/x 的系数int coefficient2=-7;/二次方程的常数值 int constant=3;/存放表达式 b2-4ac 的值 double expression=0;double x1=0;double x2=0;Console.WriteLine(二次方程为:0 x2+1x+2,coefficient1,coefficient2,constant);expression=Math.Sqrt(coefficient2*coe

13、fficient2-(4*coefficient1*constant);x1=(-coefficient2)+expression)/(2*coefficient1);x2=(-coefficient2)-expression)/(2*coefficient1);Console.Write(x=0:F2,x1);Console.Write(或);Console.WriteLine(x=0:F2,x2);,将值赋给变量,在表达式中使用的算术运算符,30,选择结构,语法:if()else,选择结构用于根据表达式的值执行语句,if else,31,选择结构,语法:switch(选择变量)case 值

14、1:break;case 值2:break;case 值3:break;.default:,switchcase,32,switchcase 的其他特性,选择结构,各个 case 标签不必连续,也不必按特定顺序排列default 标签可位于 switchcase 结构中的任意位置default 标签不是必选的,但使用 default 标签是一个良好的编程习惯每两个 case 标签之间的语句数不限,33,循环结构,循环结构用于对一组命令执行一定的次数或反复执行一组命令,直到指定的条件为真。循环结构的类型 while 循环do 循环for 循环foreach 循环,34,while 循环,停车!,

15、车上有几个座位?,检查!,是!,否!,while(seat=25),35,while 循环反复执行指定的语句,直到指定的条件为真语法:while(条件)/语句break 语句可用于退出循环continue 语句可用于跳过当前循环并开始下一循环,while 循环,36,dowhile 循环 2-1,停车!,车上有几个座位?,检查!,是!,否!,while(seat=25),do,37,dowhile 循环,dowhile 循环与 while 循环类似,二者区别在于 dowhile 循环中即使条件为假时也至少执行一次该循环体中的语句。语法:do/语句 while(条件),38,for 循环,for

16、 循环要求只有在对特定条件进行判断后才允许执行循环 这种循环用于将某个语句或语句块重复执行预定次数的情形 语法:for(初始值;条件;增/减)/语句,39,foreach 循环,计算总分,计算分数,对班上的每一个学生,教 室,40,Foreach循环(C#新增加),foreach 循环用于遍历整个集合或数组;语法:foreach(数据类型 元素(变量)in 集合或者数组)/语句 与for循环的主要区别:for适合有规律的数组,但foreach则着重于数据集合中的所有元素的遍历。,41,Foreach举例,class ForEachTest static void Main(string arg

17、s)int fibarray=new int 0,1,2,3,5,8,13;foreach(int i in fibarray)Console.WriteLine(i);,定义数组并赋值,类型,数组名称,元素序号,同数组类型,可取任意名,不用预先定义,42,foreach 循环,static void Main(string args)int countLetters=0;/存放字母的个数 int countDigits=0;/存放数字的个数 int countPunctuations=0;/存放标点符号的个数 string input;/用户提供的输入 Console.WriteLine(请

18、输入一个字符串);input=Console.ReadLine();foreach(char chr in input)/声明 foreach 循环遍历输入字符串的每个字符。if(char.IsLetter(chr)countLetters+;/检查字母 if(char.IsDigit(chr)countDigits+;/检查数字 if(char.IsPunctuation(chr)countPunctuations+;/检查标点符号 Console.WriteLine(“字母的个数为:0,countLetters);Console.WriteLine(“数字的个数为:0,countDigits);Console.WriteLine(“标点符号的个数为:0,countPunctuations);,43,总结,变量是存放特定数据类型值的容器,而常量也存放特定数据类型的值,但常量在整个程序中都保持不变。C#提供了以下类型的选择结构:ififelseswitchcase,44,总 结,C#提供了以下类型的循环结构:while 循环do 循环for 循环foreach 循环数组是可将同一类型的多个数据元素作为单个实体存放的一种数据结构 C#中的结构可以在其内部定义方法并可包括一个构造函数枚举是一组已命名的数值常量,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号