C++程序设计(谭浩强完整版).pdf.ppt
《C++程序设计(谭浩强完整版).pdf.ppt》由会员分享,可在线阅读,更多相关《C++程序设计(谭浩强完整版).pdf.ppt(931页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2第一章第一章C+概述概述 C+语言发展历史语言发展历史 自从自从1946年第一台电子数字计算机年第一台电子数字计算机ENIAC问世以来,随着计算机应用领域的不断扩大,问世以来,随着计算机应用领域的不断扩大,促进了计算机技术的高速发展,尤其是近年促进了计算机技术的高速发展,尤其是近年来计算机的硬件和软件都是日新月异。作为来计算机的硬件和软件都是日新月异。作为应用计算机的一种工具应用计算机的一种工具程序设计语言,得程序设计语言,得到不断的充实和完善。每年都有新的程序设到不断的充实和完善。每年都有新的程序设计语言问世,老的程序设计语言不断地更新计语言问世,老的程序设计语言不断地更新换代。换代。 3
2、20世纪世纪60年代,年代,Martin Richards为计算机软件人员为计算机软件人员在开发系统软件时,作为记述语言使用而开发了在开发系统软件时,作为记述语言使用而开发了BCPL语语言言(Basic Combined Programming Language)。1970年,年,Ken Thompson在继承在继承BCPL语言的许多优点的基础上发语言的许多优点的基础上发明了实用的明了实用的B语言。到了语言。到了1972年,贝尔实验室的年,贝尔实验室的Dennis Ritchie和和Brian kernighan在在B语言的基础上语言的基础上,作了进一步的作了进一步的充实和完善,设计出了充实和
3、完善,设计出了C语言。当时,语言。当时,设计设计C语言是为了语言是为了编写编写UNIX操作系统的。操作系统的。以后以后,C语言经过多次改进语言经过多次改进,并开始并开始流行。流行。C+是在是在C语言的基础上发展和完善的,语言的基础上发展和完善的,而而C是吸是吸收了其它语言的优点逐步成为实用性很强的语言收了其它语言的优点逐步成为实用性很强的语言。4C语言的主要特点是:语言的主要特点是:1、C语言是一种结构化的程序设计语言,语言是一种结构化的程序设计语言,语言本语言本身简洁、使用灵活方便身简洁、使用灵活方便。既适用于设计和编写大。既适用于设计和编写大的系统程序,又适用于编写小的控制程序,也适的系统
4、程序,又适用于编写小的控制程序,也适用科学计算。用科学计算。2、它既有高级语言的特点,又具有汇编语言的特它既有高级语言的特点,又具有汇编语言的特点。点。运算符丰富,除了提供对数据的算术逻辑运算运算符丰富,除了提供对数据的算术逻辑运算外,还提供了二进制的位运算。并且也提供了灵活外,还提供了二进制的位运算。并且也提供了灵活的数据结构。用的数据结构。用C语言编写的程序表述灵活方便,语言编写的程序表述灵活方便,功能强大。用功能强大。用C语言开发的程序,其结构性好,目语言开发的程序,其结构性好,目标程序质量高,程序执行效率高。标程序质量高,程序执行效率高。53、程序的可移植性好程序的可移植性好。用。用C
5、语言在某一种型号的计语言在某一种型号的计算机上开发的程序,基本上可以不作修改,而直接算机上开发的程序,基本上可以不作修改,而直接移植到其它型号和不同档次的计算机上运行。移植到其它型号和不同档次的计算机上运行。4、程序的语法结构不够严密,程序设计的自由度程序的语法结构不够严密,程序设计的自由度大大。这对于比较精通。这对于比较精通C语言的程序设计者来说,可语言的程序设计者来说,可以设计出高质量的非常通用的程序。但对于初学者以设计出高质量的非常通用的程序。但对于初学者来说,要能比较熟练运用来说,要能比较熟练运用C语言来编写程序,并不语言来编写程序,并不是一件容易的事情。与其它高级语言相比而言,调是一
6、件容易的事情。与其它高级语言相比而言,调试程序比较困难。往往是编好程序输入计算机后,试程序比较困难。往往是编好程序输入计算机后,编译时容易通过,而在执行时还会出错。但只要对编译时容易通过,而在执行时还会出错。但只要对C语言的语法规则真正领会,编写程序及调试程序语言的语法规则真正领会,编写程序及调试程序还是比较容易掌握的。还是比较容易掌握的。6随着随着C语言应用的推广,语言应用的推广,C语言存在的一语言存在的一些缺陷或不足也开始流露出来,并受到大些缺陷或不足也开始流露出来,并受到大家的关注。如:家的关注。如:C语言对数据类型检查的语言对数据类型检查的机制比较弱;缺少支持代码重用的结构;机制比较弱
7、;缺少支持代码重用的结构;随着软件工程规模的扩大,难以适应开发随着软件工程规模的扩大,难以适应开发特大型的程度等等。特大型的程度等等。7为了克服为了克服C语言本身存在的缺点,并保持语言本身存在的缺点,并保持C语言简语言简洁、高效,与汇编语言接近的特点,洁、高效,与汇编语言接近的特点,1980年,贝年,贝尔实验室的尔实验室的Bjarne Stroustrup博士及其同事对博士及其同事对C语语言进行了改进和扩充,并把言进行了改进和扩充,并把Simula 67中类的概念中类的概念引入到引入到C中。并在中。并在1983年由年由Rick Maseitti提议正式提议正式命名为命名为C+(C Plus P
8、lus)。后来,)。后来,又把运算符的又把运算符的重载、引用、虚函数等功能加入到重载、引用、虚函数等功能加入到C+中,使中,使C+的功能日趋完善。的功能日趋完善。当前用得较为广泛的当前用得较为广泛的C+有:有:VC+ (Visual C Plus Plus)、)、 BC+(Borland C Plus Plus)、)、AT&T C+等。等。8简单的简单的C+程序介绍程序介绍高级语言编译过程高级语言编译过程源程序源程序(文本文件)(文本文件)*.CPP目标文件目标文件(二进制文件)(二进制文件)*.OBJ可执行文件可执行文件(二进制文件)(二进制文件)*.EXE库文件库文件(各种函数)(各种函数
9、)在在Vitual C+系统中,可直接从源程序编译连接至可执行系统中,可直接从源程序编译连接至可执行程序,但依然要生成程序,但依然要生成*.OBJ及及*.EXE这两个文件。这两个文件。F7编译编译连接连接compilelink9一个简单的一个简单的C+程序程序#includevoid main(void ) cout“I am a student.n”; /输出字符串输出字符串主函数主函数函数体函数体开始开始函数体函数体结束结束输出流,在屏幕上打输出流,在屏幕上打印引号内的字符串印引号内的字符串分号,一条完整分号,一条完整语句的结束符语句的结束符本程序编译执行后,在本程序编译执行后,在DOS屏
10、幕上打印出屏幕上打印出 I am a student.包含文件包含文件注释或说明注释或说明10编译过程:编译过程:1)启动)启动Visual C+,选择选择“文件文件”菜单中的菜单中的“新建新建”命令,选择命令,选择“文件文件”标签中的标签中的“C+ Source File”选项。选项。2)选择源程序存放的目录和输入源程序名,单击)选择源程序存放的目录和输入源程序名,单击“确定确定”。3)在编辑器中编写源程序。)在编辑器中编写源程序。4)单击)单击F7或或“编译编译”中的中的“重建全部重建全部”编译源程编译源程序,若编译通过,单击序,若编译通过,单击“执行执行”,在,在DOS屏上看屏上看结果,
11、任按一键返回编辑器。结果,任按一键返回编辑器。11启动启动VC+编译系统编译系统12VC+编译编译系统界面系统界面单击单击“File”菜单菜单中中“New”命令命令13选择选择“Files”选项卡选项卡选择选择C+源源文件命令文件命令输入文件名输入文件名输入文件输入文件存放位置存放位置单击选择单击选择驱动器驱动器选择驱动选择驱动器或目录器或目录14C+源文件源文件编辑界面编辑界面输入输入C+源代码源代码15可以将此源可以将此源代码另起文代码另起文件名存盘件名存盘16选择编译命令,将源文选择编译命令,将源文件件.cpp生成生成.obj文件文件17如果编译出错,会出现提示信息,如果编译出错,会出现
12、提示信息,指出错误的位置及种类指出错误的位置及种类错误所在行错误所在行错误的原因错误的原因18双击错误双击错误所在行所在行光标移到该行光标移到该行19生成可执生成可执行文件行文件通过后单通过后单击该命令击该命令运行程序运行程序20运行结果显示运行结果显示在在DOS屏上屏上注意:不可以在软盘上注意:不可以在软盘上运行程序!应该把保存运行程序!应该把保存在软盘中的源文件拷贝在软盘中的源文件拷贝到硬盘的目录中再运行到硬盘的目录中再运行!21源程序所在目录源程序所在目录未编译前,只未编译前,只有一个源程序有一个源程序22编译运行后,出编译运行后,出现众多附加文件现众多附加文件同时,产生一个同时,产生一
13、个子目录子目录Debug23Debug目录中,有目录中,有obj和和EXE文件文件24#include void main(void) cout i; /从键盘上输入变量从键盘上输入变量i的值的值 cout “i的值为:的值为:” in; / 输出变量输出变量i的的值值另一个例子另一个例子25第二章第二章 数据类型、运算符与表达式数据类型、运算符与表达式262000H2001H2002H2003H2004H33+5=?5运算器运算器(2000H)+(2002H)用一个字节表示整数,范围为用一个字节表示整数,范围为-128127;用两个字节表;用两个字节表示整数,范围为示整数,范围为-32768
14、 32767。一般用四个字节表示整。一般用四个字节表示整数。数。(举例举例)内存内存CPU内存内存data外存外存Program8硬盘硬盘 软盘软盘271514 13 12 11 109876543210有符号数有符号数无符号数无符号数0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 132767327670 1 1 1 1 1 1 1 1 1 1 1 1 1 1 032766327660 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1-1(
15、补码补码)655351 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0-2655341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1-32767327691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-327683276828常量与变量常量与变量常量:在程序运行过程中,其值一直保持不变的常量:在程序运行过程中,其值一直保持不变的量为常量。量为常量。常量也区分不同的类型:常量也区分不同的类型:30,40 为整型,为整型,30.0,40.0为实型,为实型,编辑器只是根据其表面形式来判断其编辑器只是根据其表面形式来判断其类型。类型。变量:在程序运行过程中,其
16、值可以改变的量为变量:在程序运行过程中,其值可以改变的量为变量。变量。变量在程序的执行中能够赋值,发生变化变量在程序的执行中能够赋值,发生变化。变量。变量有一个名字,有一个名字,并在使用之前要说明其类型并在使用之前要说明其类型,一经,一经说明,说明,就在内存中占据与其类型相应的存储单元。就在内存中占据与其类型相应的存储单元。29#include#define PRICE 30 /常量,在程序中保持不变常量,在程序中保持不变void main(void) int num, total; /定义变量定义变量,在内存中开辟区间在内存中开辟区间 num=10; /变量赋值变量赋值,10为常量为常量 t
17、otal=num*PRICE; cout“total=“total; /输出结果输出结果其中:其中:num=10 total=num*PRICE 是赋值号,不同于数学意义上的等号。是赋值号,不同于数学意义上的等号。numtotal10300PRICE3030C+中有多种数据类型,均有常量与变量之分,各中有多种数据类型,均有常量与变量之分,各占不同的内存空间,正确定义与使用数据是编写占不同的内存空间,正确定义与使用数据是编写程序的基本前提。程序的基本前提。31变量名的命名方法:变量名的命名方法:变量名、数组名、函数名变量名、数组名、函数名称为称为标识符标识符。标识符只能由标识符只能由字母、数字、
18、下划线字母、数字、下划线这三种字符组成,且第这三种字符组成,且第一个字符必须为字母或下划线,长度不大于一个字符必须为字母或下划线,长度不大于247个字符,个字符,大小写不通用大小写不通用。(关键字不能作为标识符)。(关键字不能作为标识符)。关键字即是关键字即是VC+的语法要求中使用的字的语法要求中使用的字。如如 int if while 等。等。 正确的标识符:正确的标识符:INT, sum , de12, SUM等。等。变量必须使变量必须使用前定义,以分配空间。用前定义,以分配空间。举例说明举例说明32abc English 2xy x-y if Else b(3) def Chine_bb
19、 b3y AbsFloat float一般变量都是用匈牙利命名法命名的。一般变量都是用匈牙利命名法命名的。int nCount; char chChoice;33整型数据整型数据整型常量:整型常量:常量是根据其表面形式来判定,整型量即是没有小数点的常量是根据其表面形式来判定,整型量即是没有小数点的整数,范围:整数,范围:-231(231-1) ,有三种形式,有三种形式:1)十进制(默认方式)十进制(默认方式)43 1345 876542)八进制)八进制 以以0开头开头 043, 056, 0113)十六进制)十六进制 以以0 x开头开头 0 x12 0 xa3 0 x34 0 xdf(举例说明
20、)(举例说明)34#includevoid main(void)int int10,int8,int16; /定义定义3个整型变量个整型变量int10=10;/默认为十进制默认为十进制int8=010;/八进制八进制int16=0 x10;/十六进制十六进制coutint10=int10endl;coutint8=int8endl;coutint16=int16endl;输出输出int10=10int8=8int16=1635整型变量:整型变量:分为有符号型与无符号型。分为有符号型与无符号型。有符号型:有符号型: short 在内存中占两个字节,范围为在内存中占两个字节,范围为-215(215
21、-1) int 在内存中占四个字节,范围为在内存中占四个字节,范围为-231(231-1)long在内存中占四个字节,范围为在内存中占四个字节,范围为-2-31231-1无符号型:无符号型:最高位不表示符号位最高位不表示符号位unsigned short 在内存中占两个字节,范围为在内存中占两个字节,范围为0216-1unsigned int 在内存中占四个字节,范围为在内存中占四个字节,范围为0232-1unsigned long在内存中占四个字节,范围为在内存中占四个字节,范围为0232-1361)整型常量整型常量亦有长短之分,常量中无亦有长短之分,常量中无unsigned型,但一型,但一
22、个非负的整型常量可以赋给个非负的整型常量可以赋给unsigned型的变量。型的变量。 2)若一个常量定义为长整型数,则在其后加)若一个常量定义为长整型数,则在其后加l或或L进行区进行区分。分。如:如:32l 32L 564L等,内存为其分配四个字节存储。等,内存为其分配四个字节存储。 一个数在内存中为一个数在内存中为1 1 1 1 1 1 1 1 1 1 1 1当这个数为有符号数时,是当这个数为有符号数时,是-1;为无符号数时,是;为无符号数时,是232-1内存中的数是以内存中的数是以补码补码的形式存放的。(举例说明)的形式存放的。(举例说明)1 1 1 1 1 1 1 1 1 1 1 1 1
23、 1 1 137#include void main() unsigned short a; short int b= -1; a=b; couta=aendl;结果:结果:65535 不同类型的整型数据间不同类型的整型数据间的赋值归根到底就是一的赋值归根到底就是一条:条:按存储单元中的存按存储单元中的存储形式直接传送。储形式直接传送。 a1 1 1 1 1 1 1 1 1 1 1 1 1 1b1 1 1 1 1 1 1 1 1 1 1 1 1 1unsigned short a;38实型数据实型数据实型数又称浮点数,有两种表示方式:实型数又称浮点数,有两种表示方式:1)十进制形式:)十进制形
24、式: 23.0 24.5 3.56789 2) 指数形式:指数形式: 23E1 145e-1 356789e1 e前有数字,后前有数字,后面必须是整数。面必须是整数。实型变量分单精度实型变量分单精度 float 和双精度和双精度 double 两种形式:两种形式:float:占四个字节,提供占四个字节,提供78位有效数字。位有效数字。double: 占八个字节,提供占八个字节,提供1516位有效数字。位有效数字。举例说明举例说明39#includevoid main(void)float a, b;double c, d;a=0.01;b=3.45678e-2;c=3.45678e-2;d=9
25、.7654e-5;couta=atb=bendl;coutc=ctd=dendl;a=0.01 b=0.0345678c=0.0345678 d=9.7654e-005Press any key to continue40如果为实数,则用浮点数的形式在内存存储,表示如下:如果为实数,则用浮点数的形式在内存存储,表示如下:JtJSfS阶符阶符阶码阶码数符数符尾数尾数实数是既有整数又有小数的数。实数是既有整数又有小数的数。实数可以表示成:实数可以表示成:N=SRJS 称为尾数,尾数决定有效数字,即数字的精度。称为尾数,尾数决定有效数字,即数字的精度。J 表示指数(阶码)。表示指数(阶码)。R 是基
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 谭浩强 完整版 pdf
限制150内