ImageVerifierCode 换一换
格式:PPT , 页数:462 ,大小:1.24MB ,
资源ID:12591033      下载积分:5 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/12591033.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(VC++6.0-MFC-入门到实践.ppt)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

VC++6.0-MFC-入门到实践.ppt

1、Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Visual C+,从入门到实践,第,1,章,Visual C+,6.0,集成开发环境概述,Visual C+6.0,是微软推出的一个功能强大的可视化集成开发环境。它提供了软件代码自动生成和可视化的资源编辑功能。,Visual C+6.0,提供了功能强大的向导工具,包括,MFC AppWizar,d,、,ClassWizard,和,MFC ActiveX ControlWizard,等。

2、Visual C+6.0,同时提供了对数据库开发和,Internet,的强大支持。本章讲解的知识点包括:,Visual C+,概述;,Visual C+6.0,集成开发环境介绍;,Visual C+6.0,界面概览;,Visual C+6.0,开发步骤与环境设定。,1.1 Visual C+,概述,Visual C+,是一个功能强大的可视化软件开发工具。,Visual C+6.0,不仅是一个,C+,编译器,而且是一个基于,Windows,操作系统的可视化集成开发环境。,Visual C+,大概可以分成三个主要的部分:,C+,编译环境、微软基础类库和,SDK Platform,。,1.1.1

3、Visual C+,的语言基础,C+,语言,C+,是美国贝尔实验室的,Bjarne Stroustrup,博士在,C,语言的基础上,弥补了,C,语言存在的一些缺陷。增加了面向对象的特征,而开发出来的一种面向对象和过程性的程序设计语言。,Visual C+,作为一款优秀的,C/C+,语言的编译工具。,Microsoft,公司于,1993,年推出,Visual C+1.0,,随后,Visual C+,版本不断升级。但其中以,Visual C+6.0,拥有较多的用户。虽然已经推出了更新的版本,但,Visual C+6.0,更有较大的市场。,1.1.2 Visual C+,的接口函数,Windows

4、API,Windows API,(,Application Programming Interface,,应用程序编程接口)是一套用来控制整个,Windows,系统的接口函数库。,Windows,拥有多达成百的,API,函数。在,Windows,中,无论是进行任何的操作,系统都会利用这些函数来进行一定的控制。例如单击鼠标时,系统就会从硬件得到消息,然后在软件上利用,API,函数进行鼠标单击消息的发送、接收,进而产生一定的动作。,1.1.3 Visual C+,的类库,MFC,Microsoft,基础类库(,Microsoft Foundation Class Library,,,MFC,)的本

5、质是一个包含了许多已经定义好了的类的类库。,MFC,是微软提供的,封装了大量,Windows API,的,C+,类库。它基本封装了,Windows,的所有,API,函数。因此,利用,MFC,建立应用程序更加符合面向对象的思想。同时利用向导所建立的应用程序隐藏了程序设计的很多细节,如消息的管理、设备环境绘图。,1.2 Visual C+6.0,集成开发环境概述,Visual C+,自诞生以来,一直是,Windows,下最主要的开发工具之一。利用,Visual C+,开发环境可以完成各种各样的应用程序的开发。从软件的底层到软件的界面设计,,Visual C+,都提供了强大的支持。而且,,Visua

6、l C+,强大的调试功能也为大型复杂软件的开发提供了有利的保障。,近年来多媒体技术的快速发展,可视化程序设计越来越得到重视,而,Visual C+6.0,最为一款最优秀的可视化开发环境得到程序员的喜爱。友好的编程界面,强大的向导功能,微软公司的大力支持使,Visual C+,成为当今软件开发最优秀的工具之一。,1.2.1 Visual C+6.0,的安装,Visual C+6.0,作为,Visual Stdio,的主打产品。读者可购买整个,Visual Stdio,光盘进行,Visual Stdio,整个软件开发家族的安装。当然读者也可以在安装时自定义选择性安装。例如读者可以只选择安装,Vis

7、ual C+6.0,。,1.2.2,开发环境窗口介绍,当成功安装了,Visual C+6.0,以后,会在桌面上自动生成一个应用程序图标。双击该图标后可以进入,Visual C+6.0,的主界面。此时由于没有任何工程是活动的,整个界面是灰色的。当进入,Visual C+6.0,并利用向导工具创建一个基于,MFC AppWizardexe,的名字为,test,的项目文件后,显示窗口如图,1.9,所示。,1.3 Visual C+6.0,界面概览,Visual C+6.0,是一款优秀的开发工具,本节详细介绍,Visual C+6.0,开发环境的的布局,以及开发环境的使用。,1.3.1 Visual

8、C+6.0,开发环境布局,双击桌面上的“,Microsoft Visual C+6.0”,图标,,Visual C+6.0,启动后,生成项目后的开发环境的具体布局如图,1.10,所示。,1.3.2 Visual C+6.0,菜单介绍,进行程序设计之前,首先介绍各个菜单命令的基本功能。程序员大部分操作是通过菜单来进行的,同时,Visual C+6.0,提供了多个快捷菜单,在开发环境的各个工作区右击即可弹出相应的快捷菜单,在此不再介绍。下面对主窗口的菜单及其功能进行介绍。,1,File,菜单,2,Edit,菜单,3,View,菜单,4,Insert,菜单,5,Project,菜单,6,Build,

9、菜单,7,Tools,菜单,1.3.3 Visual C+6.0,工具栏介绍,工具栏是一种图形化的操作界面,熟练掌握工具栏的使用可以提高编程效率。工具栏包括一些操作按钮,分别对应一些命令,可以单击按钮进行操作。,Visual C+6.0,包含有很多工具栏,可以通过“,Tools”,菜单进行定制,也可以在菜单栏或工具栏上右击,在弹出的快捷菜单中定制工具栏。常用的工具栏包括“,Standard”,和“,Build MiniBar”,,如图,1.13,所示。,1.3.4 Visual C+6.0,控件面板介绍,项目工作区包括“,Class View”,、“,Resourse View”,和“,Fil

10、eView”,三个面板。下面对三个面板进行具体介绍。,1,Class View,面板,2,Resourse View,面板,3,FileView,面板,1.3.5,资源编辑器介绍,Visual C+6.0,提供了资源编辑工具,用户可以方面的使用该工具创建资源如图标、光标、位图、菜单以供,Windows,程序使用。在,Visual C+6.0,中,资源编辑器为了引入资源,定义了一种与资源一一对应的符号。这样,资源可以方面的被使用。,1.3.6,输出窗口介绍,Visual C+6.0,提供了一个输出窗口,它主要输出程序编译的结果,同时显示错误代码的行数,并给出错误提示。程序员可以在输出窗口中查看错

11、误的提示,根据提示修改程序,大大加快了程序开发的效率。在程序的调试过程中,可以在输出窗口中观察变量的值变化,从而分析程序,如图,1.18,所示。,1.4 Visual C+6.0,开发步骤与环境设定,Visual C+6.0,作为一款优秀的开发工具,其编译链接的设定是比较重要的。如果设定不当,程序将无法运行。本节将介绍利用,Visual C+6.0,开发的步骤,以及编译环境的设定。,1.4.1,程序的开发步骤,编写任何程序都应该严格按照软件工程的程序设计规范进行,利用,Visual C+6.0,进行程序开发的基本步骤可以概括如下:,(,1,)分析问题。编写任何一个程序,都应该首先从实际问题中抽

12、象出来其数学模型,求解出解决方法,并用一定的工具进行描述。,(,2,)编辑程序。编写源程序,利用,Visual C+6.0,的代码编辑工具编写代码。,(,3,)编译程序。编译源程序,生成目标文件。,(,4,)链接程序。将一个或多个目标文件与库函数进行连接后,产生可执行文件。,(,5,)运行调试程序。程序的错误不仅仅是语法方面的,更重要的是逻辑错误,必须进行严格的测试后,程序才可以发布。,1.4.2,开发环境的设定,Visual C+6.0,是功能强大的开发环境,编译连接的选项较多,如果不能正确设置,程序将不能编译或者出现其他错误。单击“,Tools”|“Options”,弹出“,Options

13、对话框,如图,1.19,所示。在此对话框中可以对,Visual C+6.0,开发环境进行设定。,1,Directories,设置,2,调整代码字体颜色和字体大小设置,1.5,程序设计入门实例,hello word!,本小节给出一个利用,Visual C+6.0,开发应用程序的实例,了解基本的操作步骤,菜单和工具栏的使用。,1.6,上机实践,1,创建一个简单的应用程序,了解菜单,工具栏的使用,熟悉,Visual C+6.0,集成开发环境。,2,下载,speech sdk 5.1,开发包,进行环境设置以包含所下载的开发包文件。,1.7,小结,本章介绍了,Visual C+6.0,集成开发环境的

14、安装与卸载,重点讲解了,Visual C+6.0,的菜单的常用命令,同时介绍了,Visual C+6.0,的项目工作区和资源编辑器的使用。讲解了,Visual C+6.0,开发环境的设置。通过学习本章,读者应该了解,Visual C+,开发环境的特点,掌握,Visual C+6.0,环境的设置方法。掌握一般应用程序的开发步骤。,1.8,习题,1,简单描述利用,Visual C+6.0,开发应用程序的步骤?,2,如何使用,Visual C+6.0,的资源编辑器创建资源文件?,3,如何为,Visual C+6.0,添加新的头文件搜索目录?,第,2,章,C+,语言基础,C+,语言是对传统,C,语言进

15、行面向对象的扩充。它是在,C,语言的基础上增加了对面型对象程序设计的支持,其语法特点和,C,语言十分接近。使用,C+,语言可以在,Visual C+,开发环境中开发出功能强大的应用程序。本章讲解的知识点包括:,数据类型;,运算符;,表达式;,控制结构。,2.1,面向对象程序设计概述,对象是是面向对象程序设计技术的核心,那么到底什么是对象?世界上的一切事物都是对象都是客观对象。人大脑中的认识和概念也是对象。可见对象可以是有形的实体,也可以是无形的认识、知识、事件等。概括的说对象就是一个实体,它具有一个名字标志,并且具有自身的状态和功能。面向对象的编程方法具有四个基本特征:,1,抽象,2,继承,3

16、封装,4,多态性,2.2,数据类型,数据类型就是一类数据的集合。在计算机中,数据以某种特定的形式存储在计算机中,数据类型决定了数据在计算机中的存储形式。,2.2.1,常量与变量,常量是指在程序运行中,数值不能改变的量。例如,13,、,28,、,a,、,2.3,等,这些量在整个程序运行期间,其值不发生改变。在,C+,中,定义常量的语法如下所示。,#define,标识符 常数,其中,,#,表示这是一个宏定义命令;,define,为定义符号常量的关键字;标识符为常量的名称;常数为符号常量具体的数值。常量定义中关键字和标识符,以及标识符和常数之间必须留一个以上的空格。,2.2.2,简单类型,C+,语

17、言中的简单数据类型是指基本的数据类型,即整型、实型、字符型等。下面介绍其特点和用法。,1,整型,2,实型,3,字符型,2.2.3,字符串常量,字符常量是有单引号括起来的单个字符,,C+,语言同,C,语言一样,除了字符常量外,还支持字符串常量。字符串常量是由一对双引号括起来的字符序列。,字符串常量和字符常量的区别是字符串常量在每一个字符串的最后一个字符的后面加上一个字符串结束标志,从而在程序访问时可以判断字符串的字符序列是否结束。,2.2.4,构造类型,C+,语言中除了基本数据类型外,还提供了构造数据类型,即数组。数组是有序数据的组合,数组中的每一个元素都属于同一数据类型,这和,C,语言中的数组

18、是完全一致的。数组包括一维数组和多维数组。数组的定义格式和引用方式与在,C,语言中是一致的。,2.2.5,文件类型,C+,语言中提供了文件的数据类型,即,C+,把文件看做是字符序列,即文件是由一个一个字符数据顺序组成的,根据数据结构的组织形式,可以把文件分为文本文件和二进制文件。在,C+,中若要对文件进行输入输出,必须首先创建一个流,然后将流和文件相关联,即打开文件,此时才可以进行操作,然后关闭文件。由于文件的使用比较复杂,在后面的章节中将详细的介绍,C+,中文件的基本操作。,2.2.6,指针类型,C+,语言中的指针和,C,语言中的指针是完全一样的。但是,C+,语言中提供了特殊的指针,即,vo

19、id,型指针。它表示不确定的类型。,void,型指针是一种通用型指针,也就是说任何类型的指针都可以赋值给,void,型的指针变量。,2.3,数组,数组作为一种构造数据类型,它的使用和基本类型有很大不同。因此有必要对数组这一数据类型进行介绍。,2.3.1,一维数组,数组是有序数据的集合。在,C+,中一维数组的定义方式和,C,语言中一维数组的定义方式完全相同。并且使用方式,以及使用的注意事项都有,C,语言中基本一致。,1,一维数组的定义,2,数组的初始化,3,一维数组的使用,2.3.2,二维数组,在,C+,中二维数组与,C,语言中的二维数组的定义是一样的。一维数组是一行有序数据的结合,而二维数组则

20、是一个有序数据的一个矩阵。,1,二维数组的定义,2,二维数组的初始化,3,二维数组的使用,2.3.3,字符型数组,前面已经介绍了在定义一维或者二维数组时,需要指定其类型说明符。类型说明符是基本数据类型,例如整型、浮点型、字符型等。但是字符数组与其他数组有时不同,下面对字符数组的特殊用法进行介绍。,1,字符数组的定义,2,字符串与字符数组,3,字符数组的输入输出,2.4,运算符,运算符就是表示变量之间进行数学运算或其他运算的符号。,C+,中的运算符基本沿用了,C,语言中的运算符,常见的运算符有以下几类:赋值运算符、算术运算符、逻辑运算符、关系运算符、位运算符、逗号运算符和条件运算符。本节对,C+

21、语言中常用的运算符进行介绍。,2.4.1,赋值运算符,赋值运算符就是赋值符号“,=”,,它的作用是将一个数据赋给一个变量。在赋值操作中最常见的操作就是不同类型间的赋值,例如把整型常量赋值给实型变量,这中操作是合法的,但是发过来却是非法的。在实际的应用过程中应该注意同型变量之间进行赋值。尽量减少不同类型的赋值操作。,2.4.2,算术运算符,基本的算术运算符包括“,+”,、“,-”,、“*”、“,/”,和“,%”,。程序设计中的算术运算不可能是同种类型之间的操作。因此就出现不同类型进行运算后的类型问题。,C+,语言规定,两个整数相除的结果为整数,如,9/4,的结果为,2,,舍去小数部分。在参加,

22、/,的运算中,如果有一个数为实数,则结果为,double,型。,2.4.3,逻辑运算符,在程序设计中,使用较多,技巧性最强的运算就是逻辑运算。在循环语句和条件语句中,经常需要根据需要进行转移,其中最常用的就是逻辑运算符。“,|”,是选择性判断“或”,可以对条件中的或条件进行判断进行转移。“,&”,是“与”需要程序中的多个条件都满足条件才可以转移。“!”是非判断,即程序中某条件不满足什么情况时进行转移。,2.4.4,关系运算符,关系运算是和逻辑运算一样,在程序设计中经常用到。逻辑运算最常用的是判断某种具体值是否属于某类情况。例如计算,1,加到,100,的值,则需要从,1,加到

23、100,,期间需要判断变量是否大于,100,,从而设计程序。关系判断在程序设计中也是十分重要的运算。,2.4.5,位运算符,位运算是在程序设计中不经常使用,但是应用技巧性很强的一类运算。为运算主要包括“,”,,“,”,,“,”,和,“,&,”,。,“,”,是右移运算符,实际上就是变量除二。“,”,是按位取反运算符,即把变量的二进制取反。“,”,是把两个变量按位进行异或。,“,&,”,是两个变量按位相与。,2.4.6,逗号运算符,逗号运算符是一类比较特殊的运算符,其是将多个表达式连接起来。逗号运算符又称为顺序求值运算符。,2.5,表达式和语句,由运算符构成的式子称为,C+,语言的表达式。常见的

24、表达式有赋值表达式,算术表达式和逗号表达式。赋值表达式是由赋值运算符构成的表达式,例如,int a=10;,虽然赋值表达式十分简单,但其应用广泛。函数的返回值可以直接作为赋值表达式右半部分,例如函数,int fun(),,我们可以这样写出赋值表达式,int i=fun(),。逗号表达式即前面讲解的由逗号运算符构成的表达式。,2.6,程序控制结构,C+,语言中有三种基本的程序控制结构,分别是顺序结构、选择结构和循环结构。几乎所有应用软件都会使用这三种程序控制结构。顺序结构比较简单,程序按照语句的顺序执行。选择结构和循环结构可以完成很多复杂的功能。本节对三种控制结构进行分析,讲解操作实例。,2.6

25、1,顺序结构,顺序结构是最简单、最常用的程序结构。顺序结构的典型特点是程序完全按照语句出现的先后次序执行。在顺序结构的程序中,最常用的是赋值语句。赋值语句是,C+,程序中最基本的语句,其作用是将表达式的值赋给变量或对象。赋值语句的语法格式如下。,name=expression;,其中,,name,为变量或者对象,,expression,为表达式。,2.6.2,选择结构,选择结构是利用条件语句实现的。根据指定的条件表达式的结果,选择符合条件的某一分支执行相关操作。条件语句中的条表达式通常是关系表达式、逻辑表达式、数字表达式或者字符串表达式。,选择结构程序设计是应用程序设计过程中较为常用的结构。

26、关系运算符是选择结构中常用的判断语句。在,C+,语言中常用的就是,ifelse,语句,其最常用的形式有下面三种形式:,1,第一种样式,2,第二种样式,3,第三种样式,2.6.3,循环结构,循环程序设计也是程序设计中常用的结构之一。程序中一些代码段需要重复执行以实现某些功能。例如程序中要计算,1,加到,100,的值,那么如果选择顺序结构,那么相加语句至少要写,99,条,而如果使用循环结构,程序的结构会十分清晰。循环结构中常用的形式是,for,循环,,while,循环和,do while,循环,以及,goto,语句。,1,for,循环,2,while,循环,3,goto,语句,4,do-while

27、循环,5,break,和,continue,语句,2.7 C+,的输入输出,在,C,语言中进行,I/O,操作时使用的语句是,scanf,和,printf,语句。,scanf,和,printf,语句所使用的格式控制符与输入输出数据必须完全一致,但是,C,语言的编译器不会去检查这些问题,造成编程中的一些困难。在,C+,语言中使用了更安全和更方便的,I/O,操作,即,C+,使用标准的输入输出流。,C+,预定义的标准流如表,2-3,所示。,1,标准输入,2,标准输出,流名,含义,隐含设备,cin,标准输入,键盘,cout,标准输出,屏幕,ceer,标准出错输出,屏幕,clog,ceer,的缓冲形式,

28、屏幕,2.8,编程实例与调试,通过本章的学习,掌握了,C+,语言的基础知识,下面介绍,C+,程序设计中代码编写和程序调试的基本方法。,2.8.1,代码编写,分析基本问题后,就需要把实际问题抽象成一定的数学模型,然后通过软件设计工具进行描述后,根据此流程图编写程序。,代码编写是程序中的基本工作之一,当把问题的数学模型做好以后,根据数学模型作出程序流程图,剩下的工作就是去编程实现。因此代码编写把数学模型去实现。那么代码编写要注意哪些问题呢?,首先是注意根据程序流程图编写代码。,然后注意代码的习惯。,最后就是注意对代码的重复使用。,2.8.2 Visual C+,项目文件介绍,在利用,Visual

29、C+,进行软件开发时会在当前的工程目录下生成多个类型的文件。例如后缀名为,.cpp,文件是源码文件,而后缀名为,.h,文件是头文件。根据第一章使用向导创建的控制台的应用,其目录下生成的文件的后缀名如下:,.dsp,文件:,.dsw,文件:,.plg,文件:,.opt,文件:,.ncb,文件:,.h,文件:,.cpp,文件,2.8.3,调试与运行,程序代码编写完成后不可能没有错误,甚至说程序的逻辑错误比起语法错误更为严重。因此程序的调试就显的尤为重要。程序调试中可以利用单步执行,手工进行查找程序中的错误,然后进行排错。当然可以里哟没那个软件工程中的软件测试方法进行软件测试,确保软件的正确性。一般

30、来说在,Visual C+,中常用的测试是单步运行和断点测试。,2.9,本章实例,数据排序,【,示例,2.38】,设计一个程序,对输入的十个整数按照从小到大进行排序。,2.10,上机实践,1,编写程序,求解,1+2+3,+99,的值。,2.11,小结,本章主要介绍了,C+,的基本语法知识。,C+,语言是,C,语言在面向对象的扩充。,C+,语法和,C,语言的语法基本是相同的,,C+,使用了新的,I/O,。通过本章的学习,掌握,C+,程序设计的基本步骤,掌握一般程序的调试方法。,2.12,习题,1,什么是面向对象的程序设计?,2,C+,语言的数据类型和运算符有哪些?,3,常用的程序设计结构包括哪几

31、种?其特点分别是什么?,4,简述常用的几种循环结构的形式和特点。,5,编写程序筛选,100,以内的素数。,6,编程实现打印下面的图案。,7,输入,10,个数据,从小到大进行排序并在屏幕上输出结果(利用,while,循环和,do-while,循环两种方法)。,第,3,章 函数,函数是实现某个特定功能的程序段。一个较大的程序需要由若干模块组成。模块化设计是当今软件工程所提倡的软件设计方法。一个,C+,程序可以由一个主函数和若干个子函数构成。函数的使用是当今软件设计中最为重要的方法之一。本章讲解的主要内容包括:,函数的定义;,函数的调用;,函数运用实例。,3.1,概述,程序设计中可以用函数的形式设计

32、能够完成某个功能的代码段。在整个软件中由主函数调用其它函数,其它函数之间也可以相互调用,同时一个函数可能被调用一次或多次。,3.2,函数定义,程序设计中经常需要进行函数的设计,函数的使用一般包括函数的定义和函数的使用。本小结就函数的定义进行介绍。,3.2.1,函数定义的一般形式,C+,程序中函数的定义形式如下:,类型标识符 函数名(参数列表),声明部分,语句,3.2.2,函数参数,在上面可以看到函数的定义中有参数列表,那么什么是函数参数呢?在程序中主函数和其他函数进行调用的时候,一般都会有数据的传递,这就是参数。当然有的函数是没有参数的。下面先给出一个简单的函数定义及调用的例子。,3.2.3,

33、函数的返回值,通常,函数的调用都可以返回一个特定的值,即函数的返回值。例如比较大小的函数,我们需要得到最大的值,利用赋值语句可以把函数的返回值赋给变量。下面对函数返回值进行说明。,(,1,)函数的返回值通过函数的,return,语句获得。,(,2,)函数的返回值的类型即函数的定义的类型。,(,3,)当函数返回值与函数定义的类型不同时,系统自动进行转换,得到函数定义的类型的返回值。,3.3,函数的调用,函数定义后,需要在程序中使用该函数来完成某种功能,上面的例子已经简单的进行了函数调用,本小节会系统的对函数调用进行说明。,3.3.1,函数调用的一般形式,函数的一般调用形式为:,函数名(实参表列)

34、一个函数有可能拥有一个或者多个参数,当然也可以没有参数。在函数定义是需要指定函数的参数,此时的函数参数称为形参。在函数调用时需要对这个函数传递变量,此时所传递的变量称为实参。一般情况下实参和形参的个数应该是相等的,但是,C+,语言有可能存在默认参数,所以实参和形参的个数有可能不同。函数调用有以下几种形式:,1,函数语句,2,函数表达式,3,函数作为参数,3.3.2,函数的嵌套调用,在,C,语言中,函数可以嵌套调用,在,C+,中函数的嵌套调用和,C,语言中是完全一致的。首先介绍函数的嵌套调用,除了主函数外,普通函数中也可以调用其他函数,这样就是函数的嵌套调用。,3.3.3,函数的递归调用,在调

35、用一个函数时,直接或间接的再次调用本身,那么此种调用就称为函数的递归调用。函数递归调用有可能出现函数无休止调用的情况,因此函数的递归调用一定有某种跳出语句,即应当在满足某种条件下进行递归调用,否则不进行递归调用。,3.4,函数应用实例与调试方法,函数的应用非常广泛,那么函数如何调用,又是如何返回到主程序中的呢?本小节就这些问题进行讨论。,3.4.1,函数应用实例的代码编写,函数应用首先就需要编写函数的代码。那么如何确定函数如何去编写呢?要编写一个函数,首先需要知道此函数要完成的功能是什么,然后去确定函数的参数,参数和函数的功能是密不可分的。例如函数功能是实现比较两个数,那么函数的返回值就是较大

36、或者较小的数,当然有可能返回其他值。但是返回值肯定是在程序中需要得到的。如绦蛉肥挡恍枰杓品祷刂担敲纯梢苑祷,0,,或者设计函数为,void,类型。下面结合实例进行分析。,3.4.2,断点跟踪调试,调试程序时,经常利用设置断点使程序可停止的运行,这样可以在程序中动态的查看变量的值。断点设置的方法是:在要设置断点的位置单击,光标闪动,右击,在弹出的快捷菜单中单击“,Insert/Remove Breakpoint”,命令即可在光标处设置以断点。取消时同样是在要取消断点的那一行右击,在弹出的快捷菜单中单击“,Remove Breakpoint”,命令即可取消本行的断点,或者利用弹出的快捷菜单的“,D

37、isable Breakpoint”,命令和“,Enable Breakpoint”,设置断点状态。下面结合一个实例介绍利用断点跟踪调试的基本方法。,3.5,本章实例,汉诺塔游戏,函数的应用十分广泛,利用函数可以完成某一个功能,这样就使整个程序模块化更加清晰。下面给出函数综合应用的具体实例。,【,示例,3.12】,编程实现汉诺塔游戏,输入一个整数(不大于,10,),输出转移过程。,3.6,上机实践,1,利用函数递归调用求解的值,其中,N,不大于,5,。参考代码:,3.7,小结,本章讲解了函数的定义和使用,讨论了函数的嵌套和递归。对于,C+,语言,函数的使用非常重要。利用函数可以进行某一模块功能

38、的实现,使得程序可以进行模块化设计。在学习本章时,读者应该多进行上机操作,同时注意,C+,中语言的嵌套和递归的特点。了解,C+,中常用的库函数,以及函数所在的头文件。,3.8,习题,1,什么是函数?,2,用递归法把一个整数,m,转化为倒叙排列。列入,345,变为,543,。,m,的位数不确定,可以为任意位数的整数。,3,八皇后问题:在,8*8,的国际象棋上摆放八个皇后,使其不能相互攻击,即任意的两个皇后都不能处于同一行,同一列或同一条斜线上。问有多少种摆放方法。(提示:利用递归函数实现),第,4,章,C+,的面向对象编程,C+,是面向对象的程序设计语言,类是其实现面向对象的工具。类是面向对象程

39、序设计(,OOP,)实现信息封装的基础,是,C+,语言最重要的特性。类是进行数据封装和数据保护的工具。本章主要知识点为:,类和对象的基本概念;,友元;,派生类;,继承与多重继承;,多态;,函数重载和运算符重载;,虚函数。,4.1,类和对象的基本概念,类是现实事物共有特征的抽象,而对象是类的具体实例。在面向对象的程序设计中,总是先声明类,再由类生成其对象。类是建立对象的模板,对象则是类的一个实例。,4.1.1,从结构到类,在,C,语言中有一种自定义的数据类型:结构体。结构体中可以函数不同的数据类型。,C+,语言把结构体进行扩充,它不仅可以含有不同的数据类型,而且可以含有函数。在,C+,中结构体的

40、定义形式如下:,struct,结构体名,成员表列,变量名表列,;,struct,是定义结构体的关键字,后面的结构体名是结构体的名称。在结构体中可以定义一个或多个成员变量或这函数。当然也可以不定义变量,此时称为空结构体。变量名表列是在定义结构体时,同时定义结构体变量。也可以不定义变量,在后面用到的地方在定义结构体变量。需要注意的是结构体右括号的变量名表列后面需要添加一个“,;”,。,4.1.2,成员函数的定义,类中含有两种成分:数据成员和函数成员。函数成员又称为成员函数。成员函数的定义有两种方式。,1,方式一,2,方式二,4.1.3,对象的定义与使用,对象是类的具体实例,定义好类以后必须去定义类

41、的对象才可以真正的去实现类的功能。一般情况下对象的定义有下面两种情况。,1,声明类时直接定义对象,2,声明类之后再定义对象,4.1.4,对象的作用域,类是面向对象的体现,它具有一定的数据保护功能。类的作用域就是类的保护功能的机制。类的作用域是指类的声明部分中的一对花括号所形成的作用域。一个类的所有成员都在该类的作用域内。在上面的例子中已经看到类的私有成员变量不可以在类的外部所访问,因此需要定义一个公有成员函数间接的访问类的私有成员。,4.2,构造函数和析构函数,类是一种用户自定义的数据类型。定义一个类的对象时,编译程序需要为对象分配存储空间,进行必要的初始化工作。在,C+,中类的构造函数就是去

42、实现这部分功能。,4.2.1,构造函数,构造函数是一种特殊的成员函数,它主要进行一些初始化工作。构造函数有一些基本性质:,(,1,)构造函数和类的名字相同。,(,2,)构造函数不具有返回值。,(,3,)定义对象时,系统自动调用构造函数。,(,4,)构造函数是公有函数,但它不可以被显示调用。,4.2.2,默认参数的构造函数,对于有参数的构造函数,在定义对象时必须给构造函数传递参数。实际情况中,虽然有些构造函数有参数,但其参数是不变的,这就是默认参数的构造函数。此时构造函数的形式如下:,类名,(,函数名,)(,参数,1=,默认值,参数,2=,默认值,.),构造函数中的参数与普通函数的参数是一样的,

43、所谓的默认参数即为该参数设置一个默认的取值。可以为全部或者部分参数设置默认值。,4.2.3,析构函数,析构函数也是一种特殊的成员函数,它执行和构造函数相反的工作。析构的特殊性质如下:,(,1,)析构函数名称与类名相同,但前面加一个“,”,。,(,2,)一个类中只有一个析构函数,并且该函数不带任何参数。,(,3,)当撤销对象时编译系统自动调用析构函数。,(,4,)若程序员没有定义析构函数,编译系统会生成析构函数。,4.2.4,重载构造函数与拷贝构造函数,C+,允许重载构造函数,所谓的重载构造函数是指允许在类中有多个构造函数。当然这些构造函数肯定是有区别的。各个构造函数必须拥有不同的参数个数或者参

44、数类型。,4.3,友元,类的主要特点是是数据隐藏,即类的私有成员只可以被类的内部使用,但是有的时候需要在类的外部访问类的私有成员,为此,C+,利用了一种新的机制,友元。,4.3.1,友元函数,友元函数不是类的成员函数,而是独立于当前类的外部函数,但它可以访问该类的所有成员。在类的定义中声明友元函数时,需要在函数名前面加上,friend,。友元函数可以定义在类的内部,也可以在类的外部定义。,注意:友元在类的封装性中打了个孔,使封装性的强度下降,程序中如非必要,应尽量减少友元的使用。,4.3.2,友元成员,除了一般的函数可以作为类的友元外,一个类的成员函数也可以作为另一个类的友元。这样的函数不仅可

45、以访问本类的所有成员,还可以访问其友元类的所有成员。需要注意的是当在一个类中的某个成员函数定义为另一个类的友元函数时需要首先定义此类。例如要定义类,A,的某个函数为类,B,的友元函数,那么需要先定义类,B,,然后再进行类,A,的成员函数与,B,友元的定义。,4.3.3,友元类,不仅函数可以作为一个类的友元,一个类也可以作为另一个类的友元。定义方法是在类的声明中加入语句,friend,类名。,4.4,派生类,继承是面向对象程序设计的一个重要特性,它允许在现有类的基础上创建新的类,可以继承原有类数据和函数,同时可以添加新的成员。继承特性增加了代码的重复利用率,加快开发效率。通过继承已有的一个或多个

46、类产生一个新类的过程称为派生。通过派生可以创建一种新的类,所创建的新类称为派生类。,4.4.1,派生类的引出,现实世界中,继承的概念十分广泛。人们认识世界就是一个层次结构。越靠近上层就表示越为普遍的概念,例如下面的一个层次结构:,在类中,继承的概念就是从父辈得到其属性。即产生的新类就是原有类的派生。原有类就是派生类的基类。派生类的声明形式如下:,class,类名:继承方式 基类,4.4.2,基类成员在派生类中访问属性,派生类继承基类的方式有三种情况,那么继承过来的成员其属性如何呢?下面给出三种继承方式下的基类成员在派生类中的访问属性。,4.4.3,派生类对基类成员的访问规则,派生类对基类成员的

47、访问形式包括内部访问和对象访问两种方式。下面对三种继承方式下的访问规则分别进行介绍。,1,私有继承,2,保护继承,3,公有继承,4.5,派生类的构造函数与析构函数,派生类继承了基类的成员,实现了代码的重复利用,但是继承的目的更主要的是功能的扩充。基类的构造函数和析构函数不能被继承。如果在派生类中需要对新增加的成员进行初始化,则需要加入派生类的构造函数。同样派生类也需要添加虚构函数来实现一些结束工作。,4.5.1,派生类构造函数和析构函数的执行顺序,当创建对象时,编译系统会自动调用构造函数。当撤销对象时,编译系统会自动调用析构函数。当创建派生类的对象时,首先执行基类的构造函数,然后执行派生类的构

48、造函数。当撤销对象时,则先执行派生类的析构函数,然后再执行基类的析构函数。,4.5.2,派生类构造函数和析构函数的构造规则,派生类不能继承基类的构造函数,如果基类中含有带参数的构造函数,则派生类中必须定义构造函数,用以向基类传递参数。派生类的构造函数的定义必须包含基类的参数,其定义的一半格式为:,派生类名(全部参数列表):基类名(参数列表),派生类的析构函数和基类的析构函数关系不大,程序中可以分别进行设计。,4.6,继承与多重继承,继承使得派生类既保持了基类的特性,又可以增加新的功能。如果一个类,其属性可以从多个基类中获得,这就需要多重继承的概念。,4.6.1,继承和多重继承,继承是一个类从一

49、个基类中派生,多重继承则是指一个类从多个基类进行派生。现在有一个类,A,和类,B,,现在要设计一个类,C,,它需要既继承类,A,的特性,又继承类,B,的特性,那么类,C,就需要多成继承类,A,和类,B,。,4.6.2,多重继承的声明,在,C+,中,类的多重继承与单继承的声明相似,其一般形式是:,class,派生类名:继承方式,1,基类,1,,,继承方式,n,基类,n,在多重继承中,派生类的构造函数要进行基类的初始化工作,因此如果任何一个基类的构造函数含有参数,那么派生类必须添加构造函数。构造函数的执行顺序是先执行基类的构造函数。在执行派生类的构造函数,同一层次的基类的执行顺序与声明时的顺序有关

50、相反析构函数的执行与构函数的顺序相反。,4.6.3,虚基类,如果一个派生类的基类是从一个共同的基类派生出来的,那么派生类的对象就是从底层基类的间接派生,它会出现多个基类的拷贝,程序中如何进行分辨呢?一种方法是利用作用域运算符,即在访问基类的成员时明确指出要访问的是哪一个基类的数据成员。,另一种方法是利用虚基类。虚基类是让基类只有一个拷贝,程序中的访问就不会出现访问的不确定性。虚基类在派生类中声明,其格式为:,class,派生类名:,virtual,继承方式 基类,虚基类的声明与普通的继承形式相同,只不过要在继承方式的前面添加关键字:“,virtual”,。当使用虚基类时,基类只有一个拷贝,程

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服