第2章C程序开发基础——C语法入门.ppt

上传人:sccc 文档编号:5896176 上传时间:2023-08-31 格式:PPT 页数:49 大小:150.04KB
返回 下载 相关 举报
第2章C程序开发基础——C语法入门.ppt_第1页
第1页 / 共49页
第2章C程序开发基础——C语法入门.ppt_第2页
第2页 / 共49页
第2章C程序开发基础——C语法入门.ppt_第3页
第3页 / 共49页
第2章C程序开发基础——C语法入门.ppt_第4页
第4页 / 共49页
第2章C程序开发基础——C语法入门.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《第2章C程序开发基础——C语法入门.ppt》由会员分享,可在线阅读,更多相关《第2章C程序开发基础——C语法入门.ppt(49页珍藏版)》请在三一办公上搜索。

1、第2章C#程序开发基础C#语法入门,数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举,2.1 数据类型,所谓数据类型,就是指数据的种类。在应用程序中,要使数据能被计算机识别并处理,需要将数据分为不同的类型,这样的好处是存储和计算方便。比如在对姓名和地址的处理中需要使用字符,在对货币和数量的处理中又需要使用数字或不同精度的小数,这些数据都是不同类型的数据。如姓名是“张三”为字符型、年龄是25为整型等。为什么要定义数据类型呢?之所以要定义数据类型,是因为计算机是没有思维的,你只有告诉它,他才知道这是什么。比如你定义“int a”,它才知道a是一个整数,否则计算机就识别不出来它是个什么东西

2、而出错。,2.1.1 值类型和引用类型概述,C#的数据类型分为值类型、引用类型和指针类型(Pointer Type)3大类。值类型包括简单类型、结构类型和枚举类型。引用类型包括类类型、接口类型、委托类型和数组类型。指针类型只能用于不安全模式。值类型的数据存储在内存的堆栈中,可以提供快速访问。如果变量是值类型的,这个变量就包含实际数据,在一个独立的内存区域保存自己的值,如果在代码中修改其值后,在内存中会保存修改后的值。C#中大多数基本数据类型如:整型、字符型、浮点型、布尔型等都属于值类型,结构、枚举也属于值类型。,引用类型指向存储在内存堆中的数据的指针或引用。与纯粹的地址不同,引用总是指向一个对

3、象,而且这个对象具有指定的类型,并且在堆上分配了地址。字符串、数组、接口、类都属于引用类型。,2.1.2值类型,C#语言的值类型包括整数类型、浮点数类型、布尔类型、字符类型等简单类型以及枚举类型和结构类型。下面介绍简单类型,枚举在2.5节中介绍,结构在4.4节中介绍。,整数类型,整数类型的变量值为整数。计算机语言提供的整数类型的值总是在一定范围之内。根据数据在计算机内存中所占的位数来划分,C#有8种整数类型的数据,这些数据及其在计算机中表示整数的范围如下表所示。,2.浮点数类型和十进制类型,浮点数类型又称为实数类型,是指带有小数部分的数字。C#支持两种浮点数类型:单精度(float)和双精度(

4、double)。它们的差别在于取值范围和精度不同。浮点数类型数据的特征如下表所示。数据类型含义 取值范围 有效数字位数float 32位浮点数 1.510-453.41038 7double 64位浮点数 5.010-3241.710308 1516,3.字符类型,在C#中,字符常量是用单引号(即撇号)括起来的一个字符,如a、x、D、?、$等都是字符常量,注意,a和A是不同的字符常量。char c1=X;/将字符X赋给字符型变量c1除了以上形式的字符常量外,C#还允许用一种特殊形式的字符常量,即以“”开头的字符序列。它们一般实现一定的控制功能,并没有一定的字型,这种非显示字符难以用一般形式的字

5、符表示,故规定用这种特殊形式表示,这些形式的字符也称为“转义字符”。,4.布尔类型,布尔类型变量只有两种取值:true(代表“真”)和false(代表“假”),并且true值不能被其他任何非0值所代替。bool flag=true;/正确bool flag=1;/错误,不能将一个整型数据赋给布尔类型的变,【范例2-1】,已知圆的半径为12厘米,计算圆的面积。在Visual Studio 2008中新建C#控制台程序,项目名为Circle;在Program.cs的Main 方法中输入以下代码。完整的代码如下:decimal pi=3.14159M;/字母M表示数据是decimal类型int r=

6、12;/定义int型变量r 表示圆的半径decimal s=0;/用来存放圆的面积s=pi*r*r;/计算圆的面积Console.WriteLine(“圆的半径是0,n圆的面积是:1”,r,s);/在控制台输出结果Console.ReadKey();/暂停运行,按任意键继续,2.1.3引用类型,C#中的值类型比较简单,对更加复杂的数据处理效率很低。C#的引用类型主要用来描述结构复杂、抽象能力比较强的数据,它与值类型数据是相并列的。同为引用类型的两个变量,可以指向同一个对象,也可以针对同一个变量产生作用,或者被其他同为引用类型的变量所影响。类类型、接口类型、委托类型和数组类型属于引用类型。下面介

7、绍字符串类型,其他引用类型将在2.5节和第4、5章分别介绍。字符串是一种数据类型,一种类别,即它属于引用类型,还可以视为一个由字符组成的数组。使用string来声明字符串变量,字符串值放在一对双引号中,例如:string name=“Tom”;关于字符串的详细操作,将在3.4节详细介绍。,第2章C#程序开发基础C#语法入门,数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举,2.2 常量与变量,常量和变量代表在程序中的数据,是程序运行不可缺少的一部分,下面我们介绍常量和变量的使用。,2.2.1 变量,变量的声明语法如下。访问修饰符 变量修饰符 变量的数据类型 变量名表其中【访问修饰符】

8、和【变量修饰符】都是可以省略,在4.1节中将给出详细介绍。变量声名和赋值如下所示:private int x;/声明x为整型变量,private可以省略x=10;/变量的赋值,让变量x的值为10string name=”John”;/声明一个字符串变量name,值为John也可以在声明变量的同时赋值,如:int x=10;可以在一行声明多个变量,如:int x=3,y=8;/不同变量用逗号隔开。变量命名规则:变量名,2.2.1 常量,常量就是在程序运行过程中其值固定不变的量,即在程序执行期间,常量的值不会发生改变。其格式如下:访问修饰符号 const 类型 常量表达式;其中【访问修饰符号】都是

9、可以省略。常量的修饰符可以是new、public、protected、internal、private。常量的表达式表示常量的名字。如下所示:public const int x=3,y=8;,2.2.3 隐式类型的局部变量,隐式类型的局部变量又叫匿名变量,是C#3.0版本中引入的一个新用法,使用var声明。可以用var声明任何类型的局部变量,它只是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。语法如下:var 变量名称=变量值;例如:var i=8;/局部变量i作为整型数据被编译var s=“Hello C#!”;/局部变量s作为字符串数据被编译,【范例2-

10、2】定义常量和变量,熟悉常量、变量的使用。,第2章C#程序开发基础C#语法入门,数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举,2.3 运算符和表达式,C#语言中的表达式类似于数学运算中的表达式,用运算符把操作对象连接起来的式子就是表达式,表达式在经过一系列运算后得到一个运算结果,结果的类型由参加运算的操作对象的数据类型决定。运算符是表示各种不同运算的符号。在程序设计语言中运算是指对各种数据进行处理。比如表示加法运算就用“+”运算符。,2.3.1 一元运算符,一元运算符的操作数只有一个。常见的一元运算符包括自加运算符“+”、自减运算符“-”和逻辑非“!”。+可将操作数加1,-可将操

11、作数减1,逻辑非是将表达式的值取反。自加、自减运算符在表达式前和表达式后的结果是不一样的,自加和自减运算符其实是二元运算符的简化写法n+;等价于n=n+1;,C#中还有其他的简化写法,如下表所示。简化运算符等价表达式简化运算符等价表达式n+和+n,2.3.2 二元运算符,二元运算符就是需要两个操作数参与的运算符,我们很熟悉的加减乘除四则运算的符号“+”、“-”、“*”、“/”就是二元运算符。如“3+8”,“+”运算符的两个操作数分别是3和8。比较运算符(结果是逻辑性型,即True或 False)比较一个数是否大于另一个数逻辑运算符(结果是逻辑型)&逻辑“与”两个操作数都为真时结果为”真”,其余

12、情况结果为”假”opr1&opr2|逻辑“或”两个操作数至少一个为真时结果为”真”,其余情况结果为”假”opr1|opr2,2.3.3 三元运算符,三元运算符要求有三个操作数参与的运算。格式为:操作数1?操作数2:操作数3;其中操作数可以为变量或者表达式。输出结果为:如果操作数1为真,输出操作数2,如果操作数1为假,输出操作数3。三元运算符的输出结果取决于“?”前面的操作数1。例如:n=38?3:8;输出结果为8。n=38?3:8;输出结果为3。,2.3.4 运算符优先级,表达式有多个运算符时,表达式的求值顺序由运算符的优先级决定:先取优先级较高的运算符进行计算,将运算的结果再运用于优先级较低

13、的运算符。也遵从算术运算的“先乘除后加减”这样的规则,可以用圆括号“()”改变运算的优先次序。C#运算的优先级如下,越上面优先级越高,如果一个表达式中出现同一个优先级的运算符,运算顺序取决于其结合性。结合性指运算符在表达式中从左到右或从右到左的运算顺序。,第2章C#程序开发基础C#语法入门,数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举,2.4 类型转换,在输出结果时经常把整型、浮点型等类型转换为字符串,不同类型的数据进行运算时需要转换为同一类型才能正常计算,所有操作过程中经常涉及到数据类型之间的转换。C中数据类型的转换可以分为两类:隐式转换和显式转换。,2.4.1 隐式转换,隐式

14、转换,就是系统默认的、不需要加以声明就可以进行的转换。例如:short st=250;int i=st;/将短整型隐式转换成整型在C#没有引入var类型的变量之前,隐式转换仅存在于数值类型的数据之间,引入var类型之后,var定义的变量可以实现隐式数据转换。,1数值类型数据间的隐式转换,隐式数据类型转换适用于数值类型的数据之间,如整型数据(int)可以隐式转换为浮点型(float)和双精度型(double)数据;浮点型(float)可以隐式转换为双精度型(double)数据。隐式数据类型转换遵循以下规则才能实现。,2var类型数据隐式转换,var定义的变量的数据类型是由赋值的数据决定的。如va

15、r Name=”Johnson”,此时变量Name就是字符串类型,进行了隐式转换。1 var intNum=250;2 int i=intNum;/var型变量intNum隐式转换成整型;3 var Name=”Johnson”;4 string strName=Name;/var型变量Name隐式转换string型;,2.4.2 显式转换显式,转换又叫强制类型转换,需要用户明确地指定转换的类型。通过显式数据转换,可以把取值范围大的数据转换为取值范围小的数据。显式转换可以发生在表达式的计算过程中,可能引起信息丢失,例如下面代码把float类型的变量pi强制转为int,小数部分的信息就丢失了。f

16、loat pi=3.14f;/定义一个单精度的实数 int i=(int)pi;/将单精度强制转换为整型行计算,i的值是3,不是3.14,造成信息丢失,2.4.3 使用Convert类转换,.Net Framework提供了很多类库,其中System.Convert类就是专门进行类型转换的类,通过Convert类提供的方法实现各种基本数据类型间的转换。Convert类的常用方法有:方法说明ToBoolean将指定的值转换为等效的布尔值。ToChar将指定的值转换为 Unicode 字符。ToDateTime将指定的值转换为 DateTime。ToDecimal将指定值转换为 Decimal 数

17、字。ToDouble将指定的值转换为双精度浮点数。ToInt16将指定的值转换为 16 位有符号整数。ToInt32将指定的值转换为 32 位有符号整数。ToString将指定值转换为其等效的 String 表示形式。例如:String MyString=”true”;Bool MyBool=Convert.ToBoolean(MyString);/将String转换为Boolean型,MyBool=trueString newString=”123456789”;Int MyInt=Convert.ToInt32(newString);/将字符串转换为数字值,MyInt=123456789.

18、,【范例2-5】隐式转换、显式转换使用举例,在Visual Studio 2008中新建C#控制台程序,项目名为TypeConvert;在Program.cs的Main 方法中输入以下代码。完整的代码如下:1 Console.WriteLine(“隐式、显式转换例子:”);2 short r=25;/r表示圆的半径;3 int i=r;/将短整型r隐式转换成整型 4 float pi=3.14f;/定义一个单精度的实数5 double s1=pi*i*i;/s1为double型,表示圆的面积6 int s2;7 s2=(int)pi*i*i;/s2为int型,表示圆的面积8 var Name=

19、“Johnson”;9 string strName=Name;/var型变量rName隐式转换string型10 Console.WriteLine(“r=25,圆的面积=0,1”,s1,s2);11 Console.WriteLine(“转换成功!”);第3行,将short类型隐式转为int;5行int和float类型隐式转为double类型;7行显式把float转为int;89行,var类型隐式转为string类型。代码详解,2.4.4 装箱和拆箱,拆箱是把“引用”类型转换成“值”类型,装箱是把“值”类型转换成“引用类型”,是数据类型转换的一种特殊应用。有时某些方法的参数要求使用“引用”

20、类型,而想把“值”类型的变量通过这个参数传入,就需要使用这个操作例如。1 int n=4;/n是值类型2 object obj=n;/封箱,把任何值类型隐式地转化为object类型,其中object为引用类型3 Console.WriteLine(“n的初始值为:0,装箱后的值为1”,n,obj.ToString();4 int m=(int)obj;/拆箱,把一个object类型隐式地转换为值类型;5 Console.WriteLine(“引用类型的值为:0,拆箱后的值为1”,obj.ToString(),m),2.4.5 数值和字符串之间的转,C#中字符串和数值之间经常互相转换,下面介绍一

21、下二者之间的转换方法。(1)ToString()方法:数值类型的ToString()方法可以将数值型数据转换为字符串;(2)Parse()方法:数值类型的Parse()方法可将字符串转换为数值型,如字符串转换为整型使用int.Parse(string);字符串转换为双精度浮点型使用double.Parse(string)等。,例如:1 int num1=25;2 string str1=num1.ToString();/num1的ToString()方法将num1转为string赋给str13 string str2=38;4 int num2=int.Parse(str2);/int.Par

22、se()方法将字符串str2转换为int类型5 string str3=21;6 double num3=double.Parse(str3);/double.Parse()将字符串转换为双精度浮点型7 string str4=56;8 float num4=float.Parse(str4);/float.Parse()将字符串转换为单精度浮点型,第2章C#程序开发基础C#语法入门,数据类型 常量和变量 运算符和表达式 类型转换 数组和枚举,2.5 数组和枚举,简单数据类型如整型、字符串类型等变量都只能存储一个值,如需要存储多个相同类型的数据,可以使用数组。使用枚举,可以避免不合理的赋值,使

23、程序更加合理和安全。本节讲解数组和枚举的使用。,2.5.1 数组的定义和使用,数组是一个经过索引的对象集合。一维对象数组的声明如下:数据类型数组的大小或容量 数组名;其中中的数组的大小或容量可以省略。如下所示:int5 array1/声明有五个数组元素的数组;或int array1array1=new int5;/和上面数组声明等价;,声明过的数值型数组中的数组元素默认值为零,引用类型数值中的数组元素的默认值为 null,可以在创建数组的同时初始化数组,如下所示:int array1=new int 1,3,5,7,9;/有5个元素的数组,初值分别为1,3,5,7,9或int array1=n

24、ew int5 1,3,5,7,9;/数组的大小和数组元素的个数必须相等或int array1=1,3,5,7,9;,二维数组,声明二维数组的语法是:数据类型,数组名;例如:1 int,array2D=new int2,3;/声明二维数组array2D 2 int,array2D2=1,2,3,4,5,6;/声明二维数组array2D2的同时初始化3,2.5.2 Array类,System.Array类提供了创建、操作、搜索和排序数组的许多静态方法供程序调用,它是所有数组类型的抽象基类,不能直接从System.Array显示地派生自己的数组类型。Array类常用的方法如下:方法名功能Clear

25、清除将 Array 中的元素值Copy将一个 Array 的一部分元素复制到另一个 Array 中CopyTo将当前一维 Array 的所有元素复制到指定的一维 Array 中。Find搜索与指定谓词定义的条件匹配的元素,返回整个 Array 中的第一个匹配项。FindAll检索与指定谓词定义的条件匹配的所有元素。FindIndex搜索与指定谓词定义的条件匹配的元素,返回 Array 或其某个部分中第一个匹配项的从零开始的索引。GetLength获取Array 的指定维中的元素数。GetValue获取当前 Array 中指定元素的值。IndexOf返回一维 Array 或部分 Array 中某

26、个值第一个匹配项的索引。Initialize通过调用值类型的默认构造函数,初始化值类型 Array 的每一个元素。Reverse反转一维 Array 或部分 Array 中元素的顺序。SetValue将当前 Array 中的指定元素设置为指定值。Sort对一维 Array 对象中的元素进行排序。ToString返回表示当前 Object 的 String。,【范例2-6】利用Array类的静态方法实现数组排序和反转。在Visual Studio 2008中新建C#控制台程序,项目名为“ArrayMethod”;在Program.cs的Main 方法中输入以下如下代码(代码2-6.txt)。,2

27、.5.4 匿名数组,匿名数组就是隐藏类型的数组,这和匿名类型相同,不同的是类型为数组。匿名数组的语法和前面类似,就是用var替换具体的数据类型,例如:var array1=new1,2,3,4,5;/intvar arry1=new 1,1,5,2,2.5;/doublevar arry3=new“abc”,“bcd”,“dsd”;/string使用 匿名数组时,数组的内容一定是可以相互转换的,如var array4=new“abc”,1,4,“ab”;是错误的,因为字符串和数值不能实现自动的转换功能。,2.5.5 枚举的定义和使用,枚举是一组已经命名的数值常量,用来定义一组具有特定值的数据类

28、型,是便于记忆的符号。使用此数据类型可使代码更具可读性,还可降低将非法值或意外值赋给该变量的可能性。使用关键字enum定义枚举,语法如下:enum 枚举名称枚举对象,例如,定义一个代表星期的枚举类型的变量,public enum DayOfWeek/定义枚举名称 Monday,Tuesday,Wednesday,Thursday,Friday,Sunday/定义枚举对象的枚举值;;DayOfWeek ThisWeek;/定义了一个枚举类型的实例变量,See you later!,2.7 跟我上机,定义一个二维数组用于存储学生的学号、姓名和C#课程的考试成绩,然后输入学号、姓名和C#考试成绩,在C#中编写一个控制台应用程序,实现按C#课程考试成绩的升序和降序分别输出成绩单。,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号