收藏 分销(赏)

C#程序设计课件整套教学教程全套电子讲义讲义.ppt

上传人:精**** 文档编号:12068180 上传时间:2025-09-05 格式:PPT 页数:722 大小:10.61MB 下载积分:25 金币
下载 相关 举报
C#程序设计课件整套教学教程全套电子讲义讲义.ppt_第1页
第1页 / 共722页
C#程序设计课件整套教学教程全套电子讲义讲义.ppt_第2页
第2页 / 共722页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,学习目标,了解C#程序设计语言发展过程及其特点,掌握C#程序的基本结构和开发工具,掌握C#程序的基本输入/输出语句,了解本课程的学习目标和技能要求,第1章 绪论,主要内容,1.1 C#简介,1.2 Visual Studio 2010开发环境,1.3 简单的C#程序,1.4 基本输入/输出,1.1.1 Visual C#.NET简介,C#,是微软公司在,2000,年,7,月发布的一种全新的简单、安全、面向对象的程序设计语言。,通常,我们对于,C#,和,Visual C#.NET,可以不加区分,但严格地说,两者是有区别的。,C#,只是一门语言或者说是一个标准,它是专门为微软的,.NET,平台设计的。作为,Visual Stdio.NET,套件中的语言之一,充当了微软推行,.NET,战略的拳头产品。但是,难保今后不会出现其他使用,C#,语言的开发工具(就像有,Visual C+,和,C+Builder,一样)。,Visual C#.NET,则是指,“,C#,语言,+.NET,框架,”,。,1.1 C#简介,1语言的变化,C#是在C、C+的基础上改进而来的,作为一种全新的语言,它继承了C、C+的强大功能,同时,吸收了Visual Basic语言的简单易用特点。虽然从整体来说,它基本继承了C语言的语法风格,但还是有明显的区别和改进,具体的语言变化细节将在本书中的各处体现。,2,.NET,框架支持,Visual C#.NET完全集成了.NET框架。.NET框架封装了传统的Windows API,为用户提供了全新的编程接口,并吸收了微软20世纪90年代中后期发展的各种新技术(COM+组件、ASP技术、XML支持等),为程序提供了对语言互操作性、垃圾回收、增强的安全性和改进支持。,1.1.2 Visual C#.NET特点,1与C、C+的关系,C#,是从,C,、,C+,语言演变改进而来的。,C#,基本上继承了,C,语言的语法风格,同时,又从,C+,那里继承了面向对象特性。但是,它们之间的不同点也是很明显的。主要体现有:第一,,C#,的对象模型已经面向,Internet,进行了重新的设计,使用的是,.NET,框架的类库,与,C+,的对象模型结构完全不一样。第二,,C#,语言不再提供对指针类型的支持,使得程序不能随便访问内存地址空间,从而更加健壮。第三,在面向对象技术方面,,C#,不再支持多重继承,避免了以往类层次结构中由于多重继承带来的可怕后果。相应的功能可以通过对接口的多重继承来实现。,1.1.3 C#与其他语言的关系,2,与,Java,相比较,C#,与,Java,极其相似,甚至超过了,C#,与,C,、,C+,的相似程度,不过,两者还是有区别的。例如,,Java,通过虚拟机来实现平台的可移植性,而,C#,则是首先被编译成一种中间语言,然后,在执行时由公共语言运行时中的即时编译器编译本机代码交由,CPU,处理。而且,,Java,虚拟机只能执行,Java,程序,而即时编译器能够编译任何,.NET,框架支持的语言(如,C#,、,Visual Basic,、,J#,)编写的程序。,1.1.3 C#与其他语言的关系(续),1.2 Visual Studio 2010开发环境,Microsoft Visual Studio 2005、2008、2010等都可以作为C#程序的开发平台。本教材采用Visual Studio 2010集成开发环境,作为C#程序的开发平台。,本教材的所有源程序代码都在Visual Studio 2010集成开发环境中测试通过,但也同样适合Microsoft Visual Studio 2005、2008等集成开发环境。读者可以自主选择不同版本的开发环境。,1.2.1 起始页窗口,单击,“,开始程序Microsoft Visual Studio 2010Microsoft Visual Studio 2010,”,菜单 项。VC 2010开发环境,进入起始页。可以看到,整个起始页窗口主要包含7个区域:菜单栏、工具栏、工具箱、解决方案资源管理器、输出窗口、状态栏和中间的起始页,如图1-1所示。,1.2.2 菜单栏和工具栏,1.菜单栏,菜单栏中包括了VC 2010的大多数功能,菜单项目众多,但随着不同的项目、不同的文件会进行动态变化。此处就不对所有的菜单进行一一介绍了,而只对常用的,“,文件,”,菜单、,“,编辑,”,菜单和,“,视图,”,菜单进行简单介绍。,2.工具栏,工具栏提供了最常用的功能按钮。对工具栏的熟悉可以大大节省工作时间,提高工作效率。同菜单一样,Visual Studio 2010的工具栏也是动态变化的。随着工作的不同,工具栏也不尽相同。工具栏的内容还可以根据个人的使用习惯进行自定义,以方便不同开发人员的使用。,1.2.3 工具箱,工具箱是Visual Studio 2010的重要工具,它提供了进行Windows窗体应用程序开发所必须的控件。,图1-3 工具箱图示1 图1-4 工具箱图示2,1.2.4 类视图面板,“类视图”面板是一个非常方便的工具,该面板提供了观察类结构的非常直观的功能。通过“类视图”面板可以对类的内部构造进行方便的查看。图1-5即为使用“类视图”面板查看类结构的示意图。,图1-5,“,类视图,”,面板,1.2.5 代码编辑器/窗体设计器,代码编辑器提供了强大的代码编辑功能,当打开或新建一个项目时,就会在,“,起始页,”,的位置打开代码编辑器和窗体设计器。如图1-6所示。,窗体设计器用来设计程序的用户界面,初始显示一个空的窗体代码编辑器用来编辑项目的源代码。,通过选择,“,视图,”,菜单中的,“,代码,”,和,“,设计器,”,菜单项在代码编辑器和窗体设计器之间切换,也可以单击解决方案资源管理器窗口上部的,“,查看代码,”,和,“,视图设计器,”,按钮切换。,1.2.6 属性面板,“,属性,”,面板是VC2010中另一个重要的工具。对窗体应用程序开发中的各个控件的属性修改都可以由,“,属性,”,面板来完成。还提供了事件的管理功能。,“,属性,”,面板可以管理控件的事件,方便编程时对事件的处理。,“,属性,”,面板同时采用了两种方式管理属性和方法,即按分类方式和按字母顺序方式。图1-7是按分类方式列出窗体属性的,“,属性,”,面板。,图1-7,“,属性,”,面板,1.2.7 定制开发环境,(1)选择,“,自定义,”,命令时,会打开,“,自定义,”,对话框,如图1-8所示。其中有两个选项卡:,“,工具栏,”,和,“,命令,”,。,(2)选择,“,选项,”,命令时,会打开,“,选项,”,对话框,如图1-9所示,这里是设置继承开发环境的重要场所。,图1-8,“,自定义,”,对话框,图1-9,“,选项,”,对话框,1.3.1 创建C#程序项目,创建,C#,控制台应用程序,操作步骤如下:,(1)选择,“,文件,”,“,新建,”,“,项目,”,命令,打开,“,新建项目,”,对话框,如图下图所示。,1.3 简单的C#程序,(2),在,“,新建项目,”,对话框中,在,“,模板,”,列表框中选择,“,控制台应用,”,选项。,(3),单击,“,确定,”,按钮,V,isual Stdio 2010,就创建了MyWelcome项目及程序框架。,1.3.1 创建C#程序项目(续),【例1-1】第一个C#程序。,using System;,using System.Collections.Generic;,using System.Linq;,using System.Text;,namespace MyWelcome,class Program,static void Main(string args),Console.WriteLine(欢迎使用C#);,为了在窗口中显示,“,欢迎使用C#,”,字符串。必须在Main()函数中添加C#语句:Console.WriteLine(欢迎使用C#);,1.3.2 编写C#程序代码,从“生成”菜单中选择“重新生成MyWelcome”命令。这时,C#编译器将会开始编译、连接程序,并最终生成可以执行文件。在编译程序时,将会打开一个输出窗口显示编译过程中所遇到的错误和警告等信息。下图显示了在没有错误情况下编译的结果窗口。,1.3.3 编译、连接与运行,当在编译过程中出现错误时候(为了说明出现错误的情况,在源代码中添加一行错误的语句),就会打开如下图所示,“,错误列表,”,窗口,并在其中列出编译过程中所遇到的每一个条错误,用户可以通过双,“,错误列表,”,窗口中的错误项直接跳到对应的代码行。,1.3.3 编译、连接与运行(续),使用,“,调试,”,“,开始调试,”,命令或者工具栏目的调试按钮或者直接按下F5键;要直接运行程序,则使用,“,调试,”,“,开始执行,”,命令或Ctrl+F5键。运行本例子中的程序,将显示下图所示的窗口。,1.3.3 编译、连接与运行(续),1命名空间,命名空间的定义形式如下:,namespace 命名空间名称,一些类的定义,C#,程序是用命名空间来组织代码,要访问某个命名空间中的类或者对象,必须用如下语法:,命名空间.类名,1.3.4 C#程序结构分析,2类,C#要求程序中每一个元素都要属于一个类,程序MyWelcome第6行class Program,声明了一个类,类的名字叫Program。这个程序的功能就是依靠它来完成,C#程序由于大括号“”和“”构成,程序每一对大括号“”构成一个块,大括号成对出现,可以嵌套,即块内可以出现子块,嵌套深度不受限制,可以嵌套任意层,但一定要保证“”和“”成对出现,否则,程序就是错误的。,1.3.4 C#程序结构分析(续),4Main()方法,(1)Main()方法是被包含在类Program所带的一对大括号内,并且该大括号中所有部分都是Program类的成员。,(2)在C#程序中,程序执行总是从Main()方法开始的,一个C#程序中不允许出现两个或者两个以上的Main()方法,而且C#中Main()方法必须包含在一个类中。,1.3.4 C#程序结构分析(续),5注释,两种注释方法:,(1)每一行中“/”后面的内容作为注释内容,该方式只对本行生效;,(,2,)需要多行注释的时候,在第一行之前使用,“,/*,”,,在末尾一行之后使用,“,*/,”,,也就是说被,“,/*,”,与,“,*/,”,所包含的内容都作为注释内容。,1.3.4 C#程序结构分析(续),1.4.1 Console.WriteLine()方法,1.WriteLine()方法的一般形式,(1),“,格式控制,”,是用双引号括起来的字符串。采用,“,N,M:格式化字符串,”,形式来格式化输出字符串,其中:,1)花括号,“,”,用来在输出字符串中插入变量。,2)N表示输出变量的序号,从0开始,如当N为0时,则对应输出第一个变量的值,当N为1时,则对应输出第2个变量的值,,依此类推。,格式:WriteLine(格式控制,输出列表);,功能:按指定的格式,把指定的任意类型的数据显示在屏幕上.,1.4 输入/输出操作,(2),“,输出列表,”,是一些与,“,格式控制,”,中的格式字符一一对应的需要输出的数据,是以逗号相间隔的常量、变量或表达式。,例如:,int a=1,b=2;,Console.WriteLine(0,a);/输出变量a,结果1,Console.WriteLine(0 1,a,b);/输出变量a、b,结果1 2,1.4.1 Console.WriteLine()方法(续),2.格式控制的几种形式,(1)N,M形式,其中M表示输出的变量所占的字符个数,当这个变量为负数时,输出的变量按照左对齐;正数时,按照右对齐。,例如:int a=123456;,Console.WriteLine(a=0,-8,a);/输出结果:/a=123456(注:其中 表示空格字符),Console.WriteLine(a=0,8,a);/输出结果:,/a=123456,1.4.1 Console.WriteLine()方法(续),2.格式控制的几种形式,(2)N:格式化字符串形式,因为在向控制台输出时,常常需要指定输出字符串的格式.,例如:int k=1234;,Console.WriteLine(0:D,k);/输出结果是1234,Console.WriteLine(0:d4,k);/输出结果是1234,Console.WriteLine(0:d5,k);/输出结果是01234,1.4.1 Console.WriteLine()方法(续),2.格式控制的几种形式,(3)N,M:格式化字符串形式,可指定对齐方式、占用宽度以及小数点位数等.,【例1-3】利用Console.WriteLine()方法输出变量。,static void Main(string args)/程序的入口,int a=12345;double b=123.45678;,Console.WriteLine(a=0,8:D,b=1,8:F3,a,b);,Console.WriteLine(a=0,-8:D,b=1,-8:F3,a,b);,运行结果如下:a=,12345,b=123.4567,a=12345,b=123.457,1.4.1 Console.WriteLine()方法(续),Write()方法和WriteLine()方法类似,但使用Write()方法时,信息输出到屏幕后并不会产生一个新行,即换行符不会连同输出信息一起输出到屏幕上,光标将停留在所输出信息的末尾。,int a=12345;double b=123.45678;,Console.Write(a=0,8:D,b=1,8:F3,a,b);,Console.Write(a=0,-8:D,b=1,-8:F3,a,b);,运行结果如下:,a=12345,b=123.4567 a=12345,b=123.457,1.4.2 Console.Write()方法,ReadLine()方法从控制台读取一行数据,并不接收回车键。如果没有接收到任何输入,或者接收了无效的输入,那么ReadLine()方法将返回null。,【例1-5】利用ReadLine()方法接收用户的输入,然后输出,static void Main(string args)/程序的入口,string str;,Console.WriteLine(请输入你的姓名:);,str=Console.ReadLine();,Console.WriteLine(“0,欢迎你!”,str);,运行结果是:,请输入你的姓名:,小李,小李,欢迎你!,1.4.3 Console.ReadLine()方法,注意,ReadLine()方法类似于C语言中的输入函数scanf()。但ReadLine()方法只能接收字符串类型数据的输入,对于数值类型的数据(如int、float等)需要转换。,例如:若要输入整数123,必须将其作为字符串123输入,然后再将字符串123转化为整数123。,int a;,string s=Console.ReadLine();/把整数作为字符串存储在s中,a=int.parse(s);/将数字字符串转换成整数,【例1-6】利用ReadLine()方法输入两个整数,计算其和并输出。,static void Main(string args),int a,b,c;,Console.WriteLine(“请输入两个整数:”);/等效printf();,a=int.Parse(Console.ReadLine();/等效scanf(%d,b=int.Parse(Console.ReadLine();/等效scanf(%d,c=a+b;,Console.WriteLine(0+1=2,a,b,a+b);,运行结果如下:,请输入两个整数:,12(按回车键),59(按回车键),12+59=71,注意,输入两个数时,不能在同一行中以空格来分隔输入,因为字符串是以回车作为驶入结束.所以,每输入一个数时必须回车.,模仿练习,利用输入/输出方法(ReadLine()/WriteLine()),从键盘任意输入两个整数,分别进行加减、乘、除四则运算,使之满足如下要求。,运行结果如下:,请输入2个整数:,125(按回车键),12+5=17,12-5=7,12*5=60,12/5=2,Read()方法一次只能从输入流读取一个字符,并且直到用户按回车键才会返回。如果输入流中包含有效的输入,则它返回一个表示输入字符的整数;如果输入流中没有数据,则返回-1。,如果用户输入了多个字符,然后按回车键此时输入流中将包含用户输入的字符加上回车键r(13)和换行符n(10),则Read()方法只返回用户输入的第一个字符,但是,用户可以通过多次调用Read()方法来获取所有输入的字符。,1.4.4 Console.Read()方法,【例1-7】通过Console.Read()方法从控制台接收用户的输入,然后显示接收的内容。,static void Main(string args),Console.Write(请输入字符:);,int a=Console.Read();,Console.WriteLine(你输入的字符是:0,其ASCII码是:1,(char)a,a);,运行结果如下:,请输入字符:ASD(回车),你输入的字符是:A,其ASCII码是:65,利用输入/输出方法(Read()/Write()),从键盘任意输入一个串字符,然后显示在屏幕上。,提示:当按回车键时,输入流中将包含用户输入的字符加上回车键,r,(13)和换行符,n,(10)。,模仿练习,1.编写一个简单的C#程序,输出如下内容:,/*,*How are you!*,*/,2.定制Visual Studio.NET的集成开发环境。,操作题,第2章 数据类型、运算符和表达式,了解C#+语言的标识符和关键字,熟悉C#+语言的数据类型及其相互转换,掌握C#+语言中变量的定义、初始化,掌握C#+语言的运算符、表达式及使用方法,学习目标,主要内容,2.1 关键字和标识符,2.2 常量与变量,2.3 基本数据类型,2.4 运算符与表达式,2.5 情景应用,案例拓展,2.1,关键字和标识符,2.1.1 关键字,关键字又称保留字,是一种有特殊用途的标识符。由系统预先定义好的,不能用于其它目的。,C#中有七十多个关键字,这些关键字都有自己的用途。,C#的常见关键字参见教材表2-1。,2.1.2 标识符,C#+语言标识符的命名应遵循以下规则:,(1)标识符只能由字母(az,AZ)、数字(09)和下划线三种字符组成,且第一个字符必须为字母或或下划线。,(2)关键字(或称保留字)不能作标识符。如果一定要用C#的关键字作为标识符,应使用“”字符作为前缀(但我们不推荐这样做)。,(3)允许在标识符中使用Unicode转义符。,2.1.2 标识符(续),例如:,num,_ax,a3,file_1,Abc,FnFact/正确,,标识符第一个字符,/为字母或下划线,int,abstract /正确,关键字作标识符,,/且“”字符为前缀,!num,x$,a#,a+b /错误,“!”,“#”,“+”,/是非标识符字符,4x,7a /错误,第一个字符不能是数字,case,int,char /错误,关键字不能作标识符,2.1.2 标识符(续),注意,(1)英文字母的大小写代表不同的标识符,即大小写敏感,,例如:,inum,INUM,iNum;/3个不同的标识符,(2)ANSI标准规定,标识符可以任意长度,但必须至少由前8个字符唯一地区分,这是因为某些编译程序(如IBM PC的MS C)仅能识别前8个字符。,2.1.3 中文标识符,C#采用了Unicode技术,因此支持使用中文作为标识符。例如,例1-3程序可以使用以下代码实现。,static void Main(string args),int 变量1=12345;,double 变量2=123.45678;,Console.WriteLine(变量1=0,8:D,变量2=1,8:F3,变量1,变量2);,Console.WriteLine(变量1=0,-8:D,变量2=1,-8:F3,变量1,变量2);,注 意,(1)建议读者不要使用中文作为标识符。,(2)本书为了读者学习的方便,在注释中基本使用中文,建议读者使用英文注释。,模仿练习,判断下列标识符的合法性,并说明理由。,A3,-a,_3a,a#,good,iSum,fnMax2,a+5,double,2.1.4 标识符的命名约定,除了遵循标识符的命名原则外,为了提高代码的可读性,一般使用一个命名约定规范标识符的使用,应尽量遵循编程规范。,不同的组织和机构可能有自己的命名约定。为了让标识符更加可读,经常会遇到一个标识符用了多个单词的情况。根据标识符的用途,如表2-2所示有两种常用的命名约定。,2.1.4 标识符的命名约定(续),表2-2 Pascal和Camel两种风格的命名约定,风格的名称,说 明,建 议,样 例,Pascal风格,标识符中每个单词的首写字母均大写,常用于类名及成员变量命名,PublishDate,ItemName,Person,Camel风格,首字母小写,其余每个单词的首写字母均大写,常用于局部变量和方法参数,startDate,time,item,全部大写,标识符由全大写组成,常用于缩写词,XML,SOA,大写且使用下划线分隔,标识符由大写字母组成,多个单词使用下划线分隔,常用于常量,DATA_FILE,2.1.4 标识符的命名约定(续),(1)标识符的命名最好有相关的含义。应做到“见名知意”,以增加程序的可读性。例如:iWidth(表示宽度)、iSum(表示求和)、time(表示时间)、PI(表示圆率)。,(2)对于一些简单验证性例子,建议不必拘泥于特定的命名风格。否则,反而给初学者增加难度。,注意,2.2 常量与变量,C#程序处理的数据分为常量和变量,二者的区别在于:在程序的执行过程中,变量的值是可以改变的,而常量的值是不变的。,2.2.1 常量,常量是在程序中不能改变的量。它通常可以分为数字常量和符号常量,1,整型常量,整型常量可用以下几种形式表示:,十进制整数,如:34、0、-56等。,八进制整数,为了与十进制数区别,八进制整数以0开头,后跟若干个07的数字。,十六进制整数,为了与十进制整数和八进制整数区别,以0 x或OX开头,后跟若干个09及af,af分别表示十进制整数1015。,2.2.1 常量(续),2.实型常量,实数又称为浮点数,一般有两种书写形式:,一般形式,就是平时写实数的形式。,指数形式,在C#中,指数形式表示为:,E,例如,-1.234e+2、3.45-02、.89E3、456e-002等都是正确的指数表示形式。其中e(或E)前面的数字表示尾数,e(或E)后面的整数表示指数。如1.234E+3表示1.234103。,2.2.1 常量(续),3字符常量,字符常量是用单引号(即撇号)括起来的一个字符。如a,b,1,$等都是字符常量,占16位,以无符号整型数的形式存储字符所对应的Unicode代码。,例如:,a,b,1,$,A、#/正确的字符常量,AB、AB、a /错误的字符常量,2.2.1 常量(续),4.字符串常量,(1)常规字符串,双引号括引起的一串字符,可以包括转义字符。,例如:“china”,“”,“teacher and student”,“a”等都是字符串常量。,(2)逐字字符串,在常规字符串前面加一个,就形成逐字字符串。例如:,C:windowsMicrosoft,/与C:windowsMicrosoft含义相同,He said Hello to me,/与He said Hello to me含义相同,2.2.1 常量(续),5.布尔型常量,通常表示真假用布尔常量:,false表示假,true表示真,。,6.,符号常量,在声明语句中,可以声明一个标识符常量。,具体格式为:const 类型 标识符=初值,例如:,const double PI=3.14159,2.2.2 变量,在程序执行过程中其值可以改变的量叫变量。,1变量的定义,;,或,,,,;,例如:,int a,x,y;,/定义了3个整型变量a,x,y,char b;,/定义了1个字符型变量b,float c,d;,/定义了2个实型(单精度)变量c,d,double u,v;,/定义了2个实型(双精度)变量u,v,2.2.2 变量(续),说明,(1)变量名字是一个标识符,所以必须符合标识符的命名规则。,例如:,a,_abc,、AREA、x1、x2 /合法的变量名,4ac、#g、a+1、fn!a、a$/不合法的变量名,(2)变量名标明数据在内存中的地址,由系统为每个变量名分配存储空间。对变量的存取操作,是通过变量名找到相应的内存地址,然后从其存储单元存取数据。,(3)声明类型的目的是告诉系统变量需要占用的存储单元数目,以便系统为变量分配相应的存储单元。比如,一个整型(int)变量占用4个字节,一个双精度实型(double)变量则占用8个字节。,2.2.2 变量(续),2.变量的初始化,int a=2;,/定义a为整型变量,初值为2,char b=A;,/定义b为字符型变量,初值为A,double x=2.1234;,/定义x为实型变量,初值为2.1234,也可对被定义的变量的部分变量进行初始化。如,int u,v=100,w;,/定义u,v,w为整型变量,v的初值为100,注意,如果变量定义时没,赋,有初,值,始化,那么对于局部变量的值是不确定的,而全局变量的值是0(请参见第5章)。,2.2.2 变量(续),【例2-2】字符变量的定义和用法。,static void Main(string args),char c1,c2;/定义字符型变量c1,c2,c1=a;/将字符常量a赋值给变量c1,c2=u0041;/将字符常量u0041赋值给变量c2,Console.WriteLine(c1=0,c2=1,c1,c2);,运行结果如下:,c1=a,c2=A,2.2.2 变量(续),模仿练习,使用定义字符型变量的方法,编程输出英文单词How are you。,2.3 基本数据类型,2.3.1 值类型,1数值类型,C#,中常用的数值类型如表,2-4,所示。,全称,简称,说 明,字节,取值范围,System.Boollean,bool,true,或,false,System.Byte,byte,8位无符号整数,1,0255,System.SByte,sbyte,8位无符号整数,1,-128127,System.Char,char,16位Unicode字符,2,065535,System.Int32,int,32位有符号整数,4,-21474836482147483647,System.Int16,short,16位有符号整数,2,-3276832767,2.3.1 值类型(续),说明,(1)表中的简称就是C#中为相应的数值类型所设置的关键字。可以选择全称和简称中的任意一种作为变量的声明。例如:,System.Int32 x;/全称方式,intx;/简称方式,(2)布尔类型是用来表示“真”和“假”这两个概念的。因此布尔类型表示的逻辑变量只能用两种取值:“真”或“假”。分别采用true或false两个值来表示。,2.3.2 引用类型,引用类型不存储它们所代表的实际值,而是指向所要存储的值,即引用类型存储的实际数据是当前的引用的地址。,1.字符串类型,在C#语言中,字符串类型是引用类型,其表示零个或多个Unicode字符组成的序列。用关键字string表示,它是系统内建的,“,类,”,类型,它封装了字符串所拥有的数据、排序和搜索等操作。,例如:,string dir=d:myvc#;,string str=Hello;,2.3.2 引用类型,(续),【例2-4】字符串的初始化示例。,static void Main(string args),string s=早上好!Good Morning!;,for(int i=0;i,大于,ab,a大于b,同级,高,低,=,大于等于,a=b,a大于等于b,小于,ab,a小于b,=,小于等于,a=b,a小于等于b,=,等于,a=b,a等于b,同级,!=,不等于,a!=b,a不等于b,2关系表达式,一般形式为:,表达式1 关系运算符 表达式2,【例2-15】关系表达式。,static void Main(string args),bool z;,z=3+5=2*4;/即判断(35)是否等于(2*4)z=True,Console.WriteLine(z=0,z);,z=2 5-3;/等价于(2(5-3),z=Fase,Console.WriteLine(z=0,z);,运行结果如下:,Z=Tree,Z=False,模仿练习,1.写出表达下列条件的关系表达式:,(1)x为负数 (2)x为奇数 (3)x不能被3整除 (4)x为非负数,2.设 a=-1,b=3,计算表达式+a+b0)|(y8);,Console.WriteLine(z=0,z);/z=1表示true,z=(x=0),Console.WriteLine(z=0,z);/z=0表示false,z=!(x=2);,Console.WriteLine(z=0,z);/z=0表示false,运行结果如下:,z=True,z=1,z=False,z=False,3.逻辑表达式的应用,分析:X参加用 X=1,不参加用 X=0表示;则描述如下:,(1)A+C=2,(3)C+D=2|C+D=0 (4)C+D+E=2,【例2-17】A、B、C、D、E 共5名学生有可能参加某次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到一些条件的制约。请用逻辑表达式表达如下的条件:,(1)A和C中只能有一个人参加;(2)A、B、C、E 中至少有2人参加;,(3)C和D或者都参加,或者都不参加;(4)C、D、E中至多只能2人参加;,模仿练习,1.写出表达下列条件的表达式,。,:,(1)x为负数或大于10的数,(2)x能被3整除,但不能被5整除,2.有A、B、C、D四人是否参加会议,,受到一些条件的制约。请用逻辑表达式表达如下的条件,。,:,(1)A、B、C中最多一人不参加,(2)A和C有且只有一个人参加,2.4.4 位运算和位运算符,所谓位(bit)运算,是指对一个数据的某些二进制位进行的运算。,C#语言提供6种位运算符,如表2-8所示。,位运算符,含 义,位运算符,含 义,&,按位与,取反,|,按位或,右移,2.4.4 位运算和位运算符(续),【例2-19】分析以下程序的执行结果。,static void Main(string args),uint a=0 x1234;/0001,0010,0011,0100=1234(前面16位均为0),uint b=a48d0(前面16位均为0),uint c=a2;/0000,0100,1000,1101=048d(前面16位均为0),uint d=b/0000,0000,1000,0000=0080(前面16位均为0),uint e=b|c;/0100,1100,1101,1101=4cdd(前面16位均为0),uint f=bc;/0100,1100,0101,1101=4c5d(前面16位均为0),uint g=a;/1110,1101,1100,1011=edcb(前面16位均为0),Console.WriteLine(a=0:x,b=1:x,c=2:x,d=3:x,a,b,c,d);,Console.WriteLine(e=0:x,f=1:x,g=2:x,e,f,g);,2.4.5 条件运算符,表达式1?表达式2:表达式3,如果“表达式1”的值为非0(真),则条件表达式的运算结果等于“表达式2”的值,否则,运算结果等于“表达式3”的值。,求x的绝对值,用条件运算符处理为:,y=(x=0)?x:-x;,2.4.5 条件运算符(续),【例2-20】从键盘输入两个整数并输出较大数(用条件表达式求解)。,static void Main(string args),int a,b,max;,Console.WriteLine(请输入2 个整数 a,b:);,a=int.Parse(Console.ReadLine();,b=int.Parse(Console.ReadLine();,max =a b?a :b;,Console.WriteLine(max=0,max);,2.4.7 运算符的优先级与结合顺序,(1)算术、关系、逻辑、赋值混合运算的优先级如下所示:,!(非)算术运算 关系运算&|赋值运算,(2)当操作数出现在具有相同优先级的两个运算符之间时,要依据运算符的结合性决定哪个运算符先参加运算。赋值运算符和条件运算符从右向左运算,例如:,a=b=c;将按,a=(b=c);,顺序运算。除此之外,其它均从左到右运算。也可通过括号来改变优先级,如a*(b+c).,第3章 结构化程序设计,学习目标,掌握程序的三种基本结构概念,熟悉选择结构和循环结构的条件构成,掌握break、continue语句的执行流程和使用方法,较熟练地使用C#的三种基本结构,进行程序设计,主要内容,3.1 顺序结构,3.2 选择结构,3.3 循环语句,3.4 break、continue和goto语句,3.5 情景应用案例拓展,3.1 顺序结构,3.1.1 简单赋值语句,=;,3.1.2 复合赋值语句,=;,等价于,=;,3.1 顺序结构(续),【例3-1】赋值语句。,int x,y;/定义整型变量x,y,x=3;/将右边数据3值赋给左边的变量x,y=x+5;/将右边表达式(x+5)的值8赋给左边的变量y,【,例3-2,】理解赋值运算符。,static void Main(string args),int x,y;,x=5;y=6;,x+=y;/等价于x=x+y;,y*=2;/等价于y=y*2;,Console.WriteLine(x=0,y=1,x,y);,运行结果如下:,x=11,y=12,3.2 选择语句,3.2.1 if语句,1.单分支if语句,格式:,if(表达式)语句;,功能:如果表达式的值为“真”(true),则执行语句;否则不执行该语句。其流程图如图3-2所示。,假(true),真(true),表达式,语句,图3-2,单分支流程图,单分支if语句,【例3-3】编写一个单分支结构程序,用于显示用户输入数据的绝对值。,解题分析:,问题转化为求y=|x|。如果x0,则y取x的值是正确的,则维持原值,不做修改;如果x0,则y取x的值是错误的,需重新为y取-x的值;最后输出x和y的值。,单分支if语句(续),static void Main(string args),float x,y;,Console.Write(请输入x:);,x=float.Parse(Console.ReadLine();,y=x;,if(x=0)y=x;,else y=-x;,Console.WriteLine(y=|0|=1,x,y);,运行结果如下:,请输入x:-30.5(回车),y=|-30.5|=30.5,模仿练习,利用单分支if语句,判断输入的整数是否是3的倍数,但不是5的倍数。,2.,编写一个双分支结构程序,从键盘,输入两个整数,求其中较大数并输出。,3多分支if 语句,格式:,if(表达式1)语句1,else if(表达式2)语句2,else if(表达式n)语句n,else 语句n+1,功能:当出现某个值为真时,则执行其对应的语句,然后跳到整个if语句之外继续执行后续程序。如果所有的表达式均为假,则执行语句n+1,然后继续执行后续程序。如图3-4所示。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服