《上机调试程序方法.ppt》由会员分享,可在线阅读,更多相关《上机调试程序方法.ppt(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ObjectOrientedProgrammingu计算机与信息学院 李丽珊OOP 学时安排学时安排理理 论论 教教 学学 内内 容容 学学 时时1 C+语语言特点言特点42 面向面向对对象程序象程序设计设计概述概述23 类类和和对对象象84 派生派生类类与与继继承承65 多多态态性性86 模板模板27 C+的的I/O流流48 面向面向对对象系象系统统开开发发基基础础6总总 计计40 本课程共本课程共6060学时,学时,3.53.5学分,理论教学学分,理论教学4040学时,实践教学时,实践教学学2020学时学时OOP教材章教材章节节 1 C+的初步知的初步知识识 2 类类和和对对象象 3 关于
2、关于类类和和对对象的象的进进一步一步讨论讨论 4 运算符重运算符重载载 5 继继承与派生承与派生 6 多多态态性与虚函数性与虚函数 7 输输入入输输出流出流 8 C+工具工具教教 学学 内内 容容 1 C+语语言特点言特点2 面向面向对对象程序象程序设计设计概述概述3 类类和和对对象象4 派生派生类类与与继继承承5 多多态态性性6 模板模板7 C+的的I/O流流8 面向面向对对象系象系统统开开发发基基础础 教学内容与教材章节对应关系教学内容与教材章节对应关系补充知识:补充知识:面向对象相关知识面向对象相关知识MFC基础和基础和ViC可视化开发基础可视化开发基础 UML相关知识相关知识3.111
3、.3.5OOPC+语言特点语言特点1面向对象程序设计概述面向对象程序设计概述2类和对象类和对象3派生类与继承派生类与继承4多态性多态性5模板模板6C+的的I/O流流7面向对象系统开发基础面向对象系统开发基础8 目录目录第第1 1章章 C+C+语言特点语言特点OOPn了解:C+与C的关系以及二者的相同点和不同点;n掌握:C+的非面向对象语言特征。目的要求目的要求OOPC+的起源和特点、与的起源和特点、与C的关系的关系 最简单的最简单的C+C+程序程序C+C+对对C C的扩充的扩充C+C+程序的编写和实现程序的编写和实现关于关于C+C+上机实践上机实践 授课内容授课内容OOP1.1 C+的起源和特
4、点、与的起源和特点、与C的关系的关系 C C语语言言是是七七十十年年代代初初贝贝尔尔实实验验室室的的Dennis Dennis RichieRichie 等等人人在在B B语语言言基基础础上上开开发发出出来来的的。C C最最初初是是作作为为UNIXUNIX操操作作系系统统的的开开发发语语言言为为人人们们所所认认识识。七七十十年年代代末末,随随着着微微型型计计算算机机的的发发展展,C C语语言言开开始始移移植植到到非非UNIXUNIX环环境境中中,并并逐逐步步脱脱离离UNIXUNIX系系统统成成为为一一种种独独立立的的程程序序设设计计语语言言。C C 语语言言版版本本很很多多,为为了了让让开开发
5、发出出来来的的代代码码能能够够在在多多种种平平台台上上运运行行,19881988年年美美国国国国家家标标准准协协会会ANSIANSI对对C C语语言言进行了标准化,产生了进行了标准化,产生了ANSI CANSI C。OOP(1 1)C C语语言言既既具具备备高高级级语语言言的的结结构构和和编编程程环环境境,又又提提供供类类似似于于汇汇编编语语言言那那样样的的系系统统资资源源操操纵纵能能力力及及程程序序执执行行效效率。率。适合解决有实时要求的问题。适合解决有实时要求的问题。C C 语言的主要特点:语言的主要特点:(2 2)有有丰丰富富的的运运算算符符和和数数据据类类型型,表表达达式式类类型型多多
6、样样化化,可可以以方方便便地地实实现现在在其其他他语语言言中中较较难难实实现现的的运运算算,对对各各种种不不同类型的程序设计都有良好的适应性。同类型的程序设计都有良好的适应性。(3 3)以以函函数数为为基基础础实实现现程程序序的的结结构构化化设设计计,支支持持大大型型程程序序的的多多文文件件构构成成及及单单个个文文件件独独立立编编译译,适适合合大大型型复复杂程序的设计。杂程序的设计。(4 4)语语言言简简洁洁、紧紧凑凑,使使用用方方便便、灵灵活活,书书写写形形式式自由。自由。(5 5)可移植性好。可移植性好。OOPC+C+是是由由C C发发展展成成为为的的以以面面向向对对象象为为主主要要特特征
7、征的的语语言言。作作为为C C语语言言的的超超集集,C+C+继继承承了了C C的的所所有有优优点点,又又对对数数据据类类型型做做了了扩扩充充,使使得得编编译译系系统统可可以以检检查查出出更更多多类型错误。类型错误。C+C+支持支持面向对象程序设计面向对象程序设计,通过类和对象的概念,通过类和对象的概念把数据和对数据的操作封装在一起,通过派生、继承、把数据和对数据的操作封装在一起,通过派生、继承、重载和多态性等特征实现了软件重用和程序自动生成,重载和多态性等特征实现了软件重用和程序自动生成,使得大型复杂软件的构造和维护变得更加有效和容易。使得大型复杂软件的构造和维护变得更加有效和容易。此外,在此
8、外,在一致性(一致性(ConsistencyConsistency)检查机制检查机制方面也方面也作了加强,提高了软件开发的效率和质量。作了加强,提高了软件开发的效率和质量。OOPC+C+与与C C完完全全兼兼容容,很很多多用用C C编编写写的的库库函函数数和和应应用用程程序都可以为序都可以为C+C+所用。所用。但但正正是是由由于于与与C C兼兼容容,使使得得C+C+不不是是纯纯正正的的面面向向对对象象的的语语言言,它它既既支支持持面面向向对对象象程程序序设设计计,也也支支持持面面向向过过程程设设计计。但但我我们们应应当当注注意意用用面面向向对对象象的的思思想想进进行行设设计,以发挥出计,以发挥
9、出C+C+的优势。的优势。C+C+有有许许多多版版本本,国国内内较较为为流流行行的的有有MicrosoftMicrosoft公公司司的的Visual C+Visual C+。OOPC+C+对对C C的的“增强增强”,表现在两个方面:,表现在两个方面:(1)(1)在在原原来来面面向向过过程程的的机机制制基基础础上上,对对C C语语言言的的功功能能做做了不少扩充。了不少扩充。(2)(2)增加了面向对象的机制。增加了面向对象的机制。面面向向对对象象程程序序设设计计,是是针针对对开开发发较较大大规规模模的的程程序序而而提提出来的,目的是提高软件开发的效率。出来的,目的是提高软件开发的效率。学学习习C+
10、C+,既既要要会会利利用用C+C+进进行行面面向向过过程程的的结结构构化化程程序序设计,也要会利用设计,也要会利用C+C+进行面向对象的程序设计。进行面向对象的程序设计。OOP运行结果:This is a C+program.1.2 最简单的最简单的C+C+程序程序#include /包含头文件iostreamusing namespace std;/使用命名空间stdint main()coutThis is a C+program.;return 0;例例1.11.1u用main代表“主函数”的名字。每一个C+程序都必须有一个 main 函数。必须声明main函数的类型,无返回值时要声明为
11、void类型。一般声明为int,如程序正常结束,向操作系统返回一个零值,不能正常结束时返回一个非0值。OOPu在初学C+时,只需知道:如果程序有输入或输出时,必须使用“#include”命令以提供必要的信息,同时要用“using namespace std;”,使程序能够使用这些信息,否则程序编译时将出错。u“using namespace std;”的意思是“使用命名空间std”。C+标准库中的类和函数是在命名空间std中声明的,因此程序中如果需要用到C+标准库,就需要用“using namespace std;”作声明,表示要用到命名空间std中的内容。u文件iostream的作用是向程序
12、提供输入或输出时所需要的一些信息。iostream是i-o-stream 3个词的组合,代表“输入输出流”的意思。OOP#include using namespace std;int main()int a,b,sum;cinab;sum=a+b;cout“a+b=”sumendl;return 0;例例1.21.2#include using namespace std;int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);int main()int a,b,m;cinab;m=max(a,b);cout“max=”m n;retur
13、n 0;例例1.31.3OOP例例1.31.3的程序可以改写如下:的程序可以改写如下:#include using namespace std;int main()int max(int x,int y);/对max函数作声明 int a,b,c;cinab;c=max(a,b);/调用max函数 coutmax=cy)z=x;else z=y;return(z);OOPint main()stud1.setdata();stud2.setdata();stud1.display();stud2.display();return 0;程序运行情况如下:1001 98.5 1002 76.5 输
14、出结果:num=1001score=98.5num=1002score=76.5#include using namespace std;class Student private:int num;int score;public:void setdata()cinnum;cinscore;void display()coutnum=numendl;coutscore=scoreendl;Student stud1,stud2;例例1.4:1.4:一个包含类和对象的C+程序。OOP在一个类中包含两种成员:数据和函数数据和函数,分别称为数据成员和成员函数数据成员和成员函数。在C+中把一组数据和有
15、权调用这些数据的函数封装在一起,组成一种称为“类类(class)”的数据结构。成员函数成员函数是用来对数据成员进行操作的。也就是说,一个类是由一批数据以及对其操作的函数组成的。类可以体现数据的封装性和信息隐蔽。在大多数情况下,会把所有数据指定为私有,以实现信息隐蔽。具有“类类”类型特征的变量称为“对象对象”(object)。OOP在上面的程序中:数据成员num,score和成员函数setdata,display组成了一个名为Student的“类”类型。在声明Student类时,把类中的数据和函数分为两大类:private(private(私有的私有的)和和public(public(公用的公用
16、的)。把全部数据(num,score)指定为私有的,把全部函数(setdata,display)指定为公用的。OOP1.3 C+C+对对C C的扩充的扩充u使用以”/”开头的注释u对变量的定义可以出现在程序中的任何行(但必须在引用该变量之前)u提供了标准输入输出流cin和coutu用const定义常变量u函数模板,简化同一类型的函数的编程工作u使用带默认值的参数的函数,使函数的调用更加灵活OOPu提供变量的引用类型,将引用作为函数形参,可以实现通过函数的调用来改变实参变量的值u增加了内置函数(内嵌函数),以提高程序的执行效率u作用域运算符:,这样在局部变量作用域内也能引用全局变量u用strin
17、g类定义字符串变量,使字符串运算更加方便u用new和delete运算符代替malloc和free函数,使分配动态空间更加方便1.3 C+对对C的扩充的扩充(续续)OOP1.3.1 C+的输入输出的输入输出u输入和输出并不是C+语言中的正式组成成分,而是在编译系统提供的I/O库中定义的。uC+的输出和输入是用“流”(stream)的方式实现的。uC+中,可以用cin和cout函数进行输入输出.OOPcout语句的一般格式为 coutcout表达式表达式11表达式表达式22变量变量11变量变量22变量变量n;n;在定义流对象时,系统会在内存中开辟一段缓冲区缓冲区,用来暂存输入输出流的数据。在执行c
18、out语句时,先把插入的数据顺序存放在输出缓冲区中,直到输出缓冲区满或遇到cout语句中的endl(或n,ends,flush)为止,此时将缓冲区中已有的数据一起输出,并清空缓冲区。输出流中的输出流中的数据在系统默认的设备数据在系统默认的设备(一般为显示器一般为显示器)输出。输出。OOP1.3.2 用用const定义常变量定义常变量u加上关键字const,变量的值在程序运行期间不能改变,这种变量称为常变量常变量(constant variable)。u在定义常变量时必须同时对它初始化(即指定其值),此后它的值不能再改变。u可以用表达式对常变量初始化例例:const int a=3;/用cons
19、t来声明为常变量,指定其值始终为3 const int b=3+6,c=3*cos(1.5);/b的值被指定为9,c的值被指定为3*cos(1.5)OOP1.3.3 函数原型声明函数原型声明C+要求在函数调用之前调用之前必须对所调用的函数做函数原型声明.函数声明的一般形式为:函数类型函数类型 函数名函数名(参数表参数表);参数表中一般包括参数类型和参数名OOP1.3.4 函数的重载函数的重载 C+允许用同一函数名定义多个函数,这些函数的参数个数和参数类型不同。这就是函数的函数的重载重载(function overloading)。即对一个函数名重新赋予它新的含义,使一个函数名可以多用。重载函数
20、的参数个数参数个数、参数类型参数类型或参数顺序参数顺序3者中必须至少有一种不同必须至少有一种不同,函数返回值类型可以相同也可以不同。OOP例1.6求3个数中最大的数#include using namespace std;int main()int max(int a,int b,int c);double max(double a,double b,double c);long max(long a,long b,long c);int i1,i2,i3,i;cini1i2i3;i=max(i1,i2,i3);couti_max=id1d2d3;d=max(d1,d2,d3);coutd_m
21、ax=dg1g2g3;g=max(g1,g2,g3);coutg_max=ga)a=b;if(ca)a=c;return a;double max(double a,double b,double c)if(ba)a=b;if(ca)a=c;return a;long max(long a,long b,long c)if(ba)a=b;if(ca)a=c;return a;运行情况如下:185 -76 567 (输入3个整数)56.87 90.23 -3214.78 (输入3个实数)67854 -912456 673456 (输入3个长整数)i_max=567 (输出3个整数的最大值)d_m
22、ax=90.23 (输出3个双精度数的最大值)g_max=673456 (输出3个长整数的最大值)OOP#include using namespace std;int main()int max(int a,int b,int c);int max(int a,int b);int a=8,b=-12,c=27;coutmax(a,b,c)=max(a,b,c)endl;coutmax(a,b)=max(a,b)a)a=b;if(ca)a=c;return a;int max(int a,int b)if(ab)return a;else return b;例例1.7 求两个整数或求两个整数
23、或3个整数中的最大数。个整数中的最大数。运行情况如下:max(a,b,c)=27max(a,b)=8OOP1.3.5 函数模板函数模板u所谓函数模板函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。u凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。u用函数模板比函数重载更方便,程序更简洁。OOP#include using namespace std;template /模板声明,其中模板声明,其中T为类
24、型参数为类型参数T max(T a,T b,T c)/定义一个通用函数,用定义一个通用函数,用T作虚拟作虚拟的类型名的类型名if(ba)a=b;if(ca)a=c;return a;int main()int i1=185,i2=-76,i3=567,i;double d1=56.87,d2=90.23,d3=-3214.78,d;long g1=67854,g2=-912456,g3=673456,g;i=max(i1,i2,i3);/调用模板函数,此时调用模板函数,此时T被被int取代取代 d=max(d1,d2,d3);/调用模板函数,此时调用模板函数,此时T被被double取代取代 g
25、=max(g1,g2,g3);/调用模板函数,此时调用模板函数,此时T被被long取代取代 couti_max=iendl;coutf_max=fendl;coutg_max=gendl;return 0;例例1.8:OOP 定义函数模板的一般形式为 template template T或或 template template 通用函数定义通用函数定义 通用函数定义通用函数定义类型参数可以不只一个,可以根据需要确定个数。如template template 注意:注意:只适用于函数的参数个数相同参数个数相同而类型不同类型不同,且函数体相同函数体相同的情况,如果参数的个数不同,则不能用函数模板
26、。OOP1.3.6 有默认参数的函数有默认参数的函数u多次调用同一函数且用同样的实参,可以给形参一个默认值。u这种方法比较灵活,可以简化编程,提高运行效率。例例1:函数声明 float area(float r=6.5);函数调用:area();/相当于area(6.5);area(7.5);/不想取默认值,通过实参另行给出。OOPu有多个形参,可以使每个形参有一个默认值,也可可以使每个形参有一个默认值,也可以只对一部分形参指定默认值,另一部分形参不指定以只对一部分形参指定默认值,另一部分形参不指定默认值。默认值。例例2 2:函数声明:float volume(float h,float r=
27、12.5);函数调用:volume(45.6);/相当于volume(45.6,12.5)volume(34.2,10.4)/h的值为34.2,r的值为10.4u实参与形参的结合是从左至右顺序进行的。因此指指定默认值的参数必须放在形参表列中的最右端定默认值的参数必须放在形参表列中的最右端,否则出错。OOP例例3 3:函数声明:void f1(float avoid f1(float a,intint b=0 b=0,intint c c,char d=a);/char d=a);/不正确不正确void f2(float a,int c,int b=0,char d=a);/正确函数调用:f2(
28、3.5,5,3,x)/形参的值全部从实参得到f2(3.5,5,3)/最后一个形参的值取默认值af2(3.5,5)/最后两个形参的值取默认值,b=0,d=au在调用有默认参数的函数时,实参的个数可以与形实参的个数可以与形参的个数不同参的个数不同,实参未给定的,从形参的默认值得到值。OOP在使用带有默认参数的函数时有两点要注意注意:(1)什么时候设定默认值:函数定义函数定义中给出:函数的定义在函数调用之前函数的定义在函数调用之前函数声明函数声明中给出:函数的定义在函数调用之后函数的定义在函数调用之后,在函数定义时可以不给出默认值。(2)一个函数不能既作为重载函数,又作为有默认不能既作为重载函数,又
29、作为有默认参数的函数。参数的函数。OOP1.3.7 变量的引用变量的引用引用又称别名。例:例:int a;int&b=a;说明:(1)引用不是一种独立的数据类型不是一种独立的数据类型,必须与某一种类型的数据相联系。(2)引用与其所代表的变量共享同一内存单元共享同一内存单元。(3)区别区别声明引用变量还是取地址操作:引用的声明前面引用的声明前面有类型符有类型符。(4)对引用的初始化,可以用一个变量名,也可以用另一个引用(5)引用初始化后不能再重新声明为另一个变量的别名初始化后不能再重新声明为另一个变量的别名OOP1.3.8 内置函数内置函数u能在编译时将所调用函数的代码直接嵌入到主调函数中的函数
30、称为内置函数内置函数(inline function),又称内嵌函数内嵌函数。在有些书中把它译成内联函数内联函数。节省了调用函数所需要的时间和空间的开销。u在函数首行的左端加一个关键字inline即可指定内置函数。OOP例1.13函数指定为内置函数。#include using namespace std;inline int max(int,int,int);/声明函数,注意左端有inlineint main()int i=10,j=20,k=30,m;m=max(i,j,k);coutmax=ma)a=b;/求a,b,c中的最大者 if(ca)a=c;return a;OOP例1.15用内
31、置函数实现求平方值#include using namespace std;inline int power(int x)return x*x;int main()coutpower(2)endl;coutpower(1+1)endl;return 0;运行结果是:4 (输出power(2)的值)4 (输出power(1+1)的值)OOP注意:注意:u在声明函数和定义函数时同时写同时写inline,或只在其中一处声明只在其中一处声明inline,都能按内置函数处理。u使用内置函数可以节省运行时间节省运行时间,但却增增加了目标程序的长度加了目标程序的长度。u内置函数中不能包括复杂的控制语句不能包
32、括复杂的控制语句,如循环语句和switch语句。u只有那些规模较小而又被频繁调用的简单只有那些规模较小而又被频繁调用的简单函数函数,才适合于声明为inline函数。OOP1.3.9 作用域运算符作用域运算符u作用域运算符:,能指定所需要的作用域。u注意:不能用”:”访问函数中的局部变量u见教材P26例例1.16OOP1.3.10 字符串变量字符串变量uC+新的一种数据类型字符串类型(string类型),可以用来定义变量,这就是字符串变量用一个名字代表一个字符序列。u实际上,string并不是C+语言本身具有的基本类型,它是在C+标准库中声明的一个字符串类,用这种类可以定义对象。每一个字符串变量
33、都是string类的一个对象。u要使用string类的功能时,必须有文件包含#include OOP1.定义字符串变量:用类名string2.对字符串变量的赋值可以用赋值语句对它赋予一个字符串常量也可以用一个字符串变量给另一个字符串变量赋值。不要求两个字符川长度相同。可以对字符串变量中某一字符进行操作例例1:string string1;/定义string1为字符串变量 string string2=China;/定义string2同时对其初始化 string1=Canada;string2=string1;例例2:string word=“Then”;/定义并初始化字符串变量word wor
34、d2=a;/修改后word的值为”Than”OOP3.字符串变量的输入输出用在cin,cout语句中直接用字符串变量名输入输出字符串如:cin string1;cout string2;4.字符串变量的运算u字符串复制用赋值号“=”string1=string2;u字符串连接用加号“+”string string1=C+;string string2=Language;string1=string1+string2;u字符串比较直接用关系运算符OOP5.字符串数组u在一个字符串数组中包含若干个元素,每个元素相当于一个字符串变量。u不要求每个字符串元素具有相同的长度,即使对同一个元素而言,它的长
35、度也是可以变化的。u在字符串数组的每一个元素中存放一个字符串。u每一个字符串元素中只包含字符串本身的字符而不包括0。OOP如:ustring name5;/定义一个字符串数组,它包含5个字符串元素ustring name5=“Zhang”,”Li”,”Fun”,”Wang”,”Tan;此时name数组的状况如图所示。OOP1.2.4 字符串运算举例字符串运算举例例1.17 输入3个字符串,要求将字母按由小到大的顺序输出。#include int main()string string1,string2,string3,temp;coutstring1string2string3;if(stri
36、ng2string3)temp=string2;string2=string3;string3=temp;/使串2串3 if(string1=string2)coutstring1“string2“string3endl;/如果串1串2,则串1串2串3 else if(string1=string3)coutstring2“string1“string3endl;/如果串1串2,且串1串3,则串2串1串3 else coutstring2“string3“string1endl;/如果串1串2,且串1串3,则串2串3串1运行情况如下:please input three strings:Chi
37、na U.S.A.GermanyChina Germany U.S.A.OOP1.3.11 动态分配动态分配/撤销内存的运算符撤销内存的运算符 C+提供了运算符运算符new和和delete来取代C语言中的malloc和free函数。new运算符使用的一般格式为运算符使用的一般格式为new 类型类型 初值初值 用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL。delete运算符使用的一般格式为运算符使用的一般格式为delete 指针变量指针变量OOP#include#include using namespace std;struct
38、 Student /声明结构体类型Student string name;int num;char sex;int main()Student*p;/定义指向结构体类型Student的数据的指针变量 p=new Student;/用new运算符开辟一个存放Student数据的空间 p-name=Wang Fun;/向结构体变量的成员赋值 p-num=10123;p-sex=m;coutnameendlnumendlsexendl;delete p;/撤销该空间 return 0;例例1.18 开辟空间以存放一个结构体变量。开辟空间以存放一个结构体变量。OOP从从C+源程序到可执行程序的步骤:源
39、程序到可执行程序的步骤:编辑、预处理、编译、连接、调试1.4 C+C+程序的编写和实现程序的编写和实现n 编辑编辑是将源程序输入计算机,生成后缀为是将源程序输入计算机,生成后缀为.cppcpp的文件。的文件。n 编译(编译(compilecompile)是将程序的源代码转换成机器语言代码。是将程序的源代码转换成机器语言代码。编译后,会生成一个编译后,会生成一个.objobj的目标文件,为源程序的目标代码。的目标文件,为源程序的目标代码。n 目标代码需要相互衔接成为一个适应一定操作系统环境目标代码需要相互衔接成为一个适应一定操作系统环境的程序整体,即的程序整体,即连接(连接(linklink)。
40、C+C+程序通常是通过同时连程序通常是通过同时连接一个或多个目标文件以及一个或几个库而创建的。接一个或多个目标文件以及一个或几个库而创建的。n 库(库(.lib.lib)是一组由机器指令构成的程序代码,是可连)是一组由机器指令构成的程序代码,是可连接文件。库有标准库和用户生成的库。标准库是由接文件。库有标准库和用户生成的库。标准库是由C+C+提供提供的,用户生成的库是由软件开发商或程序员提供的。文件与的,用户生成的库是由软件开发商或程序员提供的。文件与库连接的结果,即生成一个后缀为库连接的结果,即生成一个后缀为.exe.exe的计算机可执行程序。的计算机可执行程序。OOPC+源源程程序序C+预
41、预处处理理后后的的C+源源程程序序目目标标程程序序可可执执行行程程序序运运行行程序员程序员调试调试出错信息出错信息编辑器编辑器预处理器预处理器C+编译器编译器链接器链接器OOP1.5 关于关于C+C+上机实践上机实践C C+的的运行运行环境环境Microsoft公司的公司的Visual C+6.0Borland公司的公司的Borland C+5.02等等等等OOP在VisualC+6.0运行环境中建立C+应用程序的过程演示OOPOOP建立新工程(Project)OOPOOPOOPOOPOOPOOPOOP建立新文件(File)OOPOOPOOPOOPOOPOOP编辑、编译及运行程序OOP实例程序
42、:/*功能:从键盘接收两个整数,输出显示其中的较大数。*/#includevoidmain()inta,b,max;/声明三个整型变量coutab;/从键盘接收两个整数赋给a、bif(a=b)max=a;/若ab则将a赋给maxelsemax=b;/否则将b赋给maxcoutThemaxis:maxendl;/输出max并换行OOP.cpp文件.h文件.exe文件存入软盘将结果OOP关闭工程,准备输入下一个程序OOPOOPOOPOOPOOPALTCOMAPP向导(com应用)资源类创建向导普通app向导(app就是application应用程序)数据类程序开发和设计附加向导扩展存储程序向导ap
43、i扩展向导制作文件控制向导mfcapp向导(用于生成dll)mfcapp向导(用于生成exe)新建数据类型向导通用程序win32应用程序(做有界面的)win32控制台应用程序(黑框)win32动态链接库win32静态链接库OOP比较比较Win32 ApplicationWin32 Application和和Win32 Console Win32 Console ApplicationApplication u都是工作在32位Windows环境的程序。u其中Win32 Application 就是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如圆形的、不规则形状的 它们都是所谓的GUI
44、(Graphics User Interface图形用户接口),我们可以通过鼠标点击来完成控制。u而Win32 Console Application(win32控制台应用程序)往往是像MS-DOS窗口(XP中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它;或者叫CUI(Character User Interface字符用户接口)。OOP活动服务页 Binary File 二进制文件位图文件C/C+头文件C+源文件光标文件HTML Page HTML网页lcon档案Macro File 宏观档案脚本文件资源模板SQL Script File SQL文本文件 OOP (1)启动Vi
45、sual C+6.0,打开File菜单,执行New菜单命令,出现New对话框。在Project页面窗口中选择Win32 Console Application选项,创建一个Win32控制台应用程序。在Project name编辑框中输入项目名称tc1,在Location编辑框中输入保存项目的路径。(2)在Win32 Console Application-Step1 of 1对话框中设置控制台应用程序的类型。这里我们要创建一个空项目程序,因此选择第一项An empty project,单击Finish按钮,出现New Project Information对话框,单击OK按钮,将生成一个空项目
46、。OOP(3)向项目 tc1 中添加源程序文件。打开Project菜单,选择Add to Project|New,出现如图1-3所示的添加项目文件对话框。在的Files页面窗口中选择C+Source File,在右边的File编辑框中输入C+源程序文件名称cp1,在Location编辑框中输入保存该文件的路径。单击OK按钮,在主窗口Developer Studio左边的项目工作区窗口的Souce Files文件夹目录下出现cp1.cpp文件,双击该文件,在右边的编辑窗口中输入源程序代码。(4)编译运行源程序cp1.cpp。打开Build菜单,选择Build cp1.exe命令项或按快捷键F7,系统开始对项目cp1进行编译、连接,同时在输出窗口中显示出编译的内容,当出现Hello.exe 0 error(s),0 warning(s)字样时,表示cp1.exe可执行文件已经正确无误地生成了。在Build菜单中选取Execute cp1.exe命令项或按快捷键Ctrl+F5,就可以运行刚刚生成的cp1.exe。