大学计算机基础(第三版) -艾德才 第8章 程序设计基础.ppt

大学计算机基础(第三版) -艾德才 第8章 程序设计基础.ppt

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 程序设计基础 8.2 算 法 算 法 的 概 念 算 法 的 概 念 例如:求两个正整数M和N的最大公因数的欧几里德算法为: 第一步: 求M除以N的余数R; 第二步: 若R=0,算法结束,即N为M和N的最大公因数 第三步: 否则,置M←N,N←R,返回step1 算 法 的 概 念 对应程序如下: #include iostream.h void main(){ int m,n; cinmn; while(n!=0){ r=m%n; m=n; n=r; } cout“m和n的最大公因数为:”m; } 算 法 的 概 念 算 法 的 表 示 算法的表示及三种基本结构 算法的表示及三种基本结构 算法的表示及三种基本结构 算法的表示及三种基本结构 算 法 的 概 念 常用算法介绍 常用算法介绍 ? 直接法 常用算法介绍 ? 枚举法 常用算法介绍 常用算法介绍 常用算法介绍 常用算法介绍 常用算法介绍 ? 递推法 常用算法介绍 常用算法介绍 8.3 软件开发基础 8.3 软件开发基础 程序设计方法 传统的结构化程序设计 传统的结构化程序设计 传统的结构化程序设计 面向对象程序设计 面向对象程序设计 面向对象程序设计 对同一个问题,可以有不同的解题方法和步骤。例如,求1+2+3+…+100,可以先进行1+2,再加3,再加4,一直加到100,也可采取100+(1+99)+(2+98)+…+(49+51)+50=100+50+49×100=5050。还可以有其它的方法。当然,方法有优劣之分。有的方法只需进行很少的步骤,而有些方法则需要较多的步骤。一般说,希望采用方法简单,运算步骤少的方法。因此,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。 1. 直接法 2.枚举法 3.递推法 解决的问题的种类与复杂程度各不相同决定了算法的多样性,但从其思想方法上可以将其归为以下几种:直接法、枚举法、递推法、递归法、回溯法等等。本节将介绍以下三种: 直接法就是根据问题给出的条件直接求解,前面的很多例子都是这种算法的运用。这里不再举例。 枚举法也称穷举法,基本思想是,在有限范围内列举所有可能的结果,找出其中符合要求的解。 枚举法适合求解的问题是:问题可能的答案是有限个且答案是可知的,但又难以用解析法描述。这种算法通常需要用循环结构来完成。 请看下例: 【例】 给定一个正整数,判断其非负整数立方根是否存在,若存在,输出该立方根。 算法如下: 分析:设某正整数为27,则非负整数立方根的取值范围为1—27,因此可在这一范围内对所有整数进行检测,满足立方根为27的就是所求整数。 【例】求非负整数立方根算法: num c 27 1 显示结果:3 演示算法执行过程 比较 c*c*c 2 比较 c*c*c 3 比较 c*c*c num?27; c?1;//立方根初值 while (c=num) { if (c*c*c==num) { 输出c; break; //终止循环 } else c?c+1; } if (cnum) 输出 “无整数立方根”; 【例】 判断一个正整数是否素数,给出相应结果。 分析:假设正整数num, 如果num不是2,需要检测它是否含有除1和它本身之外的其他因子,如果有,就不是素数。检测方法是在2?num-1范围内逐个验证。 算法如下: 【例】 判断一个数是否为素数算法 #include iostream.h void main(){ int num; cinnum; for(int i=2;inum;i++) if(num%i==0) break; if(i==num) coutnum “是素数”; else coutnum “不是素数”; } 递推算法是通过问题的一个或多个已知解,用同样的方法逐个推算出其他解,如数列问题以及一些近似计算问题等。通常也要借助于循环。 请看下例: 【例】 求n! 分析:n!=1?2?3?????n,因此可以从1开 始,由1!乘以2得到2!,再乘以3得到3!??????,以此推出n!。 假定n=4,算法如下: n i 2 factorial 【例】 求n!算法: 显示结果:24 演示算法执行过程 1 2 4 比较 2 3 比较 6 4 比较 24 比较 5 factorial?1; //阶乘初值 i?2; n ?4; while (i=n) { factorial?factorial*i ; i?i+1; } 输出 factorial; 软件开发不同于编写小程序,程序并不代表软件,软件包括程序

文档评论(0)

118压缩包课件库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档