C++程序设计海滨学院何凯课程与就业•本课程任务是:强化C++语言的概念。•C++程序员的能力:大规模C++程序编写(动手能力)、数据结构、算法、操作系统知识。•学好本次课程,仅仅需要掌握C++语言中的概念;•成为一名C++程序员,则需要进行大量的编程练习和不断的自学。•举例:孟+国图+计算机专业概念;王+机械系+自学+练习+程序员第一章C++入门•目前使用最为广泛的计算机语言:Java、C++、C•C++包含整个C,C是建立C++的基础•C语言的产生:汤普森和里奇(贝尔实验室)MAC项目(MIT)失败用从MAC学到的东西改善实验室环境汇编语言编写的UNIX操作系统开发出C语言C语言编写的UNIX操作系统汇编语言和C语言的不同之处?汇编语言高度依赖硬件,C语言是与硬件无关的,可移植性好。•汤普森和里奇开发了C和UNIX,两个人共同获得了1983年度的图灵奖。•C语言这么厉害,怎么又出来个C++呢?Java、C++、C是当前使用最为广泛的计算机语言;UNIX、WindowsNT、Linux构成OS的三强鼎立;C语言缺点:1、类型检查较弱,一些错误不能在编译时发现;2、几乎没有支持代码重用的语言机制,因此一个程序员精心设计的程序,很难为其他程序所用。3、当程序的规模达到一定的程度时,程序员很难控制程序的复杂性。•程序1、计算机只能识别机器指令,不能直接识别C、C++程序。CPU内存显示器硬盘QQ.exe文件QQ.exe2、程序员编写的C、C++程序编译链接后,最终形成机器指令。3、计算机中的哪一部分识别机器指令?硬盘,键盘,鼠标,CPU,内存,显示器键盘【3:00点击CPU显示视频】•程序语言的发展CPU-A1、谁来识别或者执行机器指令?CPU2、不同厂商的CPU,使用的机器指令一定相同吗?可能不同。机器指令-ACPU-B机器指令-B汇编语言-A汇编语言-BC、C++等高级语言最早,程序员使用最原始的计算机指令(低级语言)不久,发明了汇编语言(低级语言)高级语言产生A=3*2+B;addecx,ecxinceax8b4df840•C与C++•结构化程序设计和面向对象程序设计1、C++语言包括过程性语言和类部分;过程性语言部分与C并无本质的差别。2、C是过程性语言,它没有类部分。3、学习C++,先学过程性语言部分,再学类部分。1、结构化程序设计的主要思想是功能分解并逐步求精。当一些任务十分复杂以致无法描述时,可以将它拆分为一系列较小的功能部件,易于理解。把程序看成是处理数据的一系列过程。数据和程序分开存储。C语言能很好的支持结构化程序设计。2、结构化程序设计的缺点:当数据量增大时,数据和处理数据的方法之间的分离使程序变得越来越难以理解。程序设计方法正在从结构化程序设计走向面向对象程序设计。3、面向对象程序设计的本质是把数据和处理数据的过程当成一个整体—对象。C++充分支持面向对象程序设计。几个重要的概念“封装和数据隐藏”、“继承和重用”、“多态性”将会在以后介绍。•最简单的程序7:02点击这里查看程序开发过程(源代码文件Cpp1.cpp内容如下)1、C++的程序结构由注释、编译预处理和程序主体组成。2、C++的注释为“//”之后的内容,直到换行。注释仅供读者阅读程序使用。在生产可执行程序之前,C++忽略注释。另外C++兼容C的注释,“/*”和“*/”之间的内容。3、#includeiostream.h称为文件包含预处理命令,把文件iostream.h的内容增加到Cpp1.cpp中。这样才能使用cout。4、C++程序由函数构成,它总是从主函数main()开始运行。//这是最简单的C++程序#includeiostream.hintmain(){coutCHINA!!!endl;}•C++程序经过编辑、编译和连接,产生可运行的exe文件•键盘输入和屏幕输出:cin和cout//这是最简单的C++程序#includeiostream.hintmain(){coutCHINA!!!endl;inta,b,result;coutPleaseinputtwonumbers:\n;cinab;result=3*a-2*b+1;coutresultisresultendl;}2:27点击这里,把程序改造成:有键盘输入和屏幕输出1、一个变量必须在声明之后才能使用;2、C++中定义变量,意味着给变量分配内存空间。3、cinab,从键盘输入两个整数给a和b,两个数之间用空格隔开。4、cout连续输出结果。•C++生成的exe文件如何执行?1:372020/2/24网站(机器)web服务器blog.sina.com.cnnginxblog.sohu.comnginx网络用户上网(blog、新闻)用户上网(qq、视频、音频)请求请求返回结果返回结果谁来接收请求、计算并且返回结果•C++/C的现实应用•C++用函数组织程序……C++程序源程序文件n函数1函数m……源程序文件1函数1函数n⑴一个C++源程序可以由一个或多个源程序文件组成。C++编译系统在对C++源程序进行编译时是以文件为单位进行的。⑵一个C++源程序文件可以由一个或多个函数组成。所有函数都是独立的。主函数可以调用其它函数,其它函数可以相互调用。下面看看函数调用关系。2020/2/24(1)一个C++程序由一个具有固定名称main()的主函数和若干个以标识符命名的其他函数组成。(2)通常用main()函数描述程序的总体框架,其他函数则完成某种特定的子功能。从main开始,到main结束。(3)C++函数是一种独立性很强的程序模块,所有的函数都处于平等地位,不存在从属关系。mainabcd函数类型函数名(类型名形式参数1,…){说明语句执行语句}例如:求两个数的最大值。intmax(intx,inty){intz;z=xy?x:y;return(z);}没有形式参数为无参函数局部变量说明执行语句•函数定义的一般形式•在C++中,一个函数必须在函数声明后才能使用。#includeiostream.h#includemath.hintmain(){doublea,b,c;coutinputtwonumbers:\n;cinab;c=max(a,b);coutthesquart=sqrt(c);}doublemax(doublex,doubley){if(xy)returnx;elsereturny;}1、左侧程序中,先使用了max函数,而后才有max函数的定义声明。2、上面的截图,显示了左侧程序没能通过编译,原因是max未知。•对被调函数进行声明的一般形式函数类型函数名(参数类型1参数名1,…);或函数类型函数名(参数类型1,参数类型2,…);例如:doublemax(doublex,doubley);函数定义包含函数声明。doublemax(doublex,doubley)//函数定义,同时也是函数声明{if(xy)returnx;elsereturny;}main函数{……调用函数A;……}函数A{……调用函数B;……}函数B{………………}•C++程序是函数驱动的#includeiostream.h#includemath.hdoublemax(doublex,doubley);intmain(){doublea,b,c;coutinputtwonumbers:\n;cinab;c=max(a,b);coutthesquart=sqrt(c);}doublemax(doublex,doubley){if(xy)returnx;elsereturny;}1、左侧是C++简单程序结构之模板;2、程序的意思是:用户输入两个数,用max函数求较大者,然后调用标准库函数sqrt求较大者的平方根。3、形参和实参。形参是函数定义中的参数;实参是调用函数时实际传递的值。4、实参与形参的个数必须相等。在函数调用时,实参的值赋给与之相对应的形参。5、函数的返回值是通过return语句带回到主调函数的。return语句终止函数的运行,返回主调函数,若有返回值,将返回值带回主调函数。6、对被调函数的声明,函数定义。形式参数(形参)实际参数(实参)对被调函数的声明函数定义