第1章程序设计与VC语言简介.ppt_第1页
第1章程序设计与VC语言简介.ppt_第2页
第1章程序设计与VC语言简介.ppt_第3页
第1章程序设计与VC语言简介.ppt_第4页
第1章程序设计与VC语言简介.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

VC 实用教程VisualC UtilityCourse 刘惊雷编著电子工业出版社 2020 1 27 2 课程内容 本课程以操作系统的程序员接口为主线 介绍了VC程序的编制方法和原理 主要内容分为三篇 VC控制台程序设计与面向对象理论 主要编写字符方式下的程序 VC的两种编程模式API编程和MFC编程 编写具有图形用户界面的应用程序 VC高级编程 基于组件的编程与应用 编写COM和DLL组件 2020 1 27 3 课程目标 掌握利用VC编写面向对象的控制台程序 VC双路开发具有图形用户界面的模式 API编程和MFC编程 了解基于组件的应用程序的编制方法 在整个课程的学习中 要体会Windows操作系统的两个接口 用户接口和程序员接口 的使用 熟悉VC应用程序对计算机软硬件系统的控制 掌握一些常用的程序设计方法 2020 1 27 4 VC简介 VC VisualC 的简称 是一种功能强大 使用灵活的程序设计语言 尤其是在使用操作系统所提供的服务与资源方面独霸群雄 VC程序设计可以深入到计算机的方方面面 但 万丈高楼平地起 掌握程序设计有关的基础理论与应用是至关重要的 2020 1 27 5 教材和参考书 1 教材 VisualC 实用教程 刘惊雷编著 电子工业出版社 2005 3 参考书 刘惊雷 范辉等 VisualC 6 0程序设计简明教程 高等教育出版社 2001 7刘路放等 VisualC 与面向对象程序设计教程 高等教育出版社 2002 4朱磊 周彬 Windows下的C C 高级编程 人民邮电出版社 2003 3 2020 1 27 6 考核方式 习题课堂开卷考试上机调试程序 2020 1 27 7 概述 VC VisualC 的简称 是一种功能强大 使用灵活的程序设计语言 尤其是在使用操作系统所提供的服务与资源方面独霸群雄 VC程序设计可以深入到计算机的方方面面 但 万丈高楼平地起 掌握程序设计有关的一些基础理论与应用是至关重要的 本篇为VC控制台程序与面向对象理论 旨在为读者顺利进入VC开发领域打下坚实的基础 2020 1 27 8 1 1程序设计与程序设计语言1 2程序设计方法的演变1 3VC语言概述习题 本章内容主要包括程序设计的四个层次 四种程序设计方法的概念 简单的具有输入输出功能的控制台程序的设计 VC集成开发环境的特点 要求了解面向对象的程序设计和基于组件的程序设计的特点 掌握结构化程序设计的特点及应用 输入输出流在控制台程序中的应用 熟悉单文件控制台应用程序的编写过程 熟练掌握程序设计四个层次的含义及每个层次的重要性 第1章程序设计与VC语言简介 2020 1 27 9 概述1 1 1程序设计1 1 2程序设计技术的四个层次1 1 3算法与程序1 1 4程序设计方法学基础1 1 5程序设计语言1 1 6程序设计的重要性概念 1 1程序设计与程序设计语言 2020 1 27 10 在计算机技术发展的历史长河中 有两个人是需要我们记忆的 一个是图灵 另一个是比尔 盖茨 图灵用数学的概念形式地对计算的本质做了解释 比尔 盖茨连续几年都为全球首富 这 地球人全知道了 是他带领Microsoft公司 从事于计算机的灵魂 软件的开发 本书的目的 就是带领广大读者熟悉其软件开发的旗舰产品 VisualC 通过它开始我们的程序设计 开始对计算机系统的认识过程 概述 2020 1 27 11 1 1 1程序设计 程序设计的概念 是采用某种编程语言 为了解决某个特定领域的问题 而使用某种设计方法编写计算机程序的活动 如果把小说比作程序的话 小说创作就是程序设计 只不过小说是表达人的思想 进而控制人的活动的一种代码 而计算机程序是表达机器的思想 进而控制机器活动的一种代码 当然这种代码也是和人相通的 程序设计的特征 程序设计必须采用某种语言 对领域的依赖性 采用某种设计方法进行 2020 1 27 12 1 1 2程序设计技术四个层次 算法设计与分析程序设计语言程序设计方法学程序设计环境与工具 2020 1 27 13 1 1 3算法与程序 算法的概念 利用计算机解决问题的步骤 著名的计算机科学家沃思说 程序 数据结构 算法 算法在程序设计中的作用可窥见一斑 如果把做菜的原料比做数据 你做出的菜比做设计的程序 那么烹饪的方法就是算法 程序 用某种语言为工具编制出来的动作序列 它是人类思想的一个载体 计算机程序是用计算机程序设计语言所要求的规范书写出来的一系列动作 它表达了程序员要求计算机进行的操作 该操作的结果是为人类服务的某种表示形式 2020 1 27 14 程序的特征 程序的静态与动态属性 程序是程序语言抽象的符号表示 程序是对数据实施算法的过程 程序是分层嵌套的 2020 1 27 15 算法在程序设计中的重要性 算法具有时间上的稳定性 语言是用工具编制出来的动作序列 算法的理解 设计和分析都需要掌握扎实的基础理论知识 包括算法的复杂性理论 各种常用的求解方法如递归法 贪心法等 程序开发的后期 界面的设计不再是主要的问题 而数据结构和算法的设计却变得愈加重要 2020 1 27 16 1 1 4程序设计方法学 上个世纪60年代后期 许多软件项目的开发周期与开发成本超出预算 而生产出来的软件产品却可靠性差 可重用性差 可维护性差 这反映了整个软件行业的生产效率低下 这就是人们常说的软件危机 程序设计方法学是指在程序设计过程中应遵循的一些原理和方法 程序设计中最关心的是程序的效率和程序的可靠性 程序的可靠性包括两个方面 程序的正确性 指程序的实现是否满足了需求 程序的正确性的证明在程序设计方法学课程中来研究 程序的健壮性 指程序异常情况下工作的能力 2020 1 27 17 程序设计方法学主要研究 抽象数据类型理论 程序的控制结构程序的正确性证明 程序变换技术结构化程序设计 如C语言 与面向对象的程序设计 C 范型等 程序设计方法是独立于具体程序设计语言的技术程序设计方法与程序设计语言是相辅相成的 采用某种程序设计方法编写程序需要相应程序设计语言作为工具程序设计语言的设计是为了支持某种程序设计方法 2020 1 27 18 1 1 5程序设计语言 程序设计语言 是一种适合于计算机和人们阅读方式的描述计算的符号系统 注 高级语言程序设计 强调的是利用某种高级语言进行程序设计的过程 而 高级程序设计语言 强调的是对高级程序设计语言的理解和应用 与程序设计语言有关系的三类人员程序设计语言的开发者程序设计语言的实现者程序设计语言的使用者 2020 1 27 19 1 1 6 程序设计的重要性概念 程序设计的重要性 可从以下几个方面来理解 程序设计是计算机类学生毕业走向工作岗位的一项基本技能 程序设计是非计算机学生跨入计算机领域的一个实践之路 程序设计的四个层次决定了程序设计是一项全面技能的培养 2020 1 27 20 1 2程序设计方法的演变概念 概述1 2 1结构化程序设计概念1 2 2面向对象程序设计1 2 3基于组件的程序设计1 2 4 面向Agent程序设计 2020 1 27 21 20世纪60年代以后 计算机硬件技术的迅速发展 导致其速度与存储容量不断提高 成本急剧下降 加之程序规模越来越大 许多程序的开发不再是仅靠个人的技艺 而需要团队的共同努力才可能完成 而旧的程序设计方法很少考虑团队各成员之间交流协作的需要 因此 为了实现程序的可靠性 可重用性和可理解性等因素 诞生了很多程序设计方法 本节阐述程序设计发展史的四种程序设计方法 概述 2020 1 27 22 1 2 1结构化程序设计 结构化程序设计的核心思想 1 程序实体主要由算法和数据结构组成 2 其分析与设计方法采用的是 自顶向下 逐步求精 的程序设计方法 3 在程序流程控制结构上遵循 单入口单出口 的理念 4 任何程序的结构都是由顺序 选择与循环来完成的 取消Goto语句的使用 2020 1 27 23 例子 例1 1 打印自然数中前n个素数 程序的主文件是PrintPrim cpp 分析 存放n个素数的数据结构 用一维数组判断素数算法 根据素数的定义 x是素数 当且仅当x只能被1和自身x整除 因此 要确定x是不是素数 只要检查x能不能被不超过sqrt x 的数整除即可 划分模块 逐步求精 打印自然数中前n个素数的任务划分为 判断x是否素数 找前n个素数 打印前n个素数三部分 以函数抽象之 程序实现 2020 1 27 24 include stdio h include math h defineMaxLen10000boolIsPrim intx 判断x是否素数 for inti 2 i sqrt x i if x i 0 returnfalse returntrue voidFindPrims inta intn 找前n个素数存于数组a中 intx 1 a 0 2 第一个素数是2 不用求inti 1 数组的下标位置while i n x x 2 素数除了2外 只能是奇数 从3搜寻if IsPrim x a i x 将素数x放到数组a的第i个位置处i 下个位置增1 2020 1 27 25 voidPrintPrims inta intn FindPrims a n 找前n个素数存于数组a中for inti 0 i n i 打印数组a中存放的n个素数printf 8d a i printf n voidmain inta MaxLen a存放素数intn 打印的素数的个数printf PleaseInputnNumberToA scanf d 打印a数组中的前n个素数 2020 1 27 26 以结构化程序设计的观点看 程序主要包括数据结构与算法 并且两者是分离的 但将函数与其操作的数据分裂开来 导致了程序维护的困难 面向对象的编程方法把一个比较复杂的问题分解成一个个能够完成独立功能的对象 把这些对象组合起来去完成一个复杂的功能 这就像计算机公司一样 用许多计算机的部件 比如机箱 内存 硬盘 显示器等 去组装一台计算机 各个零部件都能完成自己的功能 计算机公司员工所做的工作只是依照一定的方式把它们组合起来 1 2 2面向对象程序设计 2020 1 27 27 面向对象的程序设计方法是将反映事物的属性与操纵该属性的方法组装成一体 形成一个实体对象 属性是指某对象的属性 方法是指某对象的方法 比如说轮子的个数是一个属性 但必须搞清是什么对象的属性 因为汽车和自行车都有轮子 同样 当我们说加速这个方法时 必须搞清是什么对象的方法 因为汽车和自行车都有加速的方法 但其加速的原理是不一样的 即该方法的实现在不同的对象中的代码是不一样的 相同类型的对象构成一个类 对象是类的一个实例 类是构成面向对象程序设计的基石 客观世界的问题是由实体及其相互间的关系构成的 采用面向对象的方法是把这些实体映射为对象 各对象既是一个独立的实体 又可通过消息 即让对象以某种进行操作的请求 相互作用 2020 1 27 28 1 2 3基于组件的程序设计 基于组件的程序设计可以说是面向对象程序设计的延伸 两者并不矛盾 可以说基于组件程序设计也采用了面向对象的技术 只不过在面向对象程序设计中 我们往往强调的是在同一个程序语言的开发环境下进行设计 面向对象程序设计的基石是类与对象 这些类可以在一个开发环境下重用 例如VC中的MFC类库就只能在VC的环境下使用 C Builder的VCL库也主要在Borland的产品中进行重用 而在基于组件的程序设计中 程序设计的基石是组件 它是粒度更大的对象 其作用主要在于跨平台与开发语言中使用 当前的组件技术主要有CORBA与COM 在最后一篇中 我们就要利用VC来开发一个跨平台的COM组件 2020 1 27 29 组件 是指系统中明确辨识的构成部分 是可以被复用的软件实体 它由组件规约和组件实现两部分组成 其中组件规约主要由组件模型来进行描述 组件模型 是指对组件本质特征的抽象描述 当前组件的设计采用的模型主要有CORBA和COM 这些组件模型将组件的接口与实现进行了有效地分离 提高了组件交互能力 从而增加了复用的机会 并适应了目前网络环境下大型分布式系统的需要 采用组件来设计程序的好处 1 跨平台 跨语言的支持 2 位置透明性 3 可伸缩性 4 可复用性 2020 1 27 30 基于组件的程序设计中还有一个很重要的概念 架构 架构是整个或部分系统的可重用设计 表现为一组抽象组件及组件实例间交互的方法 另一种定义为 架构是可被应用开发者定制的应用骨架 前者是从应用方面而后者是从目的方面给出的定义 架构的最大好处就是复用 面向对象系统最大复用方式就是程序架构的复用 架构提供了可复用的抽象算法及高层设计 并能将大的系统分解成更小 而且能够描述组件间的内部接口 这些标准接口使得在已有的组件基础上通过组装建立各种各样的系统成为可能 2020 1 27 31 1 2 4面向Agent程序设计 在面向代理的时代 程序是由多个具有独立功能的Agent组成 程序设计的关键是设计每一个具有智能行为的Agent实体 Agent是一个被密封了的计算机系统 我们可以从以下四个方面加以理解 1 一个Agent是一个完整的计算机实体 它内部包含了实现其目标所必需的各种子系统和子系统间相互作用的接口 2 它能够感知自己当前所处的环境和环境状态的变化 并能够对环境的变化智能地做出自己的行动 3 每个Agent都有自己特定的能够实现的目标 4 每个Agent是一个自治体 它既能控制其内部的状态又能控制自己的行为 2020 1 27 32 面向Agent的程序设计的四个步骤 1 分解大系统 2 提取Agent 3 建立模型与软件实现 4 组装 2020 1 27 33 1 3VC语言概述 1 3 1C C 和VC语言的关系1 3 2VC控制台程序介绍1 3 3一个VC单文件应用程序的实现1 3 4标准设备的输入与输出语句1 3 5VC控制台程序基本结构与特点1 3 6 VC6 0集成开发环境 2020 1 27 34 C语言是一种典型的结构化程序设计语言 数据和对数据的操作在C语言下是分离的 这导致了在大规模软件开发中 对程序结构的复杂性难以控制 开发出的代码复用程度较低 C 语言和C是兼容的 C语言是C 语言的一个子集 C中的关键字 语法 函数 表达式等在C 里都完全适用 C 是一种程序设计语言 VC和BCB采用的都是基于C 语言的编程工具 1 3 1C C 和VC语言的关系 2020 1 27 35 1 3 2VC控制台程序介绍 控制台程序 是管理基于字符 文本 界面的输入与输出 在字符界面的应用程序中 没有提供基于图形用户界面接口的Windows程序的界面函数库 输入缓冲区 输入缓冲区放的是输入事件 如键盘和鼠标 的记录 屏幕输出缓冲区是一个二维数组 存放输出到控制台窗口的字符信息和颜色信息 2020 1 27 36 1 3 3一个VC单文件应用程序的实现 例1 2 实现简单文本输出的单文件控制台程序实例 该程序的主文件是SingleFile cpp 1 编辑单击VisualStudio主菜单栏中的File菜单项下的New 则弹出一个新建程序对话框 在该对话框中有四个选项卡 选择Files选项卡 弹出的对话框中列出了13个选项 选中C SourceFile列表项 并在右边的File编辑框中输入新建的单文件C 文件名称SingleFile 同时在Location编辑框中指定一个存放文件的目录 2020 1 27 37 程序源代码 includevoidmain cout 这是一个简单的单文件VisuallC 程序 n cout 欢迎进入VC程序开发的世界 您的基础知识准备好了吗 endl 输入完后 按CTRL S热键进行保存 2020 1 27 38 图1 1单文件建立窗口 2020 1 27 39 2 编译和链接 3 运行 源代码经过编译链接后就生成了可执行文件 通过单击Build ExecuteSingle exe选项 生成的可执行文件将被运行 按任意键 则返回到VC的主窗口 单击VisualStudio主菜单栏中的Build菜单项下的CompileSingle cpp 则弹出一个如图1 2所示的询问是否建立一个激活的工作区文件对话框 在该对话框中选择 是 按钮后 VC编译器将对该源代码进行编译 单击Build BuildSingle exe选项 将对编译好的程序进行链接 如果该程序尚未编译 则会先对其编译之 而后进行链接 2020 1 27 40 图1 2询问是否建立一个缺省的工作区对话框 图1 3程序输出的控制台窗口 2020 1 27 41 1 3 4标准设备的输入与输出语句 VC控制台应用程序中 不仅可以使用标准C语言函数库stdio h中提供的输入函数scanf 和输出函数printf 外 还可以使用标准输入流cin和输出流cout 它们的定义是在输入输出流式头文件iostream h中 在使用这两个流设备时 必须在编译预处理中包含它们 在C 中 将数据从一个对象到另一个对象的流动抽象为 流 流在使用前建立 使用后被删除 从流中获取数据的过程称为提取操作 向流中添加数据的操作称为插入操作 2020 1 27 42 1 键盘输入键盘输入的作用是读取用户输入的字符串 按相应变量的类型转换为二进制代码写入内存 其格式为 cin 变量1 变量2 变量3 变量n 其中cin是预定义的输入流对象 代表键盘 为输入流对象的提取操作符 它作用于cin上可以实现从标准输入设备 键盘上输入数据 输入流cin通过 从键盘上提取用户的输入 然后将这些值送到其后的变量中 2020 1 27 43 例如 intx y cin x y 当程序执行时 用户从键盘上输入16和28 用空格或回车分隔 时 cin的提取操作 就把从键盘上所获取的字符串 16 和 28 转化成整型数据存入变量x与y中 2 屏幕输出屏幕输出作用是从内存中读取数据项 对相应的表达式求值后 转换为相应的字符串显示到屏幕上 其格式为 cout 表达式1 表达式2 表达式3 表达式n 2020 1 27 44 其中cout是预定义的输出流对象 代表显示器 为输出流对象的插入操作符 它作用于cout上可以将数据输出到标准输出设备 显示器上 各个表达式是输出项 cout的插入操作符首先对各输出项的表达式求值 然后转换成字符串形式输出 例如 intx 66 y 88 cout x n y 1 endl 当程序执行时 程序计算出x的值是66 把它转换成字符串输出到屏幕上 紧接着输出字符 n 换行字符 表达式y 1的值89 endl的作用与 n 一样 都是换行符 2020 1 27 45 3 输出格式控制符C 中的输出中 可以包含各种各样的格式控制符号 例如上面所见到的换行符endl与 n 还有制表符 t 等 表1 1列出了常用的格式控制符及其功能 在使用它们时 要在程序的开头添加 include 表1 1常用输出格式控制符 2020 1 27 46 1 3 5VC控制台程序基本结构与特点 VC语言设计的控制台程序和C语言编写DOS下的程序很相似 不同之处在于 VC语言设计的控制台程序中出现了类和对象 以及由类和对象带来的语法 语义和语用 VC控制台程序是由一个或多个文件组成 每个文件由用户自定义或VC系统自带的类 函数 变量组成 类由成员变量和成员函数组成 函数由若干个语句组成 语句是单词的集合 单词是字符的集合 2020 1 27 47 1 main 函数VC控制台程序的执行开始点是main 函数 和C语言不同的是 VC下必须指定该函数的返回值 前面例子的返回值为void VC开发的带有图形用户界面 第二篇所讲的 的Windows程序的开始点是WinMain 2 程序注释VC下 程序有两种注释的方法 一是单行注释符 它是将 后面的一行语句作为程序的注释 二是多行注释符号 和 它们必须成对出现 标识注释的开始 标识注释的结束 用户可以根据需要注释单行或多行开灵活选择相应的注释语句 2020 1 27 48 3 编译预处理预处理中的每个命令也是一种操作 该操作指明程序在编译前所做的一些工作 我们最常见的是文件包含命令 include 它将其后所跟的头文件嵌

温馨提示

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

评论

0/150

提交评论