C++面向对象.ppt_第1页
C++面向对象.ppt_第2页
C++面向对象.ppt_第3页
C++面向对象.ppt_第4页
C++面向对象.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+面向对象程序设计,东华大学理学院葛勇,第一章计算机和C+编程入门,C+的起源与历史 参考资料 C+常用的编译器 学习要点 最简单的C+程序 示范程序讲解 学会使用MinGW来编译、运行程序,C+的起源与历史,Stroustrup工作起于1979年的C with Classes。这个构思起源于 Stroustrup 做博士论文时的一些程序撰写经验。他发现Simula具备很利于大型软件开发的特点,但Simula的执行速度太慢,无法对现实需求发挥功效;BCPL虽快得多,但它过于低阶的特性,使其不适于大型软件的开发。当Stroustrup开始在贝尔实验室工作时,他有分析UNIX核心关于分布式计算的

2、问题。回想起他的博士论文经验,Stroustrup开始为C语言增强一些类似Simula的特点。之所以选择C,是因为它适于各种用途、快速和可移植性。除了C和Simula之外,同时也从其它语言中取得灵感,如ALGOL 68、Ada、CLU以及ML。刚开始时,类别、衍生类别、储存类型检查、内联和预设参数特性,都是透过Cfront引入C语言之中。1985年10月出现了第一个商业化发布。,C+的起源与历史,1983年,C with Classes改命名为C+。加入了新的特性,其中包括虚函数、 函数名和运算符重载、参考、常数、使用者可控制的自由空间储存区控制、改良的类型检查,以及新的双斜线(/)单行批注风

3、格。1985年,发布第一版C +程序设计语言,提供一个重点的语言参考,至此还不是官方标准。1989年,发布了Release 2.0。引入了多重继承、抽象类别、静态成员函式、常数成员函数,以及成员保护。1990年,出版了The Annotated C+ Reference Manual。这本书后来成为标准化的基础。稍后还引入了模板、异常处理、命名空间、新的强制转型,以及布尔类型。,C+的起源与历史,随着C+语言的演变,也逐渐演化出相应的标准链接库。最先加进C+标准函式库的是串流I/O链接库,其用以取代传统的C函式,如printf和scanf。随后所引入的链接库中最重要的便是标准模板库,简称STL

4、。 多年后,一个联合的ANSI-ISO委员会于1998年对C+标准化(ISO/IEC 14882:1998)。在官方释出1998标准的若干年后,委员会处理缺陷报告,并于2003年发布一个C+标准的修正版本。2005年,一份名为Library Technical Report 1(简称TR1)的技术报告释出。虽然还不是官方标准的一部分,不过它所提供的几个扩展可望成为下一版C+标准的一部分。几乎所有目前仍在维护的C+编译器皆已支持TR1。 虽然C+免专利,但标准文件本身并不是免费的。,参考资料,C语言程序设计谭浩强,清华大学出版社 C+程序设计谭浩强,清华大学出版社 C+程序设计语言(特别版)Th

5、e C+ Programming Language, Special Edition Bjarne Stroustrup,机械工业出版社,C+常用的编译器,Turbo C+ Boland C+ C+ Builder Visual C+ 6.0(国内使用较多的,但不符合C+标准的地方比较多,_因为它的发布比C+标准发布的要早) Visual C+.net 2003,2005等(推荐使用) MinGW Developer Studio 2.05(推荐使用),学习要点与重点,1.11.2为自学内容,考试不作要求 主要学习1.3节的内容,掌握最简单的C+程序的编写、学习使用相应的编译器来编译、运行简单

6、的程序,最简单的C+程序,int main() ,示范程序讲解,#include using namespace std; int main() int NumPods, PeasPerPod, TotalPeas; cout“请输入豆荚数量,输入完毕后回车.n“;,示范程序讲解,cin NumPods; cout PeasPerPod; TotalPeas = NumPods * PeasPerPod; cout“您有; cout NumPods; cout“颗豆荚n;,示范程序讲解,cout“且每颗豆荚上有; cout PeasPerPod; cout“颗豆子,那么总的豆子数为:n; co

7、ut TotalPeas; coutendl; ,练习,完成书上P21(7版P22)上的练习16-21 编写程序在屏幕上输出如下图形 * * * *,MinGW Developer Studio2.05,调试、运行程序,1.新建一个工程 在MinGW中点击菜单Project-New Project或按快捷键Ctrl+N,出现如下New对话框,2.在Location一栏中输入要保存工程文件的路径,或点击选择路径。(注意,MinGW对中文的支持不是很好,请尽量使用英文的路径),在Project Name一栏中输入工程名称。然后点击OK钮。 3.点击菜单File-New Files,出现如下New对

8、话框。,4.在上述对话框中的File Name一栏中输入文件名,注意在左边选中”C/C+ Source File”图标,并勾选”Add to project”,然后点击OK钮.,5.现在你可以输入你的程序了。 6.输入完程序后,点击菜单Build-Compile(或Ctrl+F7)进行编译,检查错误,编译无误后,点击Build-Execute Program(Ctrl+F5)运行程序。将出现类似如下窗口,作业,完成书上P.25(7版P27)第5、7、8 作业注意事项: 编程项目作业需按时上交,作为平时成绩; 作业与布置后的下一个周三上交。 本周三上任务: 学习如何使用Visual S(2003

9、或2005版)软件; 完成编程项目作业。,第二章C+基础知识,变量和赋值 C+标识符的命名规则 数据类型和表达式 int类型与double类型 char类型 bool类型 string类型 类型的兼容性与转换,声明变量,#include using namespace std; int main() int number_of_bars; double one_weight, total_weight;/每块糖的重量和总的重量 ,C+标识符(变量的名称)的规则,标识符的名称必须以字母或_开头,后面的字符也只能是字母、数字或_。 C+的标识符是区分大小写的。 C+标识符的长度没有限制,但有的编译

10、器会忽略超过其最大允许长度的所有字符。 C+标识符请使用英文,不要使用中文。 有一类特殊的标识符,称为关键字或保留字,它们在C+中有预先定义的含义,不能用作变量或其他元素。见附录,问题,问题 下面的标识符哪些是合法的,哪些是非法的? x %A _a2bc 3bc RATE+3 data!yab class Class Private 问题 Rate RATE rate在C+中是同一个变量吗?,变量的声明,此外,变量的声明必须要指明变量的类型,在C+中最基本和最常用的变量类型有int,double, char, bool等,变量赋值与初始化,赋值 如前面的示范程序中 TotalPeas = Nu

11、mPods * PeasPerPod; 注意: 变量在赋值时需注意类型的匹配,如果不匹配,则可能导致语法错误,或进行类型的转换。 变量在多次赋值后,前面的值会被后面赋值行为覆盖。,变量赋值与初始化,如: /设NumPods * PeasPerPod的结果为10 TotalPeas = NumPods * PeasPerPod; TotalPeas =15; cout TotalPeas; 的结果是?,15,变量的初始化,变量在声明的时候可以进行赋值,称为初始化。如: int minimum_number=3; double rate=0.07, time, balance=0.0; doubl

12、e rate(0.07), time, balance(0.0); 注意: 变量在初始化时,有两种方式,如上所示。 变量在初始化时,可以只对部分变量初始化。,未初始化的变量(undefined variable),设计Min没有进行初始化,则如下语句 number=Min+10; 则可能会导致非常严重的后果。,提示:尽量使用有意义的名称 如:x=y*z; 则不如 distance=speed*time; 更容易理解。,练习,完成P.34(7版P.36)的自测题,输入和输出,使用cout进行输出 include预编译指令和命名空间 转义序列 格式化带小数点的数字 用cin进行输入 练习,使用co

13、ut进行输出,cout可将变量值和文本字符串输出到屏幕。变量和字符串可组合输出,如: coutBarNum“颗糖果n; cout的多个可分行,如上面的语句可如下书写 cout BarNum 颗糖果n; 但要注意一个cout只能有一个;号,之间不能有空格,也可以使用多个cout来输出,如: cout BarNum; cout颗糖果n;,转义序列,常用的转义序列有: n换行符 t水平制表符 v竖直制表符 a响铃符 反斜杠 双引号 b退格符(将之前输出到屏幕的字符擦去一个),换行符,这些转义符中的n可用endl来代替,如: coutYou have definitely wonn; 和 coutYo

14、u have definitely wonendl; 作用是一样的,但要注意endl要使用号来输出,格式化带小数点的数字,设double类型的变量price=78.5,那么语句 cout“价格为: $priceendl; 输出的结果是78.5,但如果希望是78.50等,那么如何控制小数点后的位数呢? 如果我们希望小数点后输出位,则可以,cout.setf(ios:fixed); cout.setf(ios:showpoint); cout.precision(2); coutThe price is $priceendl;,用cin进行输入,cin的使用与cout的使用非常类似,如: cin

15、BarNum one_weight; 可在一条语句中列举多个变量,也可写为: cin BarNum one_weight; 但只能有一个分号,当程序运行到cin语句时,它会等待用户从键盘输入,它将第一个变量设为从键盘输入的第一个值,第二个变量设为从键盘输入的第二个值,依此类推。但是除非用,用cin进行输入,户按Enter键,否则程序不会读取输入。用户也可以按Esc键来纠正输入错误。 注意输入的各个数字必须以一个或多个空格或者以一个换行符来分隔。计算机会忽略任意数量的空格或换行符,径值找到下一个输入值。因此,无论你用一个空格还是用多个空格,甚至用一个换行符来分隔,都是无关紧要的。,练习,书上P.

16、41(7版P.44)的10、11,数据类型和表达式,int类型和double类型,int类型与double类型,2与2.0的区别 整数与浮点数 浮点数的科学记数法如3.67e4就是367004.9e-3是0.0049 其他数字类型,如:long, float, long double char类型 bool类型 string类型简介,char类型,char类型变量的声明格式如下 char ch,letter; char类型的变量只可容纳键盘上的任何一个字符,如: ch=a; letter=+; ch=n 等都是合法的,但 letter=A; letter=ab; 等是不合法的,前者因为双引号界

17、定的是字符串,char类型,后者是因为单引号内的字符超过一个而不合法。,char类型示例,#include using namespace std; int main() char s1,s2,s3; couts1s2;,char类型示例,coutThe two initials are:n; couts1s2endl; coutOnce more with a space:n; s3= ; couts1s3s2endl; coutThats all.; ,运行示范,运行示范,bool类型,bool类型的声明与初始化可如下进行 bool IsLetter=true, IsNumeric=fal

18、se; bool类型的变量只接受true或false,该类型主要用于分支和循环执行语句,即if-else语句和while, dowhile以及for循环中 整形值如果给bool类型变量赋值则需要进行隐式转换,如: bool IsBig=2, Small=0;,string类型简介,string类是用来处理字符串的一个类,使用该类之前,需要在预编译中加入 #include 并使用命名空间std using namespace std; string类型变量的声明与基本的数据类型如int、 double类型的声明一样,如: string str=我是一名学生;,string类示例,#include

19、 #include using namespace std; int main() string FirstName,LastName; cout请输入您的姓名(包括姓和名):n;,string类示例,cinFirstNameLastName; cout您的姓为:FirstNameendl; cout您的名为:LastNameendl; string Name=FirstName+LastName; cout您的姓名为:Nameendl; ,运行结果,cin输入两个字符串时的注意事项,注意在输入两个字符串时,中间的空格不能是中文空格,区分中文空格与英文空格是中文空格的大小是英文的两倍,类型的兼

20、容性与转换,如果把一个值赋值给一个类型不一致的变量,则会产生类型兼容性的问题,在编译器允许的范围内,则可能进行类型的转换,如: int IntVar; IntVar=2.99; 则需要把double类型常量2.99转换成整型值2后,再对int类型变量IntVar赋值,再如: double DoubleVar=2;,类型的兼容性与转换,则需要将2转换成2.0后再赋值给double类型变量DoubleVar,再如: char ch=65; 则需要把整型变量65转换成65在ASCII表中所对应的字符A,而 int AscA=A 则将字符A转换成它的ASCII值65,再赋值给变量AscA,有关ASCII表可参见书上附录3(P705),bool类型与int类型转换,int IntVar

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论