C++程序设计(谭浩强完整版).ppt
《C++程序设计(谭浩强完整版).ppt》由会员分享,可在线阅读,更多相关《C++程序设计(谭浩强完整版).ppt(930页珍藏版)》请在冰豆网上搜索。
![C++程序设计(谭浩强完整版).ppt](https://file1.bdocx.com/fileroot1/2022-10/7/7bd17367-916f-42e6-ad41-877acef51bd9/7bd17367-916f-42e6-ad41-877acef51bd91.gif)
C+程序设计程序设计谭浩强编著谭浩强编著清华大学出版社清华大学出版社课件制作:
南京理工大学课件制作:
南京理工大学陈清华陈清华朱红朱红1第一章第一章C+概述概述C+语言发展历史语言发展历史自从自从1946年第一台电子数字计算机年第一台电子数字计算机ENIAC问世以来,随着计算机应用领域的不断扩大,问世以来,随着计算机应用领域的不断扩大,促进了计算机技术的高速发展,尤其是近年促进了计算机技术的高速发展,尤其是近年来计算机的硬件和软件都是日新月异。
作为来计算机的硬件和软件都是日新月异。
作为应用计算机的一种工具应用计算机的一种工具程序设计语言,得程序设计语言,得到不断的充实和完善。
每年都有新的程序设到不断的充实和完善。
每年都有新的程序设计语言问世,老的程序设计语言不断地更新计语言问世,老的程序设计语言不断地更新换代。
换代。
220世世纪纪60年年代代,MartinRichards为为计计算算机机软软件件人人员员在在开开发发系系统统软软件件时时,作作为为记记述述语语言言使使用用而而开开发发了了BCPL语语言言(BasicCombinedProgrammingLanguage)。
1970年年,KenThompson在在继继承承BCPL语语言言的的许许多多优优点点的的基基础础上上发发明明了了实实用用的的B语语言言。
到到了了1972年年,贝贝尔尔实实验验室室的的DennisRitchie和和Briankernighan在在B语语言言的的基基础础上上,作作了了进进一一步步的的充充实实和和完完善善,设设计计出出了了C语语言言。
当当时时,设设计计C语语言言是是为为了了编编写写UNIX操操作作系系统统的的。
以以后后,C语语言言经经过过多多次次改改进进,并并开开始始流流行行。
C+是是在在C语语言言的的基基础础上上发发展展和和完完善善的的,而而C是是吸收了其它语言的优点逐步成为实用性很强的语言吸收了其它语言的优点逐步成为实用性很强的语言。
3C语言的主要特点是:
语言的主要特点是:
1、C语语言言是是一一种种结结构构化化的的程程序序设设计计语语言言,语语言言本本身身简简洁洁、使使用用灵灵活活方方便便。
既既适适用用于于设设计计和和编编写写大大的的系系统统程程序序,又又适适用用于于编编写写小小的的控控制制程程序序,也也适适用科学计算。
用科学计算。
2、它它既既有有高高级级语语言言的的特特点点,又又具具有有汇汇编编语语言言的的特特点点。
运运算算符符丰丰富富,除除了了提提供供对对数数据据的的算算术术逻逻辑辑运运算算外外,还还提提供供了了二二进进制制的的位位运运算算。
并并且且也也提提供供了了灵灵活活的的数数据据结结构构。
用用C语语言言编编写写的的程程序序表表述述灵灵活活方方便便,功功能能强强大大。
用用C语语言言开开发发的的程程序序,其其结结构构性性好好,目目标程序质量高,程序执行效率高。
标程序质量高,程序执行效率高。
43、程程序序的的可可移移植植性性好好。
用用C语语言言在在某某一一种种型型号号的的计计算算机机上上开开发发的的程程序序,基基本本上上可可以以不不作作修修改改,而而直直接接移植到其它型号和不同档次的计算机上运行。
移植到其它型号和不同档次的计算机上运行。
4、程程序序的的语语法法结结构构不不够够严严密密,程程序序设设计计的的自自由由度度大大。
这这对对于于比比较较精精通通C语语言言的的程程序序设设计计者者来来说说,可可以以设设计计出出高高质质量量的的非非常常通通用用的的程程序序。
但但对对于于初初学学者者来来说说,要要能能比比较较熟熟练练运运用用C语语言言来来编编写写程程序序,并并不不是是一一件件容容易易的的事事情情。
与与其其它它高高级级语语言言相相比比而而言言,调调试试程程序序比比较较困困难难。
往往往往是是编编好好程程序序输输入入计计算算机机后后,编编译译时时容容易易通通过过,而而在在执执行行时时还还会会出出错错。
但但只只要要对对C语语言言的的语语法法规规则则真真正正领领会会,编编写写程程序序及及调调试试程程序序还是比较容易掌握的。
还是比较容易掌握的。
5随随着着C语语言言应应用用的的推推广广,C语语言言存存在在的的一一些些缺缺陷陷或或不不足足也也开开始始流流露露出出来来,并并受受到到大大家家的的关关注注。
如如:
C语语言言对对数数据据类类型型检检查查的的机机制制比比较较弱弱;缺缺少少支支持持代代码码重重用用的的结结构构;随随着着软软件件工工程程规规模模的的扩扩大大,难难以以适适应应开开发发特大型的程度等等。
特大型的程度等等。
6为为了了克克服服C语语言言本本身身存存在在的的缺缺点点,并并保保持持C语语言言简简洁洁、高高效效,与与汇汇编编语语言言接接近近的的特特点点,1980年年,贝贝尔尔实实验验室室的的BjarneStroustrup博博士士及及其其同同事事对对C语语言言进进行行了了改改进进和和扩扩充充,并并把把Simula67中中类类的的概概念念引引入入到到C中中。
并并在在1983年年由由RickMaseitti提提议议正正式式命命名名为为C+(CPlusPlus)。
后后来来,又又把把运运算算符符的的重重载载、引引用用、虚虚函函数数等等功功能能加加入入到到C+中中,使使C+的的功能日趋完善。
功能日趋完善。
当当前前用用得得较较为为广广泛泛的的C+有有:
VC+(VisualCPlusPlus)、BC+(BorlandCPlusPlus)、AT&TC+等。
等。
7简单的简单的C+程序介绍程序介绍高级语言编译过程高级语言编译过程源程序源程序(文本文件)(文本文件)*.CPP目标文件目标文件(二进制文件)(二进制文件)*.OBJ可执行文件可执行文件(二进制文件)(二进制文件)*.EXE库文件库文件(各种函数)(各种函数)在在VitualC+系统中,可直接从源程序编译连接至可执行系统中,可直接从源程序编译连接至可执行程序,但依然要生成程序,但依然要生成*.OBJ及及*.EXE这两个文件。
这两个文件。
F7编译编译连接连接compilelink8一个简单的一个简单的C+程序程序#includevoidmain(void)cout“Iamastudent.n”;/输出字符串输出字符串主函数主函数函数体函数体开始开始函数体函数体结束结束输出流,在屏幕上打输出流,在屏幕上打印引号内的字符串印引号内的字符串分号,一条完整分号,一条完整语句的结束符语句的结束符本程序编译执行后,在本程序编译执行后,在DOS屏幕上打印出屏幕上打印出Iamastudent.包含文件包含文件注释或说明注释或说明9编译过程:
编译过程:
1)启动)启动VisualC+,选择选择“文件文件”菜单中的菜单中的“新建新建”命令,选择命令,选择“文件文件”标签中的标签中的“C+SourceFile”选项。
选项。
2)选择源程序存放的目录和输入源程序名,单击)选择源程序存放的目录和输入源程序名,单击“确定确定”。
3)在在编辑器中编写源程序。
编辑器中编写源程序。
4)单击)单击F7或或“编译编译”中的中的“重建全部重建全部”编译源程编译源程序,若编译通过,单击序,若编译通过,单击“执行执行”,在,在DOS屏上看屏上看结果结果,任按一键返回编辑器。
任按一键返回编辑器。
10启动启动VC+编译系统编译系统11VC+编译编译系统界面系统界面单击单击“File”菜菜单中单中“New”命命令令12选择选择“Files”选项选项卡卡选择选择C+源源文件命令文件命令输入文件名输入文件名输入文件输入文件存放位置存放位置单击选择单击选择驱动器驱动器选择驱动选择驱动器或目录器或目录13C+源文件源文件编辑界面编辑界面输入输入C+源代码源代码14可以将此源可以将此源代码另起文代码另起文件名存盘件名存盘15选择编译命令,将源文选择编译命令,将源文件件.cpp生成生成.obj文件文件16如果编译出错,会出现提示信息,如果编译出错,会出现提示信息,指出错误的位置及种类指出错误的位置及种类错误所在行错误所在行错误的原因错误的原因17双击错误双击错误所在行所在行光标移到该行光标移到该行18生成可执生成可执行文件行文件通过后单通过后单击该命令击该命令运行程序运行程序19运行结果显示运行结果显示在在DOS屏上屏上注意:
不可以在软盘上注意:
不可以在软盘上运行程序!
应该把保存运行程序!
应该把保存在软盘中的源文件拷贝在软盘中的源文件拷贝到硬盘的目录中再运行到硬盘的目录中再运行!
20源程序所在目录源程序所在目录未编译前,只未编译前,只有一个源程序有一个源程序21编译运行后,出编译运行后,出现众多附加文件现众多附加文件同时,产生一个同时,产生一个子目录子目录Debug22Debug目录中,有目录中,有obj和和EXE文件文件23#includevoidmain(void)couti;/从键盘上输入变量从键盘上输入变量i的值的值cout“i的的值值为为:
”in;/输输出出变变量量i的的值值另一个例子另一个例子24第二章第二章数据类型、运算符与表达式数据类型、运算符与表达式252000H2001H2002H2003H2004H33+5=?
5运算器运算器(2000H)+(2002H)用一个字节表示整数,范围为用一个字节表示整数,范围为-128127;用两个字节表;用两个字节表示整数,范围为示整数,范围为-3276832767。
一般用四个字节表示整。
一般用四个字节表示整数。
数。
(举例举例)内存内存CPU内存内存data外存外存Program8硬盘硬盘软盘软盘261514131211109876543210有符号数有符号数无符号数无符号数01111111111111113276732767011111111111111032766327660000000000000001110000000000000000001111111111111111-1(补码补码)655351111111111111110-2655341000000000000001-32767327691000000000000000-327683276827常量与变量常量与变量常量:
在程序运行过程中,其值一直保持不变的量常量:
在程序运行过程中,其值一直保持不变的量为常量。
为常量。
常量也区分不同的类型:
常量也区分不同的类型:
30,40为整型,为整型,30.0,40.0为实型,为实型,编辑器只是根据其表面形式来判断其编辑器只是根据其表面形式来判断其类型。
类型。
变量:
在程序运行过程中,其值可以改变的量为变量:
在程序运行过程中,其值可以改变的量为变量。
变量。
变量在程序的执行中能够赋值,发生变化变量在程序的执行中能够赋值,发生变化。
变量。
变量有一个名字,有一个名字,并在使用之前要说明其类型并在使用之前要说明其类型,一经,一经说明,说明,就在内存中占据与其类型相应的存储单元。
就在内存中占据与其类型相应的存储单元。
28#include#definePRICE30/常量,在程序中保持不变常量,在程序中保持不变voidmain(void)intnum,total;/定义变量定义变量,在内存中开辟区间在内存中开辟区间num=10;/变量赋值变量赋值,10为常量为常量total=num*PRICE;cout“total=“total;/输出结果输出结果其中:
其中:
num=10total=num*PRICE是赋值号,不同于数学意义上的等号。
是赋值号,不同于数学意义上的等号。
numtotal10300PRICE3029C+中有多种数据类型,均有常量与变量之分,各中有多种数据类型,均有常量与变量之分,各占不同的内存空间,正确定义与使用数据是编写程占不同的内存空间,正确定义与使用数据是编写程序的基本前提。
序的基本前提。
30变量名的命名方法:
变量名的命名方法:
变量名、数组名、函数名变量名、数组名