c++教案2.docx
- 文档编号:17900318
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:26
- 大小:29.96KB
c++教案2.docx
《c++教案2.docx》由会员分享,可在线阅读,更多相关《c++教案2.docx(26页珍藏版)》请在冰点文库上搜索。
c++教案2
第二章基本数据类型与表达式
教学目标:
C++数据类型概述、整型数据
重点:
整型数据
难点:
C++数据类型概述
课时:
2课时总第9-10课时
教法:
讲授法
§2.1C++数据类型概述
一、C++固有的数据类型
1、整型类(int,short,long,char,enum,bool)
2、实型类(float,double,longdouble)
3、数组
4、指针类(指针,引用)
5、记录类(struct,union)
二、几点注意
1、基本数据类型:
整型类和实型类。
2、C++程序中的数据主要体现为常量和变量。
3、不同数据类型的数据存储格式不同,所能实施的操作也不相同。
§2.2整型数据
一、各种整型数据的基本情况(见表2-1)
二、整型(int)常量的表示
1、整型常量的表示方法:
☆十进制:
无前缀。
如:
12
☆八进制:
0前缀。
如:
012
☆十六进制:
0x(或0X)前缀。
如:
0x12
☆无符号数:
U(或u)后缀。
如:
12u
2、短整型(short)常量的表示方法:
由于短整型常量在求值过程中会被无条件地转换为整型常量,因此短整型常量是借助于整型常量来表示的。
3、长整型(long)常量的表示方法:
在整型常量表示方法的基础上加L(或l)后缀。
如:
012L
三、整型变量的定义与初始化
1、定义格式:
类型修饰符变量名[=表达式]
【,变量名[=表达式]】;
如:
inta;inta=3;
inta,b,c;inta,b=4,c=5;
注:
inta=3;
2、如果初始化数据的类型与所定义的变量的类型不一致,该数据将被转换为与变量类型相同。
如:
ints=109L;
longy=99;
§2.3字符型数据
作业:
教材习题全部(本节)
教学目标:
字符型数据
重点:
字符型数据
难点:
字符型数据
课时:
2课时总第11-12课时
教法:
讲授法
一、字符型数据的基本情况(见表2-2)
二、字符型常量的表示
1、除’,”,\之外的可显示字符用该字符直接表示,但必须用’’括起来。
如:
’a’
2、单引号内用\后跟一字母表示某些控制字符。
3、单引号内用\后跟一数被无条件地理解为
八进制数,表示该代码所代表的字符。
如:
’\15’代表CR
4、单引号内用\后跟一16进制数(以X或x打
头)表示该代码所代表的字符。
如:
’\X0D’代表CR
5、’(单引号)”(双引号)\(反斜杠)
的表示:
’(单引号):
’\’’
”(双引号):
’\”’
\(反斜杠):
’\\’
6、字符串常量用双引号括起来的字符序列
表示。
如:
”hello”
’\0’:
字符串结束符。
字符串结束符不显式地表示出来,计算字符串长度时也不把它包含在内,但它占一个字节的存储空间。
如:
”hello”长度为5,但是占6个字节的存储空间。
三、字符型变量的定义和初始化
类型修饰符变量名[=表达式]
【,变量名[=表达式]】;如:
charc1,c2,c3;
charc1=’x’,c2=’y’,c3=’z’;
四、字符型与整型的关系
1、在计算机内部,每个字符都与一个整
型的代码相对应。
如:
’A’的代码是65,’a’的代码是97。
2、在表达式求值过程中,所有的字符将
被转换为与其代码等值的整数。
如:
执行cout<<’A’+’B’;结果是131。
3、在输入输出时,C++的输入流和输出流可明确区分这两种数据类型。
如:
cout<<’A’;输出结果为A
cout<<65;输出结果为65
§2.4枚举型数据
教学目标:
枚举型数据
重点:
枚举型数据
难点:
枚举型数据
课时:
2课时总第13-14课时
教法:
讲授法
一、枚举型数据的基本情况(见表2-3)
1、枚举是一种用户自定义的数据类型,
使用前必须先定义。
2、枚举类型的值域由用户定义的一组
符号常量限定。
二、枚举类型的定义和枚举变量的定义
1、枚举类型的定义格式
enum枚举名{符号表};
如:
enumWEEKDAY{Sun,Mon,Tue,Wed,Thu,Fri,Sat};
2、枚举变量的定义
(1)用已定义的枚举类型名来定义枚举变量。
如:
WEEKDAYw1,w2;
WEEKDAYw1=Wed,w2=Sat;
(2)定义枚举类型的同时定义枚举变量。
如:
enumWEEKDAY{Sun,Mon,Tue,Wed,Thu,Fri,
Sat}w1,w2;
三、枚举型与整型的关系
1、枚举中的符号常量与整数有一一对应的关系,即每个符号常量对应一个整数。
(1)枚举中的符号常量依次与0,1,2…对应
如:
enumWEEKDAY{Sun,Mon,Tue,Wed,Thu,Fri,Sat};
(2)任意规定其对应关系
如:
enumSomeDigits{ONE=1,TWO,FIVE=5,SIX,
SEVEN};
其中符号常量与整数的对应关系为:
ONE=1,TWO=2,FIVE=5,SIX=6,SEVEN=7
注:
可用=为一个符号常量规定任意的对应整数;该整数加1就是下一个符号常量默认的对应整数。
2、在表达式求值过程中,枚举型被无条件转换为相应的整型。
如:
已知今天的值,求明天是星期几。
WEEKDAYnextDayOf(WEEKDAYtoday)
{if(today==Sat)returnSun;
returntoday+1;
}
3、枚举型数据的输入和输出都是借助于
整数来实现的。
如:
SomeDigitsdigit=TWO;
cout< 如: WEEKDAYd; cin>>d;则要使d的值为Fri,应键入5。 §2.5实型数据 教学目标: 实型数据 重点: 实型数据 难点: 符号常量与常值变量 课时: 2课时总第15-16课时 教法: 讲授法 一、实型数据的基本情况(见表2-4) 二、实型常量的表示 1、双精度(double)常量的表示 (1)常规表示法如: 32.30.323 (2)科学表示法如: 3.23e+13.23e-1 2、单精度(float)常量的表示: 在双精度常量表示的基础上加F(或f)后缀。 如: 32.3F3.23e+1F 3、长双精度(longdouble)常量的表示: 在双精度常量表示的基础上加L(或l)后缀。 如: 32.3L3.23e+1L 三、实型变量的定义和初始化 类型修饰符变量名[=表达式] 【,变量名[=表达式]】; 如: doublex,y; doublex=1.23,y=34.2; §2.6符号常量与常值变量 一、符号常量 1、定义一个符号来代表某个常量。 如: #definePI3.1416 2、使用符号常量的好处: ☆提高程序的可读性。 ☆提高程序的可维护性。 ☆提高程序的一致性。 二、常值变量 1、在一般变量的定义前加上保留字const。 如: constdoublePI=3.1416; 2、常值变量在定义时必须初始化,且在 程序运行中保持初始值不变。 §2.7数值表达式 教学目标: 数值表达式 重点: 数值表达式 难点: 数值表达式 课时: 2课时总第17-18课时 教法: 讲授法 一、无操作符的表达式—简单表达式 1、最简单的表达式: 常量、变量、函数调用 2、每个表达式都有一个值: ☆常量的值: 常量数据本身。 ☆变量的值: 存于该变量空间的数据。 ☆函数的值: 函数返回的数据。 3、数值表达式: 整型类表达式和实型类表达式 二、算术操作符 +,-,*,/,%,+,- 1、/: 对于整型和实型有不同的意义。 (1)若两个操作数都是整数,则为整除操作(求商,舍余),操作结果为整数。 如: 10/3=3 (2)只要两个操作数中有一个为实数,则操作结果为实数。 如: 10.0/3=3.3333 2、%: 只用于整数的求余操作(求余,舍商)。 如: 10%3=1 3、+,-(取正,取负): 一元操作符,在表达式中可以跟在其他类型的操作符的后面,但不能跟在+(加号),-(减号) 后面。 如: p*+qi/-3(√) P++qi--3(×) 注: 两个操作符在一起,最好使用() 如: p*(+q)i/(-3) 三、位操作符 <<,>>,|,&,∧,~ 1、<<和>>(左移和右移) 如: 5<<20000010100010100(20) 操作数位数 如: 5>>10000010100000010 (2) ☆左移一位相当于乘以2。 ☆右移一位相当于整除2。 2、|,&,∧ |: 按位或。 (有1则1,全0则0) &: 按位与。 (有0则0,全1则1) ∧: 按位异或。 (同则0,异则1) 例见2.7-3 3、~: 按位取反。 (0变1,1变0) 如: ~0001100111100110 四、赋值操作符 1、赋值操作符= 2、赋值语句的格式: 变量=表达式;如: k=7; 3、赋值操作符可连续使用。 如: 执行k=m=7;则k和m的值都为7。 五、复合赋值操作符 +=,-=,*=,/=,%=,<<=,>>=,|=,&=,^= 复合赋值与普通赋值有严格的对应关系。 即: 变量? =表达式变量=变量? (表达式) (其中? 表示某个二元操作符) 如: k+=3k=k+3 s*=j-7s=s*(j-7) 六、增1减1操作符(++,--) 教学目标: 数值表达式 重点: 数值表达式 难点: 数值表达式 课时: 2课时总第19-20课时 教法: 讲授法 1、++(前增1,如++i) --(前减1,如--i) 先对变量增1(或减1),然后变量以增1 (或减1)后的值参与表达式的计算。 (先变值,后计算。 ) 例1: m=++k; 例2: intk,d=5; k=++d*2; 结果为: d=6,k=12 2、++(后增1,如i++) --(后减1,如i--) 变量先以原值参与表达式的计算,然后对 变量增1(或减1)。 (先计算,后变值。 ) 例1: m=k++; 例2: intk,d=5; k=d++*2; 结果为: d=6,k=10 七、sizeof操作符 1、作用: 计算一数据或数据类型所占空间的字节数。 2、格式 例: doubled=3; cout< 八、操作符的优先级和结合性 1、优先级(见附录A) 当一个表达式中有多个操作符时,优先级高的先执行。 如: 22-2*5; 2、结合性 若表达式中相邻的两个操作符优先级相同,那么先执行哪个操作符,就由 前一个操作符的结合性确定。 如: k=j+=5; 3、()具有最高的优先级,可强制改变运算顺序。 如: x+3/y(x+3)/y 4、C++表达式与数学表达式的区别 (1)所有字符写在同一水平线上。 (2)算术运算符与数学中的运算符在写法 上有所区别。 (3)算术运算符不能省略。 3ab (4)一些运算用函数实现。 pow: 乘方如: sqrt: 开平方如: log: 自然对数如: lnxlog(x) log10: 常用对数如: lgxlog10(x) exp: 以e为底的乘幂如: exp(2.5) sin: 正弦如: sinxsin(x) cos: 余弦如: cosxcos(x) 使用这些函数时应注意: 1、参数必须放在()中。 2、在程序开始必须加上语句#include (5)括号无大、中、小之分,全部用小括 号()来表示,而且可以嵌套。 九、类型的自动转换与强制转换 1、自动转换 当表达式中一个操作符的两个操作数类型不同时,其中一个操作数的类型将自动转换成与另一个操作数的类型相同。 (1)转换的优先顺序(见图2-1) (2)转换规律 短的向长的靠拢,有符号的向无符号的靠拢; 整型向实型靠拢,低精度的向高精度的靠拢。 例: 4+23L-5.14L+23L-5.127L-5.1 27.0-5.121.9 (3)转换规律不适用的两种操作 ☆只针对特定类型的操作。 (两边向操作符靠拢) ☆赋值或复合赋值操作。 (右边向变量靠拢) 例: intk=3;doubled=2.718; k+=d;//k=k+d;cout< 语句执行后的输出结果为5。 2、强制转换 (1)利用类型修饰符控制类型转换的过程。 (2)格式: ☆(类型修饰符)表达式//继承C语言格式 ☆类型修饰符(表达式)//C++特有的格式 如: float(j)或(float)j、(float)(j) int(3.14+i)或(int)(3.14+i) 3、只有兼容的数据类型才能相互转换。 作业: 教材习题全部(本节) 教学目标: 逻辑型数据与逻辑表达式 重点: 逻辑型数据与逻辑表达式 难点: 逻辑型数据与逻辑表达式 课时: 2课时总第21-22课时 教法: 讲授法 §2.8逻辑型数据与逻辑表达式 一、逻辑型数据的基本情况(见表2-5) 1、逻辑型是用来判别真、假状态的数据类型。 2、逻辑常量只有两个: true(真)和false(假) 3、逻辑变量的定义与初始化(格式同整型变量) 如: boolx;boolx=true; boolx,y,z;boolx=false,y=true,z=true; 二、逻辑表达式 1、无操作符的逻辑表达式—简单逻辑表达式 (逻辑常量、逻辑变量和逻辑型函数调用) 2、关系操作符和关系表达式 (1)关系操作符(==,! =,>,<,>=,<=) 用于判断两个操作数是否相等或比较两者的 大小,比较结果为false或true。 如: -3! =3(值为true)-3==3(值为false) (2)关系表达式: 由关系操作符构成的逻辑 表达式。 3、逻辑操作符和逻辑表达式 (1)逻辑操作符(! ||&&) 操作数必须是逻辑型(或可转换为逻辑型)的数据。 ! : 逻辑非(false变true,true变false) ||: 逻辑或(有true则true,全false则false) &&: 逻辑与(有false则false,全true则true) (2)逻辑表达式 表达式的值只能是false或true。 三、复合条件 1、&&和||可用于构造复合条件,其左右 两边的操作对象称为子条件。 2、子条件1&&子条件2: 表示两个子条件同时成立时这个复合条件才成立。 称为: “子条件1且子条件2”。 3、子条件1||子条件2: 表示两个子条件中至少有一个成立时这个复合条件就成立。 称为: “子条件1或子条件2”。 4、复合条件的典型应用: 判断一个数值是否落入指定的值域范围内。 ☆若值域是一个连续区间: 用&&连接。 ☆若值域是由相互分离的多个区间组成: 用||连接。 5、特殊情况下,可根据一个子条件的值来 判定复合条件的值。 E1&&E2: 若E1和E2中有一个值为false, 则该复合条件的值为false。 E1||E2: 若E1和E2中有一个值为true,则 该复合条件的值为true。 四、相反条件 1、若一个条件为true,则另一个条件必 为false;若一个条件为false,则另一 个条件必为true。 那么这两个条件互 为相反条件。 如: x>y和x<=y互为相反条件。 2、构造相反条件的方法 ☆使用! 如: x>y的相反条件为! (x>y) ☆利用配对关系(==和! =,>和<=,<和>=) 如: 不用操作符! ,x<=y+3的相反条件 可表示为: x>y+3 作业: 教材习题全部(本节) 教学目标: 逻辑型数据与逻辑表达式 重点: 逻辑型数据与逻辑表达式 难点: 逻辑型数据与逻辑表达式 课时: 2课时总第23-24课时 教法: 讲授法 五、等价条件 1、若两个逻辑表达式在任何情况下同为false或同为true,则这两个表达式所表达的条件称为等价条件。 如: x>y和! (x<=y)为等价条件 2、典型的等价形式 ! ! EE ! (x==y)x! =y ! (x! =y)x==y ! (x>y)x<=y ! (x<=y)x>y ! (x ! (x>=y)x ! (E1&&E2)! E1||! E2 ! (E1||E2)! E1&&! E2 E1&&E2E2&&E1 E1||E2E2||E1 3、利用等价条件来求复合条件的相反条件 例1: 不用操作符! ,求x==3||x<-3的相反条件。 解: ! (x==3||x<-3)! (x==3)&&! (x<-3) x! =3&&x>=-3 例2: 不用操作符! ,求x>=2&&x<=7的相反条件。 解: ! (x>=2&&x<=7)! (x>=2)||! (x<=7) x<2||x>7 六、永假条件和永真条件 如: x<3&&x>15的值永为false,为永假条件。 y>0||y<=0的值永为true,为永真条件。 注: false是最简单的永假条件, true是最简单的永真条件。 七、逻辑型数据与其他数据类型的关系 1、逻辑型数据作为数值数据使用时,false转换为0,true转换为1。 2、字符型、枚举型、整型或实型数据值作为逻辑值使用时,一切0值转换成false,一切非0值转换成true。 3、指针值作为逻辑值使用时,空指针值转换成false,非空指针值转换成true。 总结: 0就是false,非0就是true。 说明: 1、数值型数据与逻辑型数据出现在同一表达式中时,逻辑型数据无条件地转换为数值型数据0或1。 例: boolk=true; intj=3; cout< 输出结果为: 40 2、在用数值数据对逻辑变量进行初始化 或者赋值时,任何非0值都转换为1。 例: boolk=9,h; h=5; cout< 输出结果为: 11 注: 逻辑型数据的输入和输出是借助整数 0和1来实现的。 3、逻辑操作符&&,||,! 与位操作符&,|,~的联系。 x&&ybool(x)&bool(y) x||ybool(x)|bool(y) ! x~bool(x) 例: 1&&2bool (1)&bool (2)1&1 1 八、逻辑型数据的应用 —条件操作符与条件表达式 1、条件操作符: ? : 2、格式: 条件? 表达式1: 表达式2 3、条件表达式的值: 若条件成立,条件表达式的值就是表达式1的值,否则就是表达式2的值。 例: intx,w; cin>>x; w=x>100? 0: x*3; cout< 若输入20,则输出60;若输入120,则输出0; 4、表达式1和表达式2应该是同一数据类型的表达式,若不同则进行类型转换。 5、表达式1和表达式2也可以是条件表达式, 即条件表达式可以嵌套。 例: x>0? 1: (x<0? -1: 0) 则: x>01 x<=0x<0: -1 x=0: 0 作业: 教材习题全部(本节) 教学目标: 自定义类型修饰符 重点: 自定义类型修饰符 难点: 自定义类型修饰符 课时: 1课时总第25课时 教法: 讲授法 §2.9自定义类型修饰符 1、用自定义的标识符来代表一个特定的 数据类型。 2、格式: typedef类型修饰符说明; 例: typedefintDISTANCE; DISTANCEi,Beijing_to_Tianjing; inti,Beijing_to_Tianjing; 3、作用 ☆提高程序的可读性。 ☆提高程序的可维护性。 ☆避免类型使用上的不一致性。 例: 已知程序中用unsignedchar型数据表示年龄,为了增加可读性,决定将之命名为AGE,则完成命名的定义是: typedefunsignedcharAGE; 作业: 教材习题全部(本节) 教学目标: 表达式的副作用与表达式语句 重点: 表达式的副作用与表达式语句 难点: 表达式的副作用与表达式语句 课时: 2课时总第26-27课时 教法: 讲授法 §2.10表达式的副作用与表达式语句 一、表达式的副作用 1、在表达式的求值过程中不但要提取变 量的值,还可能改变变量的值。 如: k=m++ 2、表达式能产生副作用的原因: 引入了 具有副作用的操作。 ☆赋值(=) ☆复合赋值(+=,-=,*=,/=,%=, <<=,>>=,|=,&=,^=) ☆前增1前减1(++,--) ☆后增1后减1(++,--) 上述操作所作用的对象必须是变量,因此这些操作也称为: 作用于变量的操作。 3、对于“作用于变量的操作”(除后增1和后减1),作为操作结果的表达式的值就是所作用的变量所获得的值。 例: intk=3; cout<<(k+=2); cout<<’’< 输出结果为: 55 4、可对同一变量连续施加若干个“作用于变量的操作”。 例: intk=3; cout<<++(k+=2); cout<<’’< 输出结果为: 66 注: (1)“作用于变量的操作”只能施加于变量对象。 如: (p+3)-=k,++5,100=p都是错误的。 (2)当若干个“作用于变量的操作”施加于一变量时,除了最后一个外,不得有后增1或后减1操作。 如: k++*=5是错误的. 二、表达式副作用的应用 1、逗号操作符与逗号表达式 (1)逗号操作符: , (2)格式: 表达式1,表达式2 (3)逗号表达式的值: 逗号表达式的值 就是表达式2的值。 如: 由x=(i++,j)可知: x与j同值。 2、表达式语句 (1)表达式作为语句来使用。 (2)构成: 表达式后加分号;。 (3)功能: 表达式作为语句使用时,它的功能通过副作用来体现。 因此把没有副作用的表达式作为语句使用是无意义的。 如: x+=5;(有意义)k+1;(无意义) 作业: 教材习题全部(本节)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 教案
![提示](https://static.bingdoc.com/images/bang_tan.gif)