版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章C#编程基础主讲人:XXX——面向对象程序设计C#编程基础基本数据类型
2变量与常量
1面向对象程序设计初步
32.1变量与常量2.1.1变量的含意2.1.2变量声明2.1.3常数2.1.1变量的含意假设有两数为x、y,我们想求出两者之和,这在数学中表示为:x+y。要在程序中计算x、y的和,我们必须首先声明将要指定给它们的数据类型。为其赋值之后,才能计算其和。
假设x、y都是整数。为了声明指定给它们的数据类型是整数,可编写如下语句:
intx;
inty;
进行此声明后,即为x和y分配了存储数据值的存储位置。
这些存储位置称为“变量”。而x和y是与存储位置关联的名称,称为变量名。做出上述声明之后,x和y的值只能是整数值。我们使用赋值运算符“=”给x和y赋值。例如:
x=100;
y=98;
此时x的值是100,y的值是98。2.1.2变量声明在C#中,使用变量之前,必须首先声明它。声明变量的一般格式为:数据类型变量名;如何命名变量?给变量分配有意义的名称;使用大小写混合方案。该方案要求变量名的首字母小写,变量名中每个单词的首字母大写。如newAccountBalance切忌使用C#的关键字虽然C#区分大小写,但是不要仅仅通过大小写的不同来区分不同的变量。如Sum和sum的同时使用。任务2.1计算路程任务2.1计算路程问题描述:有一辆汽车每小时可以行驶x公里,欲计算y小时能行驶多少公里(假设x和y均为整数)。编写一程序解决该问题。解决此问题需要使用公式:路程=速度×时间。要编写解决该问题的程序,可以使用3个变量:v、t和s。变量v用于存放速度的值,变量t用于存放时间的值,变量s用于存放路程的值。2.1.3常数1.常数的含义2.声明常数注意:尽管常数与变量有些相像,但不能像变量一样更改其值或给它们赋新值。2.1.3常数使用const关键字以及该常量值的类型来声明一个常量声明常量时必须对其赋值//地球的半径为6378kmconstintearthRadius=6378;//到太阳的平均距离为149600000kmconstlongmeanDistanceToSun=149600000;//平均轨道速度是29.79km/sconstdoublemeanOrbitalVelocity=29.79D;2.1.3常数----讨论为什么有必要使用常量?列举更多的需要使用常量的情况;-防止一些固定的量被无意修改,导致程序运算出现错误;-可能的情况有物理化学数学等学科在计算中使用的常量,一些现实中固定不变的量,例如英文字母的个数等等。2.2基本数据类型每个变量都具有一个类型,以确定哪些值可以存储在该变量中。算术运算基本数据类型的相互转换算术溢出及显式转换溢出布尔类型整型字符数据类型非整型格式化输出2.2.1整型C#支持9种整型:sbyte(8位有符号整型)、byte(8位无符号整型)、short(16位有符号整型)、ushort(16位无符号整型)、int(32位有符号整型)、uint(32位无符号整型)、long(64位有符号整型)、和ulong(64位无符号整型)。如果整数表示的值超出了ulong的范围,就会产生编译错误。如果某个变量总是存储整数而不是带小数的数字,则将它声明为以上类型中的一种。没有一个数值类型是存放在单个字节中的。但有时数据要存放成字节,必须能访问各个字节。这时该数据可存放在byte、sbyte类型的变量中,如果某个变量包含二进制数据或未知种类的数据,则将其声明为byte类型。任务2.2:整数相乘主要知识点:①读取从文本框中输入的值。②将计算结果显示在文本框中。③将数字字符串转换为整数。④异常(格式异常、溢出异常)处理。问题描述:
用户从键盘输入整数,当单击【相乘】按钮时,计算它们的积,并显示结果。1.创建项目和窗体2.编写应用程序的代码3.测试应用程序2.2.5算术运算1.算术表达式与算术运算符在前面的示例中,op1*op2、op1/op2、5/3都是算术表达式,因为它们都由算术运算符和操作数组成。算术运算符(如*)指定了数值计算。2.算术运算符优先级规则在C#中,算术运算符优先级规则与我们所学的标准代数中的算术运算规则是一样的。表2.4算术运算符课题讨论1、读右列中的代码,然后回答问题。intx=10;inty=x++;?y的值是什么,为什么?2、读右列中的代码,然后回答问题。x+=10;?x的值是什么,为什么?3、读右列中的代码,然后回答问题。intz=30;inta=x+y*z;?a的值是什么?为什么?将该代码改写成更具有可读性的形式。4、读右列中的代码,然后回答问题。inta=10;intb=a++;boolmyBool=(a==b);?这段代码做了些什么?myBool的值是多少?实训内容:制作一个简单的加减运算器设计如下图windows应用程序做简单的整数加法和减发运算。注意:异常的处理。2.2.3非整型非整型数据类型是同时使用整数部分和小数部分来表示数值的类型。非整型数据类型有:float(7位有效位)、double(15到16位有效位)和decimal(28到29位有效位)。它们都是有符号类型。如果某个变量可以包含小数,则将其声明为这些类型之一。如果希望实数被视为非整型类型,请使用文本类型字符,文本类型字符用M表示decimal,用F表示float,用D表示double。2.2.3非整型实践操作:设计一个应用程序,输入以摄氏为单位的温度,输出以华氏为单位的温度。摄氏与华氏的公式为:F=1.8*C+32实训内容:设计一个应用程序,输入圆柱体的高和直径,分别计算出表面积和体积。要求将∏(3.14159)设置为常量。注意:异常的处理。任务2.4:贷款计算器主要知识点:①Single.Parse(s)方法。②Decimal.Parse(s)方法。③格式化字符串。④求幂运算。问题描述:编写一贷款计数器程序,对于特定的贷款数量、年利率和贷款周期,计算月付款和总付款。计算月付款的公式为:月付款=p*r/(1-(1+r)-n)其中p为贷款金额;r为月利率(年利率除以12),以0到1(100%)之间的数给出;n是还完贷款需要的时间(以月为单位)。解决方案:1.创建项目和窗体2.编写应用程序的代码3.测试应用程序2.2.4格式化输出可通过调用String.Format方法格式化输出信息。String.Format方法的一般格式为:String.Format(formats,参数列表);其中formats为包含一个或多个格式规范{N,M:Sn}的字符串,String.Format方法返回formats字符串,只不过将formats字符串中的第一个格式规范替换为参数列表中的第一个参数的值(该值被转换为字符串),第二个格式规范替换为参数列表中的第二个参数的值(该值被转换为字符串),依此类推。2.2.4格式化输出在格式规范{N,M:Sn}中,N是从零开始的整数,表示要格式化的参数,0表示要格式化的参数是参数列表中的第一个参数,1表示要格式化的参数是参数列表中的第二个参数,依此类推。M是整数(可选),指示包含格式化值的区域的宽度,剩余部分用空格填充。如果M的符号为负,则格式化值在区域中左对齐;如果M的符号为正,则该值右对齐。S是格式字符(可选),n为整数(可选),指定小数位数。在格式规范{N,M:Sn}中,只有N是必需的,其他两项可有可无。表2.3格式化输出说明2.2.4格式化输出实践操作:将借贷计算器的练习按照书上的讲解,自己实现。要求:将输出的英文提示改成中文,同时将输出对齐。
完成后,提交检查。实训内容:设计一个应用程序,计算“身体质量指数”(BMI),反映体重有关的健康问题的危险程序。BMI计算公式为:BMI=w/h2其中:w是以千克为单位的体重。H是以米为单位的身高。要求:计算结果保留2位小数。
窗体界面自行设计。2.2.2字符数据类型字符数据类型char用来处理Unicode字符。Unicode字符是16位字符,用于表示世界上多数已知的书面语言。char变量以无符号的16位(两个字节)数字的形式存储,取值范围为0到65535。每个数值代表一个Unicode字符。Unicode的前128个数值(0~127)对应于标准美国键盘上的字母和符号。这前128个数值与ASCII字符集中定义的数值相同。随后的128个数值(128到255)表示特殊字符,如拉丁字母、重音符号、货币符号以及分数。其余的数值用于表示不同种类的符号,包括世界范围的各种文本字符、音调符号以及数学和技术符号。任务2.3:字符检查问题描述:从键盘输入一个字符,检查输入字符是否为字母字符或数字,如果不是,则输出“输入的字符不是字母字符或数字”。如果输入的字符是字母字符,则输出该字母字符的整数值。在任何一种情况下,都会显示适当的消息。解决方案:1.创建项目和窗体2.编写应用程序的代码3.测试应用程序2.2.6基本数据类型的相互转换程序中在给变量赋值或进行数据间混合运算时,要注意所赋值的数据类型是否与变量的数据类型一致、进行混合运算的数据的类型是否一致。如果它们的类型不同,则有两种情况:隐式转换和显式转换。下面我们对隐式转换和显式转换进行讨论。1.隐式数值转换表2.6显示了预定义的隐式数值转换。隐式转换可能在多种情形下发生,包括在赋值语句中和数据间混合运算时及调用方法时。前面讲过数据间混合运算时,可能发生隐式转换,称为“数据提升”的隐式转换应用于算术操作符的操作数。提升基于表2.7的规则,这种转换之所以称为“提升”,是因为操作数是从低精度转换为高精度。2.显式转换表2.6隐式数值转换任务2.5:隐式和强制数值转换任务2.5:隐式和强制数值转换问题描述:创建一简单的程序,测试隐式和强制数值转换。表2.7算术提升规则2.2.7算术溢出及显式转换溢出算术运算符(+、-、*、/)产生的结果及显式数值转换的结果可能会超出目标类型可能值的范围。在一般情况下:可能会丢失数据或引发异常。任务2.6:算术溢出及显式转换溢出问题描述:创建一简单的程序,测试算术溢出及显式转换溢出。2.2.8布尔类型bool数据类型是被解释为true或false的无符号值。如果某个变量只能包含“真/假”、“是/否”或“开/关”信息,则将它声明为bool类型。bool没有文本类型字符。关系运算符都返回bool类型的结果。关系运算符为==、!=、<、>、<=和>=,关系运算符将值彼此比较,结果为一bool类型的值,详见表2.8。任务2.7:数值比较问题描述:创建一简单的程序,测试布尔型变量、关系运算符及关系表达式。表2.8关系运算符2.3.1类和对象2.3.2消息和方法2.3.3使用现有的类2.3.4创建自己的类2.3面向对象程序设计初步面向对象程序设计中两个最重要的概论是类和对象。从广义的术语来讲,对象是一个可以想象的物体,它既可是有形的也可是无形的。对象具有属性。例如,按钮或标签之类的GUI对象具有属性,属性是对象的特性。如按钮具有名称、宽度、高度和标题等属性。窗口具有名称、宽度、高度、标题和背景颜色等属性。对象具有行为方式(方法),它们用来描述对象可以执行的操作。例如,按钮可以被禁用、可以设置标题。标签可以显示文本。窗口可以改变大小,还可以出现或消失。表2.9列出了某些GUI对象及其属性和方法。又如,人具有姓名、性别、年龄等属性。2.3.1类和对象类是对象的符号表示形式,它是计算机用来创建对象的模板。与蓝图描述构成建筑的项一样,类以同样的方式描述组成对象的属性和方法等。就像一幅蓝图可以用于建成多座建筑一样,一个类也可以用于根据需要创建多个对象。如果使用蓝图类比,类就是蓝图,对象就是基于该蓝图的建筑。又如人是一个类,你是人,我是人,都是人类的实例或称对象。一个类描述一类事物,描述这些事物所应具有的属性,如人有姓名、性别、年龄等属性。一个对象是类的一个实例,它具有确定的属性值,如王飞(人的实例)年龄是20,性别是男。人类只有一个,人类的实例可以有无数多个。2.3.1类和对象表2.9GUI对象及其属性和方法在编写面向对象程序的过程中,我们首先定义类,当程序开始运行时,由这些类创建对象以完成任务。任务可以是计算月付款、计算总付款、格式化字符串等。为了命令类或对象执行一项任务,我们要为其发送一个消息,例如,我们发送消息pow给Math类,以计算指数。处理消息的类或对象必需相应编程,不能将消息随便发送给一个类或对象,而只能将消息发送给能够理解这个消息的类或对象。处理所收到消息的类或对象必须有对应的方法,也就是类或对象为完成一项任务而执行的指令序列。只能有对象调用的方法为实例方法,否则是静态方法,静态方法将在第5章详细讲述。向对象发送消息使对象调用方法,向类发送消息将调用类的方法。注意,发送给类或对象的消息必须与方法的名称相同。向类或对象发送调用方法的消息,可能以参数的形式来发送值。2.3.2消息和方法再看一个静态方法的例子。Math类定义了静态方法pow,该方法按参数指定的值,计算指数。由于Math类有静态方法pow的定义,我们可以向Math类发送pow消息,按参数指定的值,计算指数。如以下代码计算23的值,并赋给变量b:doubleb=Math.pow(2,3);图2.14描述了消息的发送过程。方法可能返回值也可能不返回值,这要看方法的定义。在后面的章节中我们将讲述方法的定义。2.3.2消息和方法2.3.2消息和方法前面章节我们已经使用了.NET类库中的类,如Math类、MessageBox类。下面我们使用.NET类库中的类String。1.String类任务2.8:文字游戏编写一个与用户一起玩的Eggy-Peggy文字游戏的应用程序,该程序把用户指定的字符串转换为新字符串,在指定字符串的所有元音字母前增加“egg”单词。如图2.15所示。2.3.3使用现有的类2.3.3使用现有的类String类声明对象(对象变量):类名对象名;创建对象:new类名(参数列表);消息传递(调用方法或读取或设置属性的值)对象名.方法名(参数列表)对象名.属性名(可选参数)对象名.属性名=表达式匿名对象对象初始化方法连接String对象2.3.3使用现有的类String类的常用属性及方法常用属性:Length:获取实例中的字符数常用方法:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术服务合同模板
- 天然气生产设备租赁承包合同
- 抹灰工程总承包合同模板
- 普通化妆品购销合同模板
- 商务楼宇大理石装饰合同
- 烘焙食品合同管理规则
- 武汉店铺出租合同范例
- 广告众筹合同范例
- 景观购买苗木合同模板
- 家庭借款抵押合同模板
- ICS国际标准分类总目录
- 钢结构课设钢结构平台计算书哈工大威海最终终
- 公司应收应付往来对账函(模板)
- 某农场稻米地市场推广策划方案
- 地籍调查表2012
- 实验一文昌鱼形态结构
- 薪酬管理-03-战略性薪酬管理运作框架
- 前列腺增生的护理查房ppt课件
- 不稳定性心绞痛和非ST段抬高心肌梗死诊断与治疗指南(全文)
- 课堂教学中的师生互动存在的问题及对策研究
- 部编版(统编)小学语文三年级上册期末试卷(含答题卡)
评论
0/150
提交评论