c#程序设计基础_第1页
c#程序设计基础_第2页
c#程序设计基础_第3页
c#程序设计基础_第4页
c#程序设计基础_第5页
已阅读5页,还剩66页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 C# 程序设计2022/8/121浙江万里学院C#程序设计第二章 C#程序设计基础2.1 C#的值类型 2.2 常量与变量 2.3 运算符与表达式 2.4 C#的引用类型 2.5 程序的分支语句 2.6 程序的循环语句 2022/8/122浙江万里学院C#程序设计2.1 C#的值类型 一、简单类型 二、枚举型 enum三、结构型struct 返回2022/8/123浙江万里学院C#程序设计一、简单类型 1. 整数型2. 浮点型3. 小数型4. 布尔型2022/8/124浙江万里学院C#程序设计1. 整数型类型范 围长度sbyte 有符号字节型-128 1278 位byte 字节型02558

2、位char 字符型U+0000U+ffff (Unicode字符集中的字符)16位short 短整型-32,76832,76716位ushort 无符号短整型065,53516位int 整型-2,147,483,6482,147,483,64732位uint 无符号整型04,294,967,29532位long 长整型-9,223,372,036,854,775,8089,223,372,036,854,775,80764位ulong 无符号长整型018,446,744,073,709,551,61564位2022/8/125浙江万里学院C#程序设计2. 浮点型float型:取值范围在1.5e

3、45 到 3.4e38精度为7位double型:取值范围在5.0e324 到 1.7e308精度为15到16位2022/8/126浙江万里学院C#程序设计3. 小数型decimal 取值范围在1.010e28 至 7.910e28精度为28到29位 2022/8/127浙江万里学院C#程序设计4. 布尔型用来表示逻辑真或逻辑假只有两种取值:true或false 2022/8/128浙江万里学院C#程序设计二、枚举型 enum实质就是使用符号来表示的一组相互关联的数据 注意事项: 枚举元素的数据值是确定的,一旦声明就不能在程序的运行过程中更改; 枚举元素的个数是有限的,同样一旦声明就不能在程序的

4、运行过程中增减; 默认情况下,枚举元素的值是一个整数,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1; 如果需要改变默认的规则,则重写枚举元素的值即可,例如:enum MyEnuma=101,b,c,d=201,e,f;应用案例:实例2-1源代码阅读(见教材)操作演示与分析2022/8/129浙江万里学院C#程序设计三、结构型struct结构型必须使用struct来标记。结构型的成员数据成员表示结构的数据项方法成员表示对数据项的操作。内置的结构型DateTime:表示某个时间点 TimeSpan:表示某个时间段 应用案例:实例2-2源代码阅读(见教材)操作演示与分析返回struct S

5、tudent public int no; public string name; public char sex; public int score;2022/8/1210浙江万里学院C#程序设计2.2 常量与变量 一、常量 二、变量 三、数据类型转换 返回2022/8/1211浙江万里学院C#程序设计一、常量 1, 整型常量无符号整型常量在书写时添加u或U标志。长整型常量在书写时添加l或L标记。 2. 浮点型常量单精度浮点型常量在书写时添加f或F标记双精度型常量添加d或D标记。 3. 小数型常量小数型常量的后面必须添加m或M标记 4. 字符型常量 (Unicode字符):使用两个单引号来标

6、记 转义字符常量 5. 布尔型常量 :true 、false6. 字符串常量 :使用两个双引号来标记 实例2-3演示2022/8/1212浙江万里学院C#程序设计二、变量 1. 变量的概念变量名:每个变量都必须有一个名字。变量命名应遵循标识符的命名规则,如必须以字母或下划线(_)打头,只能包含英文字母、数字、和下划线,不能包含空格等。 变量值:变量值存储在内存中;不同类型的变量,占用的内存单元(字节)数不同。在程序中,通过变量名来引用变量的值。 2. 变量的定义例如:int a,b,c; 3.变量的初始化 例如: float f11.25, f23.6, f3; 实例2-4演示2022/8/1

7、213浙江万里学院C#程序设计三、数据类型转换1. 隐式转换如果参与运算的数据类型不相同,则先转换成同一类型,然后进行运算;转换时按数据长度增加的方向进行,以保证精度不降低,例如int型和long型运算时,先把int数据转成long型后再进行运算;所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算; 2. 显示转换(类型说明符) (待转换的数据) 例如:(int)(x+y) 3. System.Convert类的类型转换方法 ToBoolean 、ToByte、ToChar、ToInt32、ToSingle、ToString 返回20

8、22/8/1214浙江万里学院C#程序设计2.3 运算符与表达式 一、算术运算符与表达式 二、赋值运算符与表达式 三、关系运算符与表达式 四、逻辑运算符与表达式 返回2022/8/1215浙江万里学院C#程序设计一、算术运算符与表达式C#算术运算符包括+、-、*、/、%、+、-共七种 自增+/自减-运算符当+或-运算符置于变量的左边时,称之为前置运算,表示先进行自增或自减运算再使用变量的值,而当+或-运算符置于变量的右边时,称之为后置运算,表示先使用变量的值再自增或自减运算 例如:设变量i=1、变量j=2,则表达式+i + j 的值为4实例2-5演示2022/8/1216浙江万里学院C#程序设

9、计二、赋值运算符与表达式1. 简单赋值运算符一般形式为:变量=表达式 注意事项;如果赋值号两边的数据类型不同,则系统将自动先将赋值号右边的类型将转换为左边的类型再赋值;不能把右边数据长度更大的数值类型隐式转换并赋值给左边数据长度更小的数值类型。 2. 复合赋值运算符+=、-=、*=、/=、%=、&=、|=、=、=例如:a+=5 等价于a=a+5x*=y+7 等价于x=x*(y+7)r%=p 等价于r=r%p实例2-6演示2022/8/1217浙江万里学院C#程序设计三、关系运算符与表达式关系运算符用来对两个操作数比较,以判断两个操作数之间的关系。C#的关系运算符有=、!=、=,关系运算符的优先

10、级低于算术运算符。由关系运算符组成的表达式称为关系表达式。关系表达式的运算结果只能是布尔型值,要么是true,要么是false。例如,设置变量i=5、j=4,则关系表达式i != j的结果为true。 2022/8/1218浙江万里学院C#程序设计四、逻辑运算符与表达式C#的逻辑运算符包括!、&或&、|或|、,分别是逻辑非、逻辑与、逻辑或、逻辑异或运算。逻辑运算符的优先级低于关系运算符的优先级,但高于赋值运算符的优先级。由逻辑运算符组成的表达式称为逻辑表达式。逻辑表达式的运算结果只能是布尔型值,要么是true,要么是false。例如,设置变量i=5、j=4,则逻辑表达式 i !=j & i =

11、 j的结果为true。实例2-7演示 返回2022/8/1219浙江万里学院C#程序设计五、例子1. Int a; a=28/3%3; 求a的值2. Int k=7,x=12; 值为3的表达式是()。 a. x%=(k%=5) b. x%=(k-k%5) c. x%=k-k%5 d. (x%=k)- (k%=5)2022/8/1220浙江万里学院C#程序设计3. Int x=10,y=9,a,b,c; a=(-x=y+)? -x: +y; b=x+; c=y; 求a,b,c 的值。2022/8/1221浙江万里学院C#程序设计2.4 C#的引用类型一、类Class 二、接口Interface

12、三、委托delegate 四、数组Array 五、字符串string 六、装箱和拆箱 返回2022/8/1222浙江万里学院C#程序设计一、类Class在现实生活中,“类”是人对具有共同属性和行为的自然事物的抽象,例如把动物分为哺乳动物、爬行动物等。在程序设计中,“类”是现实世界中同类事物的进一步抽象,是最基本的编程单位,它由若干个数据成员、方法成员等组成。在C#中,“类”类型需要使用class进行标识和声明。class Student int no; string name; char sex; int score; public string Answer() string result

13、= 该学生信息如下:; result += n学号: + no; result += n姓名: + name; return result; 2022/8/1223浙江万里学院C#程序设计二、接口Interface接口是一种特殊的数据类型接口与类的关系是:接口负责声明类的标准行为,而类负责实现这些行为。使用接口来设计程序的最大好处是实现了软件设计的规范化和标准化 在C#中,“接口”类型使用interface进行标识 。案例演示:实例2-8源代码阅读操作演示与分析思考:结构与类有何区别?2022/8/1224浙江万里学院C#程序设计三、委托delegate委托就是C#提供的一种以托管机制调用方法

14、的特殊数据类型其作用与诸如房屋租赁、求职等日常活动中的中介机构类似。因此委托一旦指向某个的方法,就可以随时通过委托来调用那个方法。 一般形式如下:delegate 返回值类型 委托名称(方法参数列表)实例2-9演示 2022/8/1225浙江万里学院C#程序设计四、数组Array1. 什么是数组数组是一种由若干个变量组成的集合,数组中包含的变量称为数组的元素,它们具有相同的类型。数组元素可以是任何类型,包括数组类型。数组元素的个数称为数组的长度,数组长度为0时称数组为空数组。数组元素没有名称,只能通过索引来访问,索引从零开始。具有 n 个元素的数组的索引是从 0 到 n-12. 数组的声明和创

15、建 一般形式:数组类型 数组名 = new 数组类型数组长度 3. 数组的初始化(两种方式,见教材)4. 数组的使用:逐个引用,一般形式为数组名索引实例2-10演示2022/8/1226浙江万里学院C#程序设计 int, a=1,8,12,11,-3,-5,-6,5,32; int r=0;for(int i=0;i3;i+) for( int j=0;jj;i-=4) r+=i;k+;Console.WriteLine(r);while(Math.Abs(r)40);2022/8/1228浙江万里学院C#程序设计五、字符串string1. 字符串常量使用双引号来标记,例如,Hello Wor

16、ld 2. 字符串是一个由若干个Unicode 字符的组成字符数组。字符串可通过索引来提取字符串中的字符。例如,string s=中华人民共和国,则执行char c=s6;之后,字符型变量c的值为国 3. C#允许使用关系运算符=、!=来比较4. System.String与 System.Text.StringBuilderstring 是 System.String 的别名,可创建不可变的字符串,包含Length、Copy、IndexOf、LastIndexOf、Insert、Remove、Replace、Split、Substring、Trim等成员System.Text.StringB

17、uilder用来构造可变字符串,包含Length、Append、Insert、Remove、Replace、ToString等成员实例2-11演示2022/8/1229浙江万里学院C#程序设计六、装箱和拆箱1. 装箱意味着把一个值类型的数据转换为一个对象类型的数据,装箱过程是隐式转换过程,由系统自动完成,一般赋值运算前完成。 例如:int i = 100; object box = i;2. 拆箱意味着把一个对象类型数据转换为一个值类型数据,拆箱过程必须是显示转换过程。拆箱时先检查对象所引用的数据的类型,确保拆箱前后的数据类型相同,再复制出一个值类型数据。 int k = (int)box;

18、/拆箱正确返回2022/8/1230浙江万里学院C#程序设计2.5 程序的分支语句一、if语句 二、switch语句 返回2022/8/1231浙江万里学院C#程序设计一、if语句1. 语句结构:if (表达式) 语句1 else 语句2 2. 语句逻辑:如果表达式的值为true,则选择执行“语句1”,否则选择执行“语句2”。 3. 当省略else子句时,表示单分支结构4. 在if语句中嵌套if语句时,表示多分支结构实例2-12演示2022/8/1232浙江万里学院C#程序设计例1、输入两数a,b,比较a,b 两数大小,大数放在a 中,小数放在b中,并输出a,b的值。例2、求x的绝对值;例3、

19、输入一字符,判断该字符是大写字母、小写字母还是数字,如果都不是则输出“此字符非字母、数字”。2022/8/1233浙江万里学院C#程序设计二、switch语句1. 语句结构:switch(表达式) /只能整型、字符型或字符串表达式 /不能是关系表达式或逻辑表达式 case 常量1:语句1;break; case 常量2:语句2;break; case 常量n:语句n;break; default: 语句n+1;break;2. 语句逻辑和执行过程:请阅读教材3. C# 不支持从一个 case 标签显式贯穿到另一个 case 标签,因此在每一个 case 块的后面都必须有一个break语句实例2

20、-13演示返回2022/8/1234浙江万里学院C#程序设计2.6 程序的循环语句一、while语句 二、do/while语句 三、for语句四、foreach语句五、循环语句的嵌套六、break与continue语句返回2022/8/1235浙江万里学院C#程序设计一、while语句1. 语句结构:while(表达式) 语句;2. 语句逻辑(见右图)3. 执行过程:请参与教材4. 使用方法:使用循环控制变量来控制循环,注意在循环之前循环控制变量的初值应满足循环条件,在循环过程中,每循环一次需要修改循环控制变量的值,当循环控制变量的值将不符合循环条件时循环终止。 实例2-14演示2022/8/

21、1236浙江万里学院C#程序设计二、do/while语句1. 语句结构:do 语句; while(表达式)2. 语句逻辑(见右图)3. 执行过程:请参与教材4. while语句与do/while语句的区别前者循环体执行的次数可能是0次,而后循环体执行的次数至少是1次 实例2-15演示2022/8/1237浙江万里学院C#程序设计三、for语句1. 语句结构:for(表达式1; 表达式2; 表达式3)语句;说明:表达式1为赋值表达式,为循环控制变量赋初始值;表达式2为布尔型的表达式,用来检测循环条件是否成立;表达式3赋值表达式,用来更新循环控制变量的值,以保证循环能正常终止。 2. 语句逻辑和执

22、行过程:请参与教材实例2-16演示2022/8/1238浙江万里学院C#程序设计using System;public class Sum100 public static void Main ( ) int Sum , i ; for (Sum=0, i=1; i100) break; / 但条件满足时,break语句跳出循环。 Console.WriteLine (Sum is + Sum); Sum=0; i=1; for ( ; ; ) / 三个表达式都缺省 Sum+=i+; if (i100) / 这种情况一般都会用if语句来设置跳出循环 break; Console.WriteLi

23、ne (Sum is + Sum); 2022/8/1239浙江万里学院C#程序设计实例1、计算s=1+1/2+1/3+1/4+1/100;2、仿真一个铜板在连续100次的投掷中,出现正反面的次数。3、一竹竿长10米,每日截取一半,过多少日后,竹竿长度才会少于10厘米。2022/8/1240浙江万里学院C#程序设计4、写出程序结果:int x=10,y=1;do y+=x-;while(x5);Console.WriteLine(“0,1”,x,y);2022/8/1241浙江万里学院C#程序设计有一个for(x=0,y=0;(y!=50)&(x5);x+)。这个for循环执行几次。2022/

24、8/1242浙江万里学院C#程序设计四、foreach语句1. 语句结构:foreach(类型 循环变量 in 表达式)语句;说明:类型是循环变量的类型,应该与表达式的数据类型保持兼容,表达式一般是一个数组名或集合名。 2. 语句逻辑和执行过程:请参与教材实例2-17演示注意:不要使用foreach语句来更改集合内容,以避免产生不可预知的副作用。如果要更改数组或集合的内容,建议使用for语句 。2022/8/1243浙江万里学院C#程序设计五、循环语句的嵌套实例2-18演示2022/8/1244浙江万里学院C#程序设计六、break与continue语句1. break语句在switch语句中

25、用来跳转执行switch语句的后续语句在循环语句中用来提前终止循环,跳转出循环结构 2. continue语句 continue语句不是用来终止并跳出循环结构的,而是忽略continue后面的语句,直接进入本循环结构的下一次循环操作。实例2-18演示返回2022/8/1245浙江万里学院C#程序设计例1:int i; for (i = 1; i = 100; i+) if (i = 5) break; Console.WriteLine(i); 2022/8/1246浙江万里学院C#程序设计例2、int i; for (i = 1; i = 10; i+) if (i 9) continue;

26、 Console.WriteLine(i); 2022/8/1247浙江万里学院C#程序设计2.7 数组2.7.1 数组的定义1. 一维数组(1) 一维数组声明语法形式 type arrayName ; 其中:type可以是C#中任意的数据类型 表明后面的变量是一个数组类型,必须放在数组名之前arrayName数组名,遵循标识符的命名规则例如: int a1; / a1是一个含有int类型数据的数组double f1; / f1是一个含有double类型数据的数组 string s1; / s1是一个含有string类型数据的数组2022/8/1248浙江万里学院C#程序设计2.7.1 数组的

27、定义(2) 创建数组对象用new运算符创建数组实例,有二种基本形式。声明数组和创建数组分别进行: type arrayName ; / 数组声明arrayName = new type size; / 创建数组实例 其中:size表明数组元素的个数 声明数组和创建数组实例也可以合在一起写: type arrayName = new type size ; 例如: int a1; a1 = new int 10; / a1是一个有10个int类型元素的数组 string s1 = new string 5; / s1是含有5个string类型元素的数组2022/8/1249浙江万里学院C#程序设

28、计2.7.1 数组的定义2. 多维数组(1) 多维数组声明语法形式type , , , arrayName ;多维数组就是指能用多个下标访问的数组。在声明时方括号内加逗号,就表明是多维数组,有n个逗号,就是n+1维数组。例如: int , score; / score是一个int类型的二维数组float , , table; / table是一个float类型的三维2022/8/1250浙江万里学院C#程序设计2.7.1 数组的定义(2) 创建数组对象声明数组和创建数组分别进行: type , , arrayName ; / 数组声明arrayName = new type size1, si

29、ze2, size3; / 创建数组实例size1, size2, size3分别表明多维数组每一维的元素个数 声明数组和创建数组实例也可以合在一起写: type , , arrayName = new type size1, size2, size3 ; 例如: int , score ; score = new int 3, 4 ; / score是一个3行4列的二维数组float , , table=new float 2, 3, 4 / table是一三维数组,每维分别是2、3、42022/8/1251浙江万里学院C#程序设计2.7.1 数组的定义(3) 不规则数组一维数组和多维数组都

30、属于矩形数组,而C#所特有的不规则数组是数组的数组,它的内部每个数组的长度可以不同,就像一个锯齿形状。不规则数组声明 type arrayName ;方括号 的个数与数组的维数相关。例如: int jagged ; / jagged是一个int类型的二维不规则数组创建数组对象以二维不规则数组为例:int jagged;jagged = new int 3 ;jagged0 = new int 4;jagged1 = new int 2;jagged2 = new int 6;2022/8/1252浙江万里学院C#程序设计2.7.2 数组的初始化1. 一维数组初始化语法形式1:type arra

31、yName = new type size val1, val2, ,valn ;数组声明与初始化同时进行时,size也就是数组元素的个数必须是常量,而且应该与大括号内的数据个数一致。语法形式2: type arrayName = new type val1, val2, ,valn ;省略size,由编译系统根据初始化表中的数据个数,自动计算数组的大小。语法形式3: type arrayName = val1, val2, ,valn ;数组声明与初始化同时进行,还可以省略new运算符。语法形式4: type arrayName ;arrayName = new type size val1

32、, val2, ,valn ;2022/8/1253浙江万里学院C#程序设计2.7.2 数组的初始化例如: 以下数组初始化实例都是等同的。int nums = new int 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;int nums = new int 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;int nums = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;int nums ;nums = new int 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;2022/8/1254浙江万里学院C#程序设计2.7.2 数组的

33、初始化2. 多维数组初始化语法形式1: type , arrayName = new type size1, size2 val11, val12, ,val1n , val21, val22, ,val2n , valm1, valm2, ,valmn ;数组声明与初始化同时进行,数组元素的个数是size1*size2,数组的每一行分别用一个花括号括起来,每个花括号内的数据就是这行的每一列元素的值,初始化时的赋值顺序按矩阵的“行”存储原则。语法形式2: type arrayName = new type , val11, val12, ,val1n , val21, val22, ,val2

34、n , valm1, valm2, ,valmn ;省略size,由编译系统根据初始化表中花括号的个数确定行数,再根据内的数据确定列数,从而得出数组的大小。2022/8/1255浙江万里学院C#程序设计2.7.2 数组的初始化语法形式3: type , arrayName = val11, val12, ,val1n , val21, val22, ,val2n , valm1, valm2, ,valmn ;数组声明与初始化同时进行,还可以省略new运算符。语法形式4: type , arrayName ;arrayName = new type size1, size2 val11, va

35、l12, ,val1n , val21, val22, ,val2n , valm1, valm2, ,valmn ;把声明与初始化分开在不同的语句中进行时,size1,size2同样可以缺省,但也可以是变量。例如: 以下数组初始化实例都是等同的。int , a = new int 3,4 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ;int , a = new int , 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ;int , a = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ;int a ;a =

36、 new int 3, 4 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ;2022/8/1256浙江万里学院C#程序设计2.7.2 数组的初始化3. 不规则数组初始化不规则数组是一个数组的数组,所以它的初始化通常是分步骤进行的。type arrayName = new type size ;size可以是常量或变量,后面一个中括号 内是空着的,表示数组的元素还是数组且这每一个数组的长度是不一样,需要单独再用new运算符生成。arrayName0 = new type size0 val1, val2, , valn1;arrayName1 = new type s

37、ize1 val1, val2, , valn2; 例如: char st1 = new char 3 ; / st1是由三个数组组成的数组st10 = new char S, e, p, t, e, m, b, e, r ;st11 = new char O, c, t, o, b, e, r;st12 = new char N, o, v, e, m, b, e, r ;2022/8/1257浙江万里学院C#程序设计2.7.3 数组元素的访问1. 一维数组的引用一维数组的引用语法形式: 数组名下标【例2.16】定义一个数组,存放一组数据,找出这组数中最大数和最小数。using System

38、;class MaxMin static void Main(string args) int max, min; int queue = new int10 89, 78, 65, 52, 90, 92, 73, 85, 91, 95 ; max = min = queue0; for (int i = 1; i max) max = queuei; if (queuei min) min = queuei; Console.WriteLine(最大数是0,最小数是1, max, min); Console.Read(); 2022/8/1258浙江万里学院C#程序设计2.7.3 数组元素的访问运行的结果如图2.15所示。2022/8/1259浙江万里学院C#程序设计2.7.3 数组

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论