- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(C完整PPT课件)C初步认识
算法(Algorithm)的定义 1)目的性 算法是有求解目的的动作序列,算法必须有运算结果,而程序只是强调过程性; 2)抽象性 算法离不开数据结构,而数据结构在具体的计算机上实现要受到表示范围的限制,算法比具体的程序设计抽象层次要高一些,算法甚至不在乎用什么编程语言来描述; 3)研究性 算法许多时候用于理论研究,描述算法的目的是沟通人们的思想,而不是实现,所以,算法可以用伪编程语言来描述。 编程与结构(Programming Structure) 编程是为了解决计算问题,计算问题强调算法,程序设计也就是在一定抽象层次上的算法设计。这里的抽象层次应理解为数据的描述方式。当许多编程问题含有大量纵横交错的数据时,人们便逐渐意识到数据组织与数据结构的重要,意识到数据存在的形式必须脱离程序。1976年,计算机专家N.Wirth提出这样的经典公式: 程序 = 算法 + 数据结构 强调编程中数据结构的描述应相对算法而独立。程序不再是单纯的过程体(操作序列)了,不再是单纯的算法了,而是算法和数据结构的有机组织。 1.7 过程化程序设计(Procedural Programming) 过程化程序设计主要体现在算法上,编程就是解决算法如何设计问题。当算法很大时,就考虑将它按功能划分。程序组织围绕算法的切分而展开。这一类问题一般都是小规模的问题,一般的程序设计语言都可以胜任。 过程程序设计按照问题来设计算法。它所使用的是语言中现成的基本数据类型。问题模型反映为过程结构模型,实际上就是功能模型。但由于过程模块与数据的复杂关系没有清晰地分离出来,所以它一般都是“具体问题具体解决”,无法重复使用其中的“零部件”,而且,问题庞大以后,其复杂性会无法收场。 结构化程序设计(Structured Programming) 结构化程序设计方法主要体现在过程的功能划分与过程内部的编写规则上,因此它是一种规范的过程化程序设计思想 。 结构化程序描述任何实体的操作序列只需用“顺序,选择(分支),重复(循环)”三种基本控制结构。 结构化程序设计中的各个过程体和各个组成部分以模块来表示。每个模块,其内聚性(agregation)越强,外联性(association)越少,则模块独立性越好。 内聚性,即模块内部所涉及的功能越单一越好。这样一旦修改起来,就职责明确,不会因为这个原因那个原因都来找这个模块算帐。 外联性,即模块之间的联系越少越好,联系意味着依赖性,外联性少,模块的独立性就好,独立性意味着自说自话地修改本模块与外界无关。因此就容易编程和修改。 减少外联性还涉及到对数据的分离与归类。将过程体中的数据分离出来,独立地用数据结构去描述其数据和处理,这都是模块划分的原则。 1.8 对象化程序设计(Objectified Programming) 伴随着人类对计算机的依赖性日益增强,程序规模不断扩大,模块数呈指数级递增,模块间的数据传递五花八门,同一程序中模块之间的关系错综复杂,结构化程序设计的规范已经不能保证程序的正确性,可维护性和重用性了。人们开始意识到不可能在语言中内置所有的待解决问题的数据结构,必须让语言具有自建数据结构的能力。 数据结构对于算法,对于程序是如此的重要,但当时大多数语言都没有专门支持对数据结构的直接描述。 在C语言中有一种结构(struct)类型,可以在单纯空间上复合其他数据类型,描述数据的组织,但还是不能避免其数据操作的安全问题。在大规模程序设计中,问题尤其突出。软件发展似有一个不可逾越的极限,因此,在软件产业界曾一度有软件危机之说。 其实浩瀚的编程大军并非每个人都必须要精通问题的每个细节,这就像使用电视机的人并非都要精通其内部的每个细节!我们可用电视机的外壳,把电视机的内部电路和外部使用一分为二。外部使用只需要了解电视机的基本操作方法,内部电路提供电视机的各项功能,两者都需要一个共同的规范——电视机的按钮操作功能。 抽象数据类型就是想要描述这一共同的规范,它描述数据的组织和相关的操作。如果语言能够自由定义数据类型,那么,问题就能化成以抽象数据类型为媒介的使用与实现独立的两部分,因而该语言的解决问题的能力一定就强。衡量一个语言的优劣,能否自定义或者说扩充数据类型是其重要指标。 C++有一个类(class)机制,这正是C语言欠缺的地方。数据类型的本质是数据组织(实现)和其操作(使用)的捆绑性。当对应到具体编程
您可能关注的文档
最近下载
- 刘芳——本科论文初稿.doc VIP
- 安全培训记录效果评估表全员法律法规培训.docx VIP
- 3.4 透镜的应用(分层练习)2024-2025学年八年级物理上册同步精品课堂(苏科版2024)(解析版).docx VIP
- 《二年级上册美术折纸动物》ppt课件讲义.ppt
- BS EN 16120-2-2017Non-alloy 国外国际标准规范.pdf
- 精卫填海成语神话故事.pptx VIP
- 【生物】蛋白质相关计算课件 2023-2024学年高一上学期生物人教版必修1.pptx VIP
- 四位一体农村长效保洁方案(标书——已中标) .pdf VIP
- 人教版九年级上册化学第六单元测试卷.doc VIP
- 2025届高考语文复习:叠词的作用和表达效果+课件.pptx VIP
文档评论(0)