您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 电子教案第2章C2008面向过程基本元素
第2章C#2008中面向过程基本元素•应用程序处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、实数、字符、布尔型等形式)。不同的数据之间往往还存在某种组织,构成了所谓的数据结构。例如,数组就是一种数据结构。不同语言所允许定义和使用的数据和数据结构是不同。•C#语言中数据有常量与变量之分。它们分别有各种类型。由这些数据类型还可以构成更复杂的数据结构。例如结构体、枚举等。2.1基本语法格式•C#2008语法来源上看起来像C和C++,如果读者曾经使用过这些语言,那么在学习C#2008基本语法上,会感到很熟悉。不过,在使用的过程中,会很快发现C#2008程序风格鲜明,而且可读性强。其编译器是不计空白符(包括Tab键、空格键等)的,所以各种不同风格的程序员可以用自己习惯的风格格式化代码。2.1.1语法概述•在C#2008代码中,会看到各种标点符号来分割一系列语句。可不要小看这些标点符号,假如写错一个标点符号,编写的程序就有可能编译不通过。所以,就从这些小小的标点符号来开始C#2008语法的学习。下面提供了C#2008中使用的标点符号和它们的说明。•分号“;”:指明一条代码语句的结束。•冒号“:”:2.1.2C#2008中的注释•在C#2008中,注释就像空白符一样,会被忽略,但是在编写代码的时候非常有用。C#2008有两种标准注释方式。第一种方式是单行注释,在注释开头处加上标识符,用于提示编译器忽略这一行后续的部分。第二种方式是多行注释,在注释的开头和结尾都加上标识符。单行注释用两个正斜线来表示。例如:•//这是注释。•单行注释中,该行“//”之后的文本都会被编译器认为是注释,注释自动在行尾结束,其只能用于单行注释。多行注释用“/*”字符串开始,以“*/”字符串结束。例如:•/*这是注释*/•/*这也是•注释*/2.2常量和变量•C#2008是强类型语言,所以常量和变量都必须先声明类型。当声明了类型后,计算机就会知道处理什么样的数据,以及采用哪种格式保存数据等。•在以前编写程序时(使用C和C++),没有提供丰富的数据类型,开发人员必须把基本数据类型组合到类和结构中,自己构建数据类型或者使用存储在头文件中的模板代码(STL)或复杂的专用库,例如MFC。现在,在C#2008语言中,其支持CTS(CommonTypeSystem),其中的数据类型集合不仅包括熟悉的基本类型,例如int类型、char类型和float类型等,还包括比较复杂的类型,例如string类型和decimal类型。C#2008语言中,包括两种类型。•值类型:值为固定长度的数据,存储在堆栈中。包括简单类型、枚举类型和结构类型等。•引用类型:值存储在堆中。包括类类型、数组类型和接口类型等。2.2.1C#2008预定义类型•【本节示例参考:\示例代码\Chap02\TypeUse】•C#2008语言中,值类型可以分为:•简单类型(内建类型)。•结构(用户定义的值类型)。•枚举。•简单类型,是直接由一系列元素成员构成的数据类型。均为.NET框架系统类型的别名,从计算机角度可以把简单类型分为:•整数类型。•布尔类型。•实数类型。2.2.2常量•在程序运行过程中,值不能被改变的量称为常量,即常量就是值固定不变的量。常量的型可以是任何一种。声明常量的格式:•attributesconstant-modifiersconsttypeconstant-declarators;•在上述声明中,常量修饰符constant–modifiers可以是new、public、protected、internal、private。而type可以是sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string。例如:•publicconstintx=1;2.2.3变量•在程序运行的过程中,值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元,在该单元中存放变量的值。与常量不同,变量的值可以反复赋数值。读者要区分变量名和变量值,变量名实际上是一个符号地址,在对程序编译时由系统给每一个变量名分配一个内存地址。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从存储单元中读取数据。•1.声明变量•2.赋值变量•3.变量的类型2.3运算符、表达式及优先级•上一节介绍了类型和变量,数值类型的常用操作即为数值计算,而计算就要涉及运算符。如果没有运算符,那些类型就是静止的,不能反应或执行有用的任务。C#2008中的表达式,是由运算符、操作对象和标点符号链接而成的。•C#2008提供了大量的运算符,按照其处理操作数的不同大致可以分为3类,即一元运算符、二元运算符和三元运算符。主要的运算符如表所示。2.3.1算术运算符和算术表达式•【本节示例参考:\示例代码\Chap02\NumberCirculation】•C#2008提供的算术操作符有五种:•+加法运算符。•-减法运算符。•*乘法运算符。•/除法运算符。•%求余运算符。2.3.2赋值运算符和赋值表达式•【本节示例参考:\示例代码\Chap02\Compoundoperator】•C#2008提供了“=”赋值运算符,同时与赋值运算符相近的运算符还有“+=、-=、*=、/=、^=、=、=”等复合赋值运算符。赋值的作用就是将一个数据赋给一个变量。例如“a=3”的作用就是将数据3赋给变量a。赋值的左边必须是一个变量,属性访问器或索引访问器的表达式。•在C#2008中如果赋值运算符两边的操作数类型不一致,那就先要进行类型转换,同时赋值运算符还可以对变量进行连续赋值,例如a=b=c的表达式等价于a=(b=c)。读者要注意“=”操作符是右关联的。所以出现上面的等价关系。2.3.3关系运算符和逻辑运算符及表达式•【本节示例参考:\示例代码\Chap02\Difference】•严格的说关系运算符也是路基运算符的一种,因为关系表达式的返回值总是布尔值。关系运算符用来比较两个值。它有=、!=、〈、〉、〈=和=。逻辑运算符用来扩展条件语句。运算符号中?:是三元运算符,&&、||、&、^、|是二元操作符,而!是一元操作符。2.3.4位运算符和位运算•【本节示例参考:\示例代码\Chap02\ByteOperation】•在计算机中,任何信息都是以二进制形式保存的,“&”、“|”、“^”除了可以作为•逻辑运算符,也可以作为位运算符,它们对两个操作数中的每一个二进制位都进行运算。除了这些位运算操作外,还有|、和~可以对数据按二进制位进行位操作。在这些运算符号中,只有~是一元运算符,而其他的都是二元运算符。同时,运算符的操作数只能是整数型或字符型的数据,不能为实型数据。位运算符号的简要说明见表。2.3.5其他特殊操作符•除了上面的各种操作符号外,还有一些特殊的操作符号,如下:•1.三元操作符•“?:”三元操作符也称为条件操作符,该操作符是右关联的。例如:表达式“a?b:c?d:e”将按“a?b:(c?d:e)”形式执行。该运算符的运算规则对于条件表达式“a?x:y”,先计算条件a,然后进行判断。如果a的值为true,就计算x的值;否则计算y的值。•2.自增和自减操作符•自增和自减操作符有前后缀之分。对于前缀操作符的规则是“先增减,后使用”,而后缀操作符则正好相反,是“先使用,后增减”。•3.Checked和unchecked操作符•Checked和unchecked操作符用于整型算术运算时控制当前环境中的溢出检查。2.3.6运算符的优先级•优先级就是在表达式中的运算顺序,上述介绍的运算符都有不同的优先级。各运算符的优先级详细见表。表2-16运算符优先级2.4程序的流程控制•从结构化程序设计角度出发,程序有三种结构,使程序的执行重定向到代码的不同部分。它们分别是顺序结构、选择结构和循环结构。结构的使用主要体现了开发人员的思维,如果开发人员的思维清晰,可以利用结构产生逻辑明晰合理的代码,混乱的思维往往会产生含有逻辑错误的代码。2.4.1选择结构•当程序中需要进行两个或两个以上的选择时,可以根据条件判断来选择将要执行的一组语句。C#2008中提供了if和switch语句。•1.if语句:if-else是常用的关键字,在C#2008中会被大量用于条件判断等场合。if语句有多种形式的应用。•2.if语句的嵌套:在if语句中又包括一个或多个if语句成为if语句的嵌套。•3.switch语句:switch语句是多分支选择语句,用于将一个表达式的值同许多其他值比较,并按比较结果选择下面该执行哪些语句。虽然,上述的功能可以用嵌套的if语句来处理,但分支较多、嵌套的语句层数多、程序冗长且可读性低。2.4.2循环结构•循环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元,提供了根据指定条件反复执行某部分代码的功能。C#2008提供了while语句、do—while语句和for语句。•1.while语句•2.do—while语句•3.for语句•4.foreach语句•5.循环的嵌套•6.中止循环2.5类型转换•在编写程序过程中,会经常遇到这种情况,就是需要将一种数据类型的值赋给另一种不同数据类型的变量。例如,从int类型转换到long类型数据类型之间的转换等,由于数据类型有差异,在赋值时就需要进行数据类型的转换。在C#2008中提供了如下的转换:•隐式转换。•显式转换。•使用命令的显示转换。2.5.1隐式转换•【本节示例参考:\示例代码\Chap02\TestTransformation1】•隐式转换就是不需要加以进行的转换,即在转换过程中,编译器无需对转换进行详细检查就能够安全的执行转换。实际上就是从低精度的数值类型向高精度的数值类型转换。要实现隐式转换,需要同时满足两个条件,第一是两种类型彼此兼容,第二是目标类型的取值范围要大于源类型。一般来说,转换的过程中要保证不会导致信息丢失。•隐式转换的类型有隐式数值转换、隐式枚举转换和隐式引用转换;其发生的场合也包括函数调用、表达式计算和分配等。2.5.2显式转换•【本节示例参考:\示例代码\Chap02\TestTransformation2】•当两种类型不满足隐式转换的两个条件,即两种类彼此不兼容,或目标类型取值范围小于源类型时,隐式转换就无法进行,这时就需要进行显式类型转换。显式类型转换又叫强制类型转换,需要用户必须明确的指定转换的类型。显式类型转换的通用格式如下:•目标类变量=(目标类型)值2.5.3使用命令的显示转换•【本节示例参考:\示例代码\Chap02\TestTransformation3】•通过convert类提供的方法也可以实现各种类型的转换,其提供的方法如表所示。2.6小结•本章讲述了数值类型、常量、变量、运算符号和流程控制等一些程序员入门的必备知识。•数值类型、常量、变量和运算符号虽然简单,但是它们是程序代码的基础,没有它们就没有程序代码。如果要想当一名好的程序员,它们的熟练掌握是一项基本功。•流程控制是程序开发的经典内容,是程序设计中必不可少的一部分。主要包括顺序结构、选择结构、循环结构。通过对这些知识的运用,读者可以编写出处理各种情况的代码。本章的内容都是一些基本的知识,也是进入C#2008语言学习的必经之门。
本文标题:电子教案第2章C2008面向过程基本元素
链接地址:https://www.777doc.com/doc-2210646 .html