- 1、本文档共49页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 程序设计初步 导入 我们已经接触到了一些初级的C语言程序,能够进行简单的赋值操作和算术运算。这些小程序,问题描述简单明了,解题步骤一目了然,程序设计使用的都是顺序执行的简单语句。如果所有问题都这么简单,计算机又有什么用武之地呢?计算机的一个最大优势就是能够快速处理大量数据。实际应用过程中,需要使用C语言来辅助解决的问题通常要比前面的示例复杂很多,面临更大规模的问题。 例如,对第一章中的示例程序Add.c进行修改,使得其不是简单的计算两个数的和,而是计算10个、100个甚至1000个数的累加和。如果采用原有程序设计方案,对10个数来说或许还能正常工作,需要增加10个对应的变量定义和输入语句;一旦规模达到100甚至更大时,定义相应数量的变量和输入语句就会使程序变得过于冗长,导致方案被放弃。 要想解决类似问题,需要我们提出更为优化的解决方案,以及更为高级的程序设计结构。 算法与程序设计 人们使用计算机,就是要利用计算机辅助解决问题,而要做到这一点,人们就必须通过对各类问题进行分析,确定解决问题(从初始状态达到最终状态)的具体方法和步骤,并编制好一组计算机能够执行的指令(即程序),让计算机按照指定的步骤有序的工作。 算法就是使用具有可操作性的语言,按照一定规则,对问题分析阶段获得的计算过程和操作步骤的进一步细化。根据算法,依据各种规则编写计算机能够执行的命令序列,就是编制程序;编制程序时需要遵守的规则即为某种语言的语法。 算法是整个程序设计过程的核心和灵魂,程序设计语言则是实现算法的工具,好的算法描述方式对编程实现有着很大的帮助。学习使用高级语言进行程序设计的重点和难点之一就是掌握分析问题和解决问题的方法,并最终设计出算法。 算法的概念 算法(Algorithm)是指完成一个任务所需要的具体步骤和方法。给定初始状态或输入数据,依据算法能够得出所要求或期望的终止状态或输出数据。或者说依据算法能够对一定规范的输入,在有限时间内获得所要求的输出。 Donald Knuth在他的著作The Art of Computer Programming里对算法下的定义: 有限性(Finiteness)。算法必须能在执行有限个步骤之后终止; 明确性(Definiteness)。算法的描述必须无歧义,以保证算法的实际执行结果精确地符合要求或期望,通常要求实际运行结果是确定的; 输入项(Input)。一个算法需要有0个或多个输入,以描述运算对象的初始情况,所谓0个输入是指算法本身已经给定了初始条件; 输出项(Output)。一个算法有一个或多个输出,以反映对输入数据加工后的结果; 可行性(Effectiveness)。算法中执行的任何计算步骤都可以被分解为基本的可执行的操作,即每个计算步骤都可以在有限时间内完成。 算法的概念 根据上面描述,对于给定的初始状态或输入数据,依据算法能够在有限时间内得出所要求或期望的终止状态或输出数据。 需要说明的是,不是只有计算问题才有算法。例如,加工一张写字台,其加工顺序是:桌腿 桌面 抽屉 组装,这就是加工这张写字台的算法。当然,如果是按“抽屉 桌面 桌腿 组装”这样的顺序加工,那就是加工这张写字台有另一种算法,这其中没有计算问题。 如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。 算法的优劣可以用空间复杂度与时间复杂度来衡量,时间复杂度用于描述算法的运行时间,通常采用执行算法所需要的主要计算工作量来衡量;而空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。同时,考虑到算法的程序实现,算法应易于理解,易于编码,易于调试等。 算法的分类 通常计算机算法分为两大类:数值运算算法和非数值运算算法。数值运算是指对问题求数值解,例如对微分方程求解、对函数的定积分求解等,都属于数值运算范围。非数值运算包括非常广泛的领域,例如资料检索、事务管理、数据处理等。 数值运算有确定的数学模型,一般都有比较成熟的算法。许多常用算法通常还会被编写成通用程序并汇编成各种程序库的形式,用户需要时可直接调用。例如数学程序库、数学软件包等。 非数值运算的种类繁多,要求不一,很难提供统一规范的算法,更多的非数值运算是需要用户设计的。 一个占存储空间小、运行时间短、其它性能也好的算法是很难做到的。原因是上述要求有时相互抵触:要节约算法的执行时间往往要以牺牲更多的空间为代价;而为了节省空间可能要耗费更多的计算时间。因此我们只能根据具体情况有所侧重: 若该程序使用次数较少,则力求算法简明易懂; 对于反复多次使用的程序,应尽可能选用快速的算法; 若待解决的问题数据量极大,机器的存储空间较小,则相应算法主要考虑如何节省空间。 算法的描述 算法
您可能关注的文档
- 第2章统计数据的收集整理与显示重点.ppt
- 江苏学业水平测历史模拟试卷重点.doc
- 混凝土结构施工图平面整体表示方法重点.ppt
- 广州西朗污水处理PPP项目开发案例全方位分析重点.doc
- 混凝土施工施工组织方案(最终)重点.doc
- 第2章网络传输介质与连接器件(必读)重点.ppt
- 混凝土质量缺陷处理方案重点.doc
- 混频电路设计3重点.docx
- 江西省红色六校2015届高三第二次联考物理试题重点.doc
- 第2章微控制器的结构重点.ppt
- 2013年中考一次函数.doc
- 2013年中考二次函数.doc
- 2013年中考特殊平行四边1.doc
- 2013年中考整式题目练习.doc
- 2014年中考整式乘除与因式分解.doc
- 消防设施检测维保人员测试题及答案.doc
- 2025年团市委领导班子、校副校长对照“四个带头”方面检视剖析材料(含反典型案例剖析)2篇文.docx
- 2025年市邮政管理局党支部书记、市行政审批和政务信息管理局领导班子对照“四个带头”方面生活会对照检视剖析材料(含反典型案例剖析)2篇文.docx
- 市委组织部常务副部长、市总工会领导班子2025年对照“四个带头”方面含违纪行为为典型案例的剖析与反思检视剖析材料{2篇文}.docx
- 局党组书记、市检察院副检察长2025年民主生活会“四个带头”对照检查材料【含典型案例剖析】2篇文.docx
最近下载
- 【课件】中国影视音乐 教学课件-高中音乐人音版(2019)必修《音乐鉴赏》.pptx
- GB_T 15566.4-2007 公共信息导向系统 设置原则与要求 第4部分 公共交通车站.pdf
- 09 全国民用建筑工程设计技术措施 结构(结构体系)(完整).doc
- 武汉市2025届高中毕业生二月调研考试(二调)数学试卷(含答案详解).pdf
- 2024年合肥滨湖时光产业投资集团本部及子公司招聘21人笔试模拟试题及答案解析.docx
- 济渎庙碑刻研讨.pdf
- 二〇二五年新年贺词.ppt VIP
- 2024版《53全优卷》2年级数学下册(北师大BSD)附参考答案.pdf VIP
- 髙磷血症病例分享.pptx VIP
- 股票如何做好盘后复盘.pdf VIP
文档评论(0)