C02--程序的灵魂--算法.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C02--程序的灵魂--算法

第二章 程序的灵魂—算法 2.1 算法的概念 2.2 简单算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化程序设计方法 2.5、结构化程序设计方法 结构化程序设计方法的基本思路是: 把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。 结构化程序设计方法的特点是: 自顶向下 逐步细化 模块化设计 结构化编码 结构清晰,易读易理解 易于修改、调试和维护 便于很多人协作编制大型软件 便于保证和验证程序的正确性 便于移植 总之有利于提高软件生产率和质量 结构化程序设计思想的优点 模块化程序的编写原则 (1)程序中的子模块一般短 (如不超过50行,习惯而已) (2)耦合性越少越好 算法设计 进行算法设计的步骤 STEP1问题的陈述 问题的实质, 已知什么, 求什么 STEP2 模型的选择 选择描述问题的数学模型, 模型的适当与否直接影响到算法的效率, 设计者的知识结构, 设计者的工作经验等。 STEP3 算法设计和正确性证明 一旦确定数学模型,就可进行算法的设计,抽象概括,发挥主观能动性,逐渐形成看法的思想,勾勒出一个算法的具体化步骤 算法设计完后,验证其正确性是十分重要的,必须加以证明, 可参见《算法分析与设计》有关方面的书籍。 STEP4 算法的程序实现 即将一个算法正确地编写成一个计算机程序,这一转换并不简单, 需要有一个很好的程序设计基础, 掌握多种程序设计方法和技巧。 算法设计 STEP5 算法分析 研究各种算法的特性和好坏(需要有一定的数学基础) 算法设计只是设计出一个求解的算法,并不是优化的。它可能有多种算法,所以还要考虑到算法的优化问题。 算法设计是一项复杂而艰苦的劳动,只有多学习一些典型的算法,掌握一些基本算法的思想。 算法设计 评价算法标准 评价一个算法的好坏标准 1) 正确性 2)?可读性 3)?健壮性(Robust,鲁棒性) 4)? 效率性与低存储要求 时间复杂度T(n) 反复使用 空间复杂度O(n) 数据量大 算法的描述和算法分析 一个算法可用人类的自然语言描述, 也可以用图表的形式。 (类pascal语言) procedure EUCLID(var n:integer;m:integer;r:integer); begin r:=m mod n; while(r0) do begin m:=n; n:=r; r:=m mod n; end; end; 附:类Pascal 语言 1 基本语句 1)赋值语句 变量名:=表达式; 2)条件语句 if 条件 then 语句组 if …… then ……else …… 循环语句 while 条件 do 语句组 repeat 语句组 until 条件 for 循环变量:=初值 [downto]to 终值 do 语句组 选择语句(分支语句) 1 case 条件1:语句组1;  条件2: 语句组2; 条件i: 语句组i; else : 语句组n+1; end; 2??case 表达式 of 常量1:语句组1;  常量i: 语句组i; 常量n: 语句组n; otherwise 语句组n+1; end; 5) 过程或函数调用 call 过程名(参数表); 变量:=函数名(参数表); 允许嵌套和递归调用 6) 错误处理  error(字符串) 7)跳出循环 exit 8)读写语句 read(变量表); write(变量表); 各变量中间用逗号隔开 9) 注释形式 {字符串} 附加相应的注释 2、 除过程或函数中的参数,变量说明省略    3、?所有算法用以下过程或函数形式表示 procedure 过程名(参数表) function 函数名(参数表);类型名 begin 语句组      end; 最大公因子 (辗转相除法) procedure EUCLID(n,m : integer ; var r : integer); begin r:=m mod n; while(r≠0) do begin m:=n;

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档