人教版 信息技术 选修1 第三章 变量 课件(共114张PPT)

文档属性

名称 人教版 信息技术 选修1 第三章 变量 课件(共114张PPT)
格式 zip
文件大小 4.7MB
资源类型 教案
版本资源 通用版
科目 信息技术(信息科技)
更新时间 2019-08-22 08:11:42

图片预览

文档简介

课件114张PPT。1第3章变量2本章提要?3-1?什么是变量??3-2资料(数据)的类型:资料(数据)类型
?3-3常数?3-4自订资料(数据)类型
?3-5综合演练33-1?什么是变量?
?当我们在进行心算时,要用大脑记住数字,
然后将它们加减乘除,只要数字一多,就会
发现我们的脑袋实在不争气,可能連要计算
的数字都记不住,更不要说想要在脑中计算
出答案了。这时候我们就会佩服在电视上
表演心算的神童,也会觉得计算器(计算机)实
在好用,手指头按一按就能算出答案。
?其实,计算机也没有比我们高明多少,只不过
它能清楚确实记住要计算的数字,也就是存放到内存中。4?什么是变量? 在这个例子中, 数字就是所谓的资料(数据);而计算的动作则称为计算机在处理资料(数据);计算出來的答案则是处理的结果(其实也算是资料(数据))写程序时,就是在命令电脑以我们想要的方式处理资料(数据),而在程序中就是用变量(Variable)來表示储存资料(数据)的地方。抽象一点的说法,就直接说变量就是储存资料(数据)的地方。
5宣告(定义)变量?让我们先來看看以下这个程序:6宣告(定义)变量?在这个程序中, 第3行 的“int i;”叙述的功用,就是宣告(定义)(Declare)一个变量,它的名字叫 做i,而最前面的int则是说这个叫做i的变量可以用來存放整数(Integer)类型的资料。当C++编译器看到这一行时,就会在程序执行时配置一块内存空间,以存放资料。在这个例子中,存放的就是在第4行指定(assign)给i的123。7宣告(定义)变量?如果把变量比拟成百货公司服务柜台提供的保管箱, 那么第6行程序的意思就等于是
向柜台人员说麻烦给我一个可以放整数的
保管箱!。而在程序实际执行这一个叙述
时,就相当于柜台的服务人员去找出一个空
的保管箱,并且将保管箱的号码牌给您。如
此一來,您就拥有一个可以存放物品的地方
了。8设定变量的内容?如同前面所说, 变量就像是个保管箱,那么柜台服务人员所给的保管箱号码牌就相当
于是这个保管箱的名字。往后当您需要放
置或是取出保管箱中的物品时,都必须出示
这个号码牌,让柜台人员依据号码找出保管
箱來帮你取出或是放置物品。9设定变量的内容?变量的使用也是一样, 宣告(定义)了变量之后,往后要存放或是取出资料(数据)时,只要指定变量的名字即可。像是程序中的第7行,就是将123这个数值放入名字为i的变量中(就是将123这个物品放入i这个保管箱中)在这一行中的=称为指定运算子(AssignmentOperator),它的功用就是将资料(数据)放到变量中。
10设定变量的内容11设定变量的内容?程序中的第8 行,则是取出资料(数据)的范例。当我们需要取用变量所存的资料(数据)时,只要在需要用到资料(数据)的地方写上变量的名字,实际执行程序时,就会将资料(数据)由变量中取出,并且取代变量名字出现在程序中的位置。以第8行來说,先用cout输出 数i的内容为:“的讯息,后面再用<<串接变 数i,由于i所存的值已变成123,因此这行程序的功能就相当于:12设定变量的内容?因此, 最后程序的执行结果就是将“变量i的内容为:123”这段文字显示出來了。?要注意的是, 在数i的内容为:“中虽然也出现了变量i的名字,但是因为使用了双引号”
括起來,因此括起來的内容会被视为是单纯
的一段文字,而不会将其中 的i解译为变量
的名字,所以就不会以变量i的内容取代。13设定变量的内容?变量所存的资料(数据)(简称变量值)是可以更换的,所以如果我们中途改变了变量值,则程式输出资料(数据)时,会以执行当时变量的内容來取代变量名字出现的位置,例如:(见下页)
由于在第9行重新指定新的值给变 数i,所以之后第10行程序执行时显示的就会是
456,而不是之前的123了。
14设定变量的内容15变量的名称?在前面的范例中, 变量的名字只是很简单的i,就字面來说,看不出有任何的意义。为了
方便阅读,最好可以为变量取个具有说明意
义的名字。举例來说,如果某个变量代表的
是学生的年龄,那么就可以帮这个变量取像
是age这样的名字,请參考以下实际的范例:
16变量的名称17变量的名称?这样一來, 在阅读程序的时候,就更容易了解每个变量的意义与用途,而且如果有变量用在与其意义不符的用途上时,也很容易就能发现,进而修正程序。?因此在替变量取名字时, 就要稍微花心思替不同用途的变量取个有意义的名字。但要
小心的是,在C++中变量的命名方式有几
个原则不能违背,而且有些字是不能用來当
成变量的名称。18变量的命名规则?C++程序中的变量名称,需符合以下规范:?可使用任何文字(英文字母、中文字都可以)或数字,以及“_” 符号组成,其它符号都不能使用。以
下所列都是合法的变量名称:19变量的命名规则?在此要提醒一点,C++语言标准虽然允许我们在变量名称中使用中文(或其它语系的文字),但一方面某些平台可能未支持此项功能,二來C++语言本身定义的关键词及标准函式库中定义的函式、变量名称仍为英文,写程序时若要中文、英文切來切去难免不便,所以建议还是只用英文來替变量命名。
20变量的命名规则?数字不能当成第1 个字符。例如以下都是不合法的变量名称:?变量名称不能重复。真实世界会有人同名同姓,但在程序中则不可有两个变量使用相同的名称,
否则编译器会发出重复定义的错误讯息。?除了以上2 点,变量名称也不能和C++语言中的关键词(keyword)重复。21C++关键词?关键词(或称保留字)是定义在C++语言标准中,对C++编译器有特殊意义的字符。
所以在替变量命名时,必须避开这些关键词,
因为C++不会把它当成变量名称,而是会
遵照该关键词所代表的意义及功能來编译
程序。下表就是C++的关键词:22C++关键词23变量名称和关键词都属于字符?前一章谈过字符的观念,字符是组成C++叙述的要素之一,而变量的名称就是字符的
一种。C++的字符可分为以下几类:
?识别字(identifier):简单的说,识别字就是在C++程序中用來代表一样东西的名称。例如变量名称就是识别字的一种,在后面几章介绍的函式名称、类别名称也都是识别字。定义在标准函式库中的名称(例如cout),也是识别字。
24变量名称和关键词都属于字符?关键词(keyword):在C++语言中有特别意义的字,例如我们已用过的using、int。?字面常数(literal):在程序中直接写出來的数字、字串等,例如在前一个范例程序中出现的123、456等。?运算子(operator):也就 是C++的运算符号,例如=>>。?标点符号(punctuator):例如分号、大括号等。253-2资料(数据)的类型:资料(数据)类型?使用任何变量之前, 都需要先宣告(定义)(declare)。宣告(定义)变量的目的,除了让编译器认识这个变量名称外,另外也是告诉编译器,这个变量是用來存放什么类型的资料(数据),这些资料(数据)类型,在程序语言中称为资料(数据)类型(Data Type)。?宣告(定义)变量的语法如下:26资料(数据)的类型:资料(数据)类型?例如前一个范例程序中的:?此外我们可在同一叙述中, 同时宣告(定义)多个同类型的变量,只要用逗号将变量名称分开即可:27资料(数据)的类型:资料(数据)类型?每一种资料(数据)类型所使用内存大小不尽相同(字节数不同),所以当我们宣告(定义)了变量所属的类型,编译器就会配置适当的空间给该变量來存放资料(数据)。28整数
?前面我们已使用过的int是整数(integer)资料(数据)类型,可用來记录如1、2200、-3之类
的正负整数。
?整数变量所占的内存空间为32位(4个字节),所以可表示的数字范围为-2147483648 (负的216)与2147483647(216-1)。
?指定给int变量的数值若超过int允许的范
围, 将会使变量所存的数值变得不正确,例如:29整数?第2 行指定超过2147483647的数值给verybig时,由于其值超过int变量可表示的
范围,所以将导致变量所存的数值不正确。30整数类型的修饰字?为了让我们能以更弹性的方式使用整数变数, C++允许我们在宣告(定义)整数时,在int前面加上修饰字,來改变整数资料(数据)的范围与使用的内存大小,修饰字有3种,分列如下:1.short:short int将整数资料(数据)类型变成只有16位(2 bytes)。所以可表示的数值范围变成从-
32768~32767。
2.long:在目前的32位个人计算机上, long int其
实和int一样,都是用32位(4 bytes)來记录整
数值。31整数类型的修饰字?但如果在64位的环境下,则long会变成64位,可表示的数值范围也变成-9223372036854775808 (负的263)~
9223372036854775807 (2263-1)。3.unsigned:unsigned不会改变整数占用的记忆
体大小,且可与前2个修饰字一起使用。其功用
是让C++的整数变成只能表示0及正整数。例
如unsignedint可记录范围0 ~ 4294967295之
间的整数。有些人将unsigned类型的整数称为
无号(无正负号)的整数。32整数类型的修饰字?使用修饰字时, 可将修饰字加在整数类型int之前,但也可省略int这个关键词,如以下范
例程序所示:(见下页)33整数类型的修饰字34整数类型的修饰字?第11行程序故意将k的值设为long最大值(2147483647)加1,结果因超出long可表示的范围,使k的值反而变成负的-2147483648。至于为何恰好是变成long可表示的最小值,与计算机中记录数值的方式有关。35整数类型的修饰字?大家可能会被short、int、long的大小弄混,其实平常大部份的程序也只会用到int型
别,真要分辨三者,也只需 把short看成是
较小的整数类型;long是较大的整数类型
;而int则是最普通的整数类型,且其大小
是视操作系统、编译器类型而定。?要想知道您所使用的操作系统及编译器组合,会产生多大的short、int、long变量,可
使用C++的sizeof()运算子來查看。36sizeof()运算子?sizeof()运算子的用途是查看变量所占的记忆体空间大小,也可查看各资料(数据)类型会使用的内存空间。而其传回的大小值是以位元组为单位,所以当您不确定目前所用的作
业系统/译器的short、int、long各占几个字节,就可用如下的程序來检查:
37sizeof()运算子38sizeof()运算子?此程序分别显示short、int、long三种资料(数据)类型的大小(unsigned的大小和未加unsigned时是一样的),在本例中int和
long一样都是4个字节(32位),但在不同的环境中可能会有不同的结果。例如我们在64位Linux中使用g++编译此程式,执行所得的结果是short和int都是4个字节(32位),但long则是8个位组(64位)。
39字符?C++的字符(character)类型有2种:?char:大小为8位,可记录一般英文、数字字元,或是标点符号等。?wchar_t:大小为16位,可记录包括中日韩文字在内的双字节(double bytes)字集的字母。这是C++为因应国际化而加入的资料(数据)类型,不过一般写程序时不常使用,稍后的程序范例也会示范其不适用的理由。40字符?每个字符变量都只能记录1 个英文字母、数字字符或符号,在C++要表示一个字符
时,可用单引号(‘)括住字符:?以下就是个使用字符变量的简单范例:41字符42字符?此程序的内容很简单, 比较需要解释是第9行,此叙述将65指定给c2字符变量,其作
用等于是将字符‘A’指定给c2变量,因为大
写A的ASCII码为65。什么是ASCII码呢??我们知道在计算机中可记录的资料(数据)基本上只有数值,所以文字其实也是以数值的方式來表示,为让所有计算机系统都用一致的方式來表示相同的字符,国际上用ASCII码统一表示字符。43字符?例如65代表大写A、97代表小写A,这种以特定数值代表某个字符的方法就称为编
码,目前信息界一般所用的编码为美国标准
信息交换码(ASCII, American Standard
Code for Information Interchange)。?所以当我们直接指定数值65给变 数c2时,其实和指定‘A’给它是一样的意思。因此从
cout输出c2的值时会看到字符‘A’,而不会
看到数值65。44字符
?至于程序第10行指定‘大’这个字给c3时,输出的内容却变成42090这也是文字编码所造成的,因为‘大’这个字 的Unicode编码就是42090 (若以16进位表示则是A46A)。但cout预设在输出wchar_t类型的资料(数据)时,并不会以字符的形式输出,而是以数字的形式输出,所以我们看到的就是‘大’的Unicode编码了。这也是前面提到使用wchar_t类型不便之处,因此不建议大家使用这个类型。45利用字符类型处理数字?由于char本质上存的是数值(字符的编码),所以我们也可用它來存放整数资料(数据),可代表的数值范围为-128~127。当然我们也可在char前加上unsigned表示变量只能储存0及正整数。然而cout预设在输出时,都是将char/unsigned char变量输出成对应编码的文字:46浮点数?当程序需用到含有小数(例如3.14),或是超过整数类型可表示范围(例如10的20次方
)的数字时,就需改用浮点数(floating point)
类型的变量。C++的浮点数类型有下列3
种:?float:浮点数(floating point)资料(数据)类型, 4个字节,可表示范围为1.175e-38与3.402e38间的浮点数。
47浮点数?double:倍精度浮点数(doubleprecisionfloating point)资料(数据)类型,也是用來存放浮点数型别,但是小数的位数比float多,而且精确度更高。大小为8个字节,可表示范围为2.225e-308与1.7976e308间的浮点数。?long double:扩充精确度的浮点数资料(数据)类型,和long int的情况相似,在一般32位计算机 上double和long double都是相同的。?以下范例程序就是将圆周率指定给flaot、 double类型的变量,并查看其精确度:48浮点数49浮点数1.第9、10行将圆周率值(表示到小数点后20位)
指定给float及double类型的变量(其中第9行
最后一个数字后的f,只是表示此数字为浮点数)
。稍后在第13及14行则输出2变量的值。2.第12行的程序是设定cout在显示浮点数时,要
显示的数字位数。可先不管这行程序的语法
和意义,此处只是为示范float和double的差異
才加上此叙述。50浮点数?由输出结果可发现float变量记录的数值精确度低于double很多,当我们将同样的数
值指定给f_pid_pi时, f_pi从小数点后第7
位数就开始和我们指定的值不同,但d_pi
则在小数点后第16位数才不同,但其精确
度已足够一般情况值用。因此如果要进行
较精确的科学计算时,应使 用double或
long double,而不要使用float。51布尔类型?布尔类型bool可表示真(true)、假(false) 两种狀态,在做邏辑、比较运算时就会得到
布尔类型的真假值。在设定bool类型的变
数(通常称为布尔变量)值时,可使用C++
关键词truefalse來表示其值为真或假。
?其实在C++中, bool是以整数的方式來记录, 0相当于false, 1则为true,所以在设定
布尔变量值时,也可直接用0、1來设定。52布尔类型53布尔类型1.第7、8行程序分别将不同的值指定给布尔
变量,其中第7行使用关键词true來指定;
第8行则是将变量值指定为0,这就相当于
指定为false。2.第9、10行分别输出2个变量值。由输出
结果可发现, cout预设是将true显示为1、
false显示 为0。54布尔类型3.第13行的程序是设定cout在显示布尔变数时,改用文字的方式來表示,而不再使用0、1來表示。更改cout的显示方式后,第13、14行再次输出变量值,就变成是以true、false的文字來显示了。55设定变量的初值?当程序宣告(定义)一个变量, 获得一块内存空间來存放变量值时,变量最初的值是不确定的,因此我们必须设定变量的初值,然后让程序做必要的处理,才能产生我们所期望的结果。?在前面的范例程序中, 都是先宣告(定义)好变量,然后再设定变量的内容,其实还有较便利的作法,就是在宣告(定义)时就同时设定其初值,而且可以用表达式來设定初值。56宣告(定义)同时设定初值?在宣告(定义)变量的同时就设定该变量的初值, 也称为定义(definition)。举例來说,以下的程序就是改写自前面的范例程序,只是宣告(定义)变量时即设定初值:(见下页)?第6、7行在宣告(定义)变量时,即设定变量的初值,所以稍后输出时,就会看到所设定的值。利用这种方式,就可以省掉额外撰写设定变量内容的叙述。57宣告(定义)同时设定初值58宣告(定义)同时设定初值?此外, 如果在同一叙述宣告(定义)多个变量时,也可一一指定不同的初值,例如:?此叙述就相当于宣告(定义)了age、height、weight三个整数变量,同时将它们的初值分
别设定为18、170、50。59用表达式设定变量的初值
?前面的范例程序中曾用表达式指定给变量,也就是让变量值等于表达式的计算结果。同理,在设定变量初值时,也可以直接用运算式來设定。因为最基本的四则运算都可以用在C++程序中:(见下页)
?第6行最后面的"sum = i + j + k"意思就是宣告(定义)sum变量,同时 将”i + j + k”的总和设定为其初值。由于前面已先设好I、j、k的
初值,所以程序也能自动算出正确的和,并设定给变量sum。60用表达式设定变量的初值61由键盘输入取得变量的值?我们也可用标准输入cin,从键盘取得变量值,例如:(见下页)?第8 行的叙述会将使用者输入的数值指定给age,例如在上列的执行例中,我们输入
了20,所以age所存的数值就是20。62由键盘输入取得变量的值633-3常数?前面我们介绍了变量的宣告(定义)与定义, 另外有一种资料(数据)和变量相对,称为常数(Constant)。顾名思义,变量所存放的资料(数据)随时可以改变,因此称为变量;而常数所储存的资料(数据)则是恒常不变,因此称之为常数。?在C++中,可将常数的形式归类为三种:
字面常数(Literal)、唯读变量及宏常数。
64字面常数
?所谓的字面常数,就是直接在程序中以文字
表达其文字或数值,在之前的范例程序中其
实已经用过许多次了。例如:
?上列的程序片段中,‘a’、10、20、30、
3.14159等就是字面常数,直接看其文字,就可以了解其所代表的数值。65字面常数?使用字面常数就是这么简单, 不过有几点需要注意:?char类型的字面常数以字符來表达时,必须以单引号括起來,例如'a'。?如果要表示一串文字, 则必须用一对双引号(“)括起來,例如“ How are You ”、“这是一串文字”。?此外在C++中还有一些特别的字面常数表示方式,以下就先介绍各种数值常数的表示
法。66各种数字表示法?前面设定float变量的范例中,我们在3.1415926535这个数值后面加了f,其作用
是告诉编译器, 3.1415926535这个字面常
数是float类型。在C++中,数值型的字面
常数有以下几个特性:?整数字面常数预设为int或long类型(以VisualC++为例,预设为int)。我们也可在数字后面加
上u (unsigned)、l (long)指定其类型,且这2个
字可放在一起使用:67各种数字表示法?任何有小数点的字面常数预设为double类型。可加上f或l指定其为float或long double:?除了标记字面常数的类型外, 也可用不同的方式來表示数值:68各种数字表示法
?整数字面常数可使 用8进位或16进位表示:第
1个数字是0时,此数值为8进位;若以‘0x’为
首,则此数值为16进位表示。
?浮点数除了用一般的小数点数值表示,也可用科
学记号表示,也就是在数值后面加上e (大小写均
可),再加上该数字为10的几次方。
?以下就是个简单的范例:(见下页)
?这个范例程序分别用8进位及16进位的字
面常数设定int变量的值,以及用科学数字表示法设定double类型变量值。69各种数字表示法70特殊字符表示法-
Escape Sequence?前面学过字符常数要用单引号(‘)括起來表示,而字串常数则要用双引号(“)。但如果我
们要将char变量值设为单引号,或是字串
内也要包含双引号,我们不能用如下的方式
表示:71特殊字符表示法-
Escape Sequence?上述两种表示方式都是不合法的, 在编译时会出现错误,因为C++编译器无法解读程
式。例如“他对我说:”Hello“”会被看成
是“他对我说:”及“”两个字串,而中间的
Hello则C++编译器不晓得是什么,因此视
为语法错误。72特殊字符表示法-
Escape Sequence?为解决要在字面常数中使用这类特殊符号或字符的问题,在C++程序中需以Escape
Sequence (跳脱序列)來表示特殊字符和符
号。Escape Sequence的写法是以反斜线
()开头,后面跟着一个英文小写字母或符号
,來表示特殊的控制字符及符号:73特殊字符表示法-
Escape Sequence74特殊字符表示法-
Escape Sequence?上表前半的控制字符是属于看不到的字符,用cout输出这些字符,只会产生该字符对
应的效果,例如cout << ‘n’将会使cout输
出换行,和使用“cout << endl”的效果一样
。这些Escape Sequence也可以放在字串
中使用,请參考以下的应用实例:75特殊字符表示法-
Escape Sequence76特殊字符表示法-
Escape Sequence1.第6行将字符变量beep设为控制字符
‘a’,也就是会使计算机喇叭发出哔声的字符。
2.第7、8行分别输出2个字串,这两个字串
结尾都有加上换行字符‘n’,所以输出字串
后, 下一个输出就会换行输出。77特殊字符表示法-
Escape Sequence3.第9行交替输出“!t”字串与beep变量, ‘t’
是定位字符(tab),这就好比我们在打字时先
打出“!”然后按一下Tab键,再打下一组字
串一样,所以屏幕上输出的结果就是3个
“!”,且中间有一些空白。至于输出beep并
不会在屏幕上看到任何文字输出,只会听到
计算机喇叭发出三次哔声(因为我们输出
beep三次)。78用字符编码指定字符?Escape Sequence除了用來指定控制字符与特殊符号外,也可用指定字元编码的方式
來表示特定的字符,表示方法如下:
?在反斜线后面加上8进位数值,就等于是该ASCII编码所代表的字符,例如:79用字符编码指定字符?若数字的开头为x 或X,则该数值是16进位的ASCII码,例如:?若数字的开头为u 或U,则该数字是16进位的Unicode编码,例如:80const唯读变量?如果一个数值具有某种特殊的意义, 而且在程序中经常会被用到,那我们就可以用一个
较有意义的识别字來代替这个常数,例如:
圆周率用PI來代表,税率用TaxRate來代
表。这样做有两个好处:?使常数的意义一目了然:假设税率是0.05 (5%),那么TaxRate要比0.05容易让人了解。?使常数的值易于修改:例如当税率更动时, 我们只要改变TaxRate的定义值即可,而不必更改程
式的其它部份。81const唯读变量?C++提供二种方法來定义常数,第一种是用唯读变量,另一种则是利用前置处理指令。
以下先介绍唯读变量的用法。?当我们在定义一个变量时, 如果在最前面加上关键词“const”,那么这个变量就会成为一
个唯读变量(constant variable),它的值将
永远无法改变。例如:82const唯读变量
?由于唯读变量的值不能改变,所以在定义时
一定要给它一个初值。在定义好之后,任何
企图改变其值的叙述都将造成编译时的错
误。下面是一些错误的范例:
?唯读变量除了值不能更改以外,它和一般变数的性质完全相同。83const唯读变量84宏常数?宏常数是以前置处理指令#define來定义,其格式如下:?例如:85宏常数?宏常数通常都是定义在程序的开头, 并且都用大写文字,以便和其它的变量或函式名
称有所分别。一旦定义好宏常数之后,我
们便可以在程序中使用该常数,在编译程序
前,前置处理器会先把所有的常数名称代换
成常数值,然后才真正开始编译。以下的范
例程序改用#define的方式來定义圆周率:86宏常数87宏常数88宏常数?当我们编译此程序时, 前置处理器会将程序中所有的PI代换成3.1415926,然后才开
始编译。所以第10、13行中的PI,在编译
前都已变成是字面常数3.1415926。?注意, 前置处理器并不懂C++的语法,它只是单纯地执行文字代换的工作,而不会为我
们做类型或是语法的检查,这是和使用
const唯读变量最大的不同之处。893-4自订资料(数据)类型?为了模拟真实世界的事物,C++允许我们利用内建的资料(数据)类型定义出较复杂的自订资料类型(User Defined Data Type),以表示特定的资料(数据)型式。以下就來介绍两种自订新类型的方式:?定义新的整数类型:以enum定义列举类型。
?为类型建立别名:用typedef为资料(数据)类型定义别名。90列举类型:enum?列举类型(Enumeration type)可以让我们定义新的整数类型,并用列举的方式來指出
所有可能的成员。其定义方式为:?其中, 新类型名称或变量名都可省略,而大括号内所列举的各成员就称为列举成员
(Enumerator)。例如,我们可以定义某种水
果茶有三种口味:91列举类型:enum?如此一來, 我们要设定变量taste的值时,就只能用3个列举成员applebanana、orange來设定。而列举成员其实也依序代
表从0开始的整数值,所以apple、banana
、orange就分别代表0、1、2。请參考以
下的范例:92列举类型:enum93列举类型:enum?大家或许会觉得这样不是让写程序变得复杂了吗?直接将taste宣告(定义)成int变量,然后用字面常数0、1、2來设定豈不是比较方便?虽然看起來是如此,但使用enum有下列好处:?让程序看起來比较有意义。因为我们把单纯的数值用有意义的名称代替,所以程序的可读性也提
高,更容易看出设定变量值代表的意义。94列举类型:enum?enum可以把变量的值限定在列举之名称集合裡,如此可减少程序可能的错误。例如taste值就只
能是0、1、2,而不能指定为其它的值,否则编译
时就会出现错误。但使用一般int变量则无法做
到此种限制,如果不小心设定了不应使用的值,必
须自行检查程序,不能靠编译器帮忙。95列举类型:enum?列举成员预设的值是从0 开始,不过我们也可以自行指定它们所代表的值,例如:?此时apple、banana、orange代表的值就变成3、4、5。当然我们也可将列举成员设
为不連续的值,甚至指定相同的值都可以:96列举类型:enum?在定义列举类型时可同时定义所要使用的变量,且类型名称如果不再使用,也可以将
之省略:97列举类型:enum?最后:若定义了多个列举类型,即使不同类型中的列举成员代表的值是一样,也不能将它们交错使用。因为对C++
而言,它们代表的是不同的资料(数据)类型,所以这样的程序将会造成编译错误:98用typedef为类型建立别名?用typedef关键词可以为任何已存在的资料(数据)类型建立别名,其目的是为了使用上的方便,以及增加程序的可读性。其建立方式如下:?举例來说, 若您想使用unsigned char变量,但觉得这个名称实在太长了,对打字及阅读都
造成一些负担,可以替它取个较简短的名字來
代替,例如:99用typedef为类型建立别名?这行叙述就是将byte定义为unsigned char类型的别名,接着我们就能用byte來代替“unsigned char”这一大串字了。通常在定义了类型的别名后,我们会希望能在所有的程序都能用到它,所以会将它放在一个自订的含括档中,例如:100用typedef为类型建立别名?以后在撰写程序时, 只要含括这个自订的含括檔,就能改用byte 來宣告(定义)unsigned char
类型的变量了:(见下页)?前一章提过, 含括自订的.h档时,需用双引号括住档名,所以第2行的写法是#include"Ch03-17.h"而非#include17.h>。101用typedef为类型建立别名102用typedef为类型建立别名?其实在C++标准函式库中就有很多使用typedef的应用实例,例如代表资料(数据)大小或长度的变量,就经常是宣告(定义)为size_t类型,这个资料(数据)类型可能是unsigned int或其它整数类型(视各编译器的实作方式及应用环境各有不同),但因为在标准函式库中以size_t來代表,如此一來我们就能以一致的方式來表示一种代表大小或长度的资料(数据)。1033-5综合演练?交换两变量的值
?大小写转换104交换两变量的值?两个同类型的变量可以用等号将其值指定给对方,比如说a = b,就是将变量b的值指
定给a,换句话说变量a与b的值会变成相
同。我们可以用这个原理來作两个变量值
的交换:105交换两变量的值106交换两变量的值107交换两变量的值1.在第11~13行中,先将a的变量值指定给temp。然后再将b的变量值指定给a。最后,再将
temp的变量值指定给a。2.在变量指定过程中,如果在被指定新变量值的变
数中,已先存有其它变量值。此时,新变量值会取
代旧的变量值。3个变量空间中的变量值,转换过程如下:108交换两变量的值109交换两变量的值110两数值交换为何一定要有暂存变量呢??两数值交换时, 如果未使用暂存变量,会产生?什么结果:111两数值交换为何一定要有暂存变量呢?112大小写转换?我们已经知道字符是以整数的方式记录字元 的ASCII编码(或Unicode),其中大写英
文字母的编码为65~90,小写则 是97~
122,各字母的大小写ASCII编码值恰好相
差32。利用这个规律性,我们就能写程序作
大小写字母的转换。(见下页)?第8 行,将upper变量值加上32,也就是前述大小写字母ASCII码的差值,所以lower
就变成小写的's'了。113大小写转换
同课章节目录