您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C++语言程序设计电子教案1资料
第1章C与C++YYH版•教材:《面向对象的程序设计语言—C++》人民邮电出版社陈志泊等编•教参1:《C++大学教程(第二版)》[美]Harvey电子工业出版社邱仲潘等编•教参2:《C/C++程序设计》Decoder编著21世纪高校计算机系列教程中国铁道出版社•教参3:《C++程序设计教程》刘瑞挺等译21世纪高校计算机系列教程中国铁道出版社•教参4:《VisualC++面向对象与可视化程序设计》黄维通编著(2002年教育部高校优秀教材二等奖)清华大学出版社第1章C与C++YYH版《C++语言程序设计》《C++语言程序设计习题与实验指导》课程网址:网站内容:–电子讲稿–实验指导第1章C与C++YYH版第1章C与C++1.1C语言与C++的关系1.2C++语言的开发环境各种函数、其它数据类型的声明或定义#include各种含许多功能的标准文件;voidmain()//执行函数{语句和函数}C++程序结构(主要是由语句函数组成):补充(教材上无)说明部分执行部分第1章C与C++YYH版1.1C语言与C++的关系1.1.1C++发展历史简介(1)CC++面向对象程序设计方法语言有C++;VC++;VB。C++是Bjarne1980年在贝尔实验室开发的基于C语言面向对象语言,83年正式称为C++语言。(TurboC、BorlandC、DevC等)(2)特点:它既保留了C语言的有效性、灵活性、便于移植和接近汇编语言等全部精华和特点,又添加了面向对象编程的支持(主要是增加类的功能),具有功能强大、易于扩充等编程优良特性,适宜应用软件、系统软件(如Windows等)的程序设计。1.1.2C++与C语言C语言是C++语言的子集,C++与C语言具有良好的兼容性,用C编写的程序可接在C++环境下运行,反之不一定。C++语言对C语言在结构化方面做了一定程度的扩展。后介绍。第1章C与C++YYH版发展:C语言C++(TurboC++/BorlandC++等)VisualC++;特点:C与C++基于DOS平台;VC++基于WINDOWS平台;VC++是在C++基础上的一种可进行Internet、数据库、多媒体等面向对象的功能强且最难学的一种语言。C++语言与C语言最显著的区别是它的面向对象的特征,引进了类与对象的概念。类封装了一组数据结构和作用于该数据结构的一组方法,下面对C++语言将着重围绕类来进行介绍。归纳第1章C与C++YYH版上机:在VisualC++6.0环境下上C/C++机的操作:(1)建立Project:在VC++6.0的主界面选“File(文件)”下的“New(新建)”在“Project”下选“Win32ConsoleApplication”键入ProjectName等选“Anemptyproject”(注意:只能选此,因对C++建立project后还要输入程序,而对VC++6.0的MFC方法则不同—自动建立Project框架)选“Finish”选“Ok”;(2)输入源程序:在VC++6.0的主界面选”File(文件)”下的“New(新建)”在File下选“C++SourceFile”在C++的程序框中输入程序在“Build”下对当前的程序进行编译,最后执行即可;(注:VC++操作:选“File”下的“New”选“Project”中的“MFCAppWizard”在“ProjectName”输入工程名“OK”….见后)第1章C与C++YYH版1.1.3C++的扩展(与C语言)1.函数原型对C语言,使用一个函数前可不加以说明/声明;对C++语言,任何一个函数在使用前,必须有函数原型的说明/声明,声明函数的返回值类型及参数的类型(以确定有同名函数时的一一对应关系)。说明:使用函数原型,可以避免错误调用函数(可能有同名但不同类型或有不同参数的函数,容易错误调用),这样的错误可以由编译器在编译时发现;如果使用C语言的函数声明习惯,则不能在编译阶段检查出此类错误;现代C语言标准已经引进了函数原型说明。第1章C与C++YYH版2.函数重载对C语言,相同功能但类型不同的函数多使用不同的函数名;对C++语言,可实现函数重载,即多个函数在同一作用域可以用相同的函数名,只要各同名函数参数形式不完全相同(如参数的类型、个数等不同)或函数的类型不同的函数。编译器即可在编译时可根据实参的个数和类型来选择对应匹配的重载函数版本。函数重载的具体内容可见。例如(对两个同名函数abs):intabs(intn){returnn0?-n:n;}floatabs(floatn){returnn0?-n:n;}i=abs(5);//调整型的求绝对值函数f=abs(-2.5);//调实型的求绝对值函数条件函数:如果n0则为-n,否则为n第1章C与C++YYH版3.缺省参数对C++语言,允许在函数原型中初始化(即对参数赋缺省值)。当函数调用时,若给出的参数个数少于函数表中参数的总数时,则所缺参数自动取函数参数表中设置的缺省值。如:voidf(intx,inty=10){…//此处省略函数体内容}调用语句:f(2);就相当于f(2,10)。函数可以有多个缺省参数,但应注意只能从右往左缺省,例如:intf1(intx,inty=0,intz=0);//正确intf2(intx,inty=0,intz);//错误4.注释C语言:注释用/*注释内容*/;C++语言:注释用/*注释内容*/或//注释内容第1章C与C++YYH版结构名:用struct可定义一个结构体的数据类型(相当于表格)。例如:structstudent{charname[10];intnumber;intpage;};则在定义该结构类型变量时可以使用如下方式:students1,s2;4.枚举名与结构名枚举名:可用enum定义枚举型数据名,如:enumErrCode{noErr,overflow};错误代码有两个枚举值noErr,overflow,ErrCode就是一个类型名字,可用其定义该枚举类型而不必在枚举类型名ErrCode前加标识符enum。第1章C与C++YYH版5.作用域标识符(范围分解符::)在C++语言中增加了作用域标识符(或称为名字解析运算符)“::”,用以解决局部变量名与全局变量的同名重复问题。在局部变量的作用域内可用作用域标识符::对被其隐藏的同名全局变量进行访问。下面是一个简单的例子:intx=0;//定义全局变量xvoidtest(intx)//定义局部变量x(相当于x){x=5;//此处引用局部变量(相当于x)::x=9;//此处引用全局变量}第1章C与C++YYH版在C++中,当全局变量和某函数内的局部变量同名时,该函数对全局变量起屏蔽作用,即在该函数内无法访问此全局变量,而在该函数执行完毕时即释放掉该局部变量,只要在其前使用范围分解符::即可访问同名的全局变量。例如(类同上例):floatn;voidmain(){intn;n=5;//给局部变量n赋值::n=5.53;//给全局变量n……}同理,对属于不同类A和B的同名函数,可在类B中用“类A::函数”使用类A中的同名函数。第1章C与C++YYH版6.程序块中的变量声明将几个语句用大括号{、}组合起来就构成了一个程序块。在C语言中,变量的声明只允许出现在程序块的开始,而在C++语言中变量声明可以出现在任何位置。如下面的程序片断:for(inti=0;i10;i++){sum+=i;}在for语句的第一个表达式中定义变量i用作循环变量。7.常量C++语言中增加了常量类型,或称为只读变量。常量用标识符const声明,它的值在作用域内保持不变。例如:constintmaxSize=128;constintintArray[]={1,2,3,4,5,6};第1章C与C++YYH版声明常量指针,则该指针的指向是固定的,不能指向其它单元/对象(即把指针本身声明为一个常量,而不是把它指向的对象声明为一个常量),例如(指针str为“Hello,world!”的地址):char*conststr=“Hello,world!”;//指向一个字符串作了以上声明后,下面的赋值是非法的:str=“Hi,there!”(指针str内容为“Hi,there!”单元的地址而不是“Hello,world!”单元的地址);但*str=‘m’是合法的(因指针内容没变,只是指向的对象内容变了,即将‘m’赋给指针str所指的单元)。声明一个指向常量,则该指针指向的单元/对象声明为一个常量,而指针本身可变,例如:constchar*str2=“Hello,world”。此时指针str2所指向的对象(即单元“Hello,world”)不可改变,但str2本身可被改变(即指针str的内容可改变),有了以上声明后常量指针和指向常量第1章C与C++YYH版下面的运算是非法的:*str2[1]=‘a’(指向另一个字符);*str2=‘x’(指向另一个数据);而str2=&str(因只将str的地址赋给str2,而指针*str2的指向的常量未变)是合法的。归纳之,常量指针是指针内容不变;指向常量是指向常量的内容不变。项目常量指针指向常量声明int*constp1;constint*p1;合法*p1=v1;p1=&v1;不合法p1=&v1;*p1=v1只将v1的内容赋给指针p1所指的单元,而未改指针p1将v1的地址赋给指针p1而改变了指针p1只将v1的地址赋给指针而未直接改变指针p1所指单元的内容将v1的内容赋给指针p1所指的单元,而改变了指针p1p1所指的内容第1章C与C++YYH版8.内置函数内置函数用标识符inline来定义。编译时,就对内置函数在其调用处进行内置替换,将内置函数的代码插入在调用处,从而消除执行过程中的函数调用要转入和转出所带来的开销。内置函数通常用于规模小而常用的函数,它与带参数的宏替换相似,但其处理方法不同。宏替换由预处理程序进行简单的字符串替换,在替换过程中不进行语法的检查;而内置函数由C++编译器进行处理,在插入代码之前即进行语法检查。下面是一个简单的例子:inlineintmax(intx,inty){if(xy)returnx;elsereturny;}第1章C与C++YYH版1.2C++语言的开发环境1.2.1常见C++编译器简介使用C++语言开发应用程序的过程与C语言相同,首先输入源程序,然后使用编译器编译生成目标代码文件,再由连接程序生成可执行的二进制文件,最后运行之。目前,越来越多地使用图形用户界面的Windows95和WindowsNT。Windows环境下,微软公司与Borland公司都有自己的C++编译器,如微软的VisualC++6.0、Borland公司的BorlandC++5.0、C++Builder等,它们所提供的不仅仅是C++编译器,而是一个完整的开发平台。在学习C++基本语法的过程中,建议读者使用DOS系统下的BorlandC++3.1。它的集成环境简单易用,而且提供了强大的调试功能。下面先简单介绍一下BorlandC++3.1的使用,本书的第9章将详细介绍VisualC++开发平台的使用。第1章C与C++YYH版1.2.2BorlandC++3.1的使用1.安装(略)2.操作方法是:选择File菜单下的New,BorlandC++3.1打开一个新的源程序编辑窗口如图1.2所示输入源程序然后按F2保存源程序(也可以使用File菜单下的Save),源程序文件的扩展名为CPP选择Run菜单下的Run即可编译执行程序。3.说明:如果程序在编译连接过程中有错误,错误信息可在Message窗口中看到。如果是编译已存在的源程序文件,可用File菜单下的Open功能装入该程序文件。如果要编译执行多个源程序文件构成的项目,需要建立一个项目文件,即选择Project菜单下的Open功能,输入项目文件名,如果该文件存在,则打开该项目文件
本文标题:C++语言程序设计电子教案1资料
链接地址:https://www.777doc.com/doc-3262997 .html