第六讲 程序设计方法.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 程序设计方法;1.逐步求精方法;分割技术;递推技术;分析技术;逐步求精方法是一种适应性很强且十分有效的程序设计方法。用它解决问题时,可归纳如下: 1、对实际问题要进行全局性分析、决策及数据模型的确定。 2、要确定程序的总体结构,将整个问题分解成若干相对独立的子块。 3、要确定子块的功能及相互间的关系。 4、在抽象的基础上,将各子块逐一精细化,直到能用确定的高级语言程序描述,得到完整的程序系统。;验证“哥德巴赫猜想” ;求解 第一步 提出问题: 验证哥德巴赫猜想 ? 第二步 设一上限数M,验证从4到M的所有偶数是否能被分解为两个素数之和。 1. 定义一个变量X,初值为4。 2. 每次令其加2,并验证X能否被分解为两个素数之和,直到 X不小于M为止。 ? ;第三步 如何验证X是否能被分解为两个素数之和。 1.从P=2开始; 2.判别X—P是??仍为素数: 3.若是,打印该偶数的分解式。 4.否则,换更大的素数,再继续执行2.。如此循环,直到用于检测的素数大X/2且X与其之差仍不是素数,则打印“哥德巴赫猜想”不成立。 第四步 查找下一个素数。 (1)当前素数P加1 (2)判别P是否是素数; (3)若是素数,返回P; (4)否则,P加1,继续执行( 2)。 ;例:编写一个程序,打印n前素数(n为给定的正整数) begin read(n); x:=1; while xn do begin “x是下一个素数”; write(x); end end;“x是一个素数” x:=x+1; k:=2;{k=2,3,4, …,x-1} lim:=x-1; repeat if “x能被k整除” then prim:=false else begin k:=k+1;prim:=true end until (not prim) or (k达到lim);program A515 (INPUT, OUTPUT); var n,x,k,lim:integer; prim:boolean; begin read(n); x:=1; WRITE(2,,); while x+1n do begin x:=x+1; k:=2; lim:=x-1; repeat if(x mod k)=0 then prim:=false else begin k:=k+1; prim:=true; end until(not prim) or(k=lim) ; if prim then write(x,,); end end.;逐步求精方法的最大优点是摆脱了传统的程序设计方法的束缚,按先全局后局部、先整体后细节、先抽象后具体的过程组织人们的思维活动,使得编写了的程序结构清晰、容易阅读、修改。;2、 模块化程序设计方法;把一个程序分成具有多个明确任务的程序模块,分别进行编写和调试,最后再把它们连接在一起,形成一个完成总任务的完整程序,这种程序设计方式叫模块程序设计。这种方法的优点如下: (l)单个程序模块易于编写,调试和修改; (2)便于分工,可由多个程序员编写、调试,有利于加快工作速度; (3)程序易读性好; (4)程序的修改可局部化进行; (5)频繁使用的功能可以编制成模块存在库里供多个任务使用。;模块设计三个原则;Modula 2语言的模块功能;说明的语法为: $说明= $“CONST”{常量说明“;”}| $“TYPE”{标识符[“=”类型]“;”}| $“VAR”{变量说明“;”}| $过程首部“;” ;实现部分与主程序相似,其语法为: $实现模块= $“IMPLEMENTATION”“MODULE”模块名“;” ${移入表} ${说明} $[BEGIN语句序列] $“END”模块名“。” 其中说明部分的语法与定义部分相似,只是用过程说明代替过程首部 ;程序模块语法为: $程序模块= $“MODULE”模块名[优先权]“;” ${移入表} ${说明} $[BEGIN语句序列] $“END”模块名“。” 程序模块通常是分级定义模块和实现模块的头。 ;程序模块编译单位的定义语法是: $编译单位= $定义模块| $实现模块 $程序模块 其中移出表语法: $移出表=“EXPORT”[“QUALIFIED”]标识符表“;” 移入表语法: $移入表=[“FROM”模块名]“IMPORT”标识符表“;” ;例:设计一个可

文档评论(0)

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

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

1亿VIP精品文档

相关文档