“自顶向下” ●将复杂的大问题分解为小问题,找出问题的关 键、重点所在,同时找出技术难点来。然后用 精确的思维定性、定量地描述问题。 ●问题的核心是”分解“。如何划分?准则是什 么? ●实现的手段是”子程序“、”函数“,即模块 化 o要点:将大间题化为小间题 找出关键、难点,定量描述 核心是:分解 手段是:模块化(函数、子程序) 第6页
上一页 停止放映 下一页 第 6 页 “自顶向下” ⚫ 将复杂的大问题分解为小问题,找出问题的关 键、重点所在,同时找出技术难点来。然后用 精确的思维定性、定量地描述问题。 ⚫ 问题的核心是”分解“ 。如何划分?准则是什 么? ⚫ 实现的手段是”子程序“ 、 ”函数“ ,即模块 化。 要 点:将大问题化为小问题, 找出关键、难点,定量描述 核心是:分解 手段是:模块化(函数、子程序)
“逐步求精” ●将现实世界的问题经抽象转化为逻辑空间或求 解空间的问题。复杂问题经抽象化处理变为相 对较简单的问题。经几次抽象(精化)处理, 最后到求解域中只是非常简单的编程问题。 求解(抽象)过程可以划分为若干个阶段,在 不同阶段用不同工具来描述。实现细则在前期 阶段可以不去管它。在每个阶段有不同的规划 和标准,产生出不同阶段的文档资料。 将现实问题抽象为逻辑空间问题, 几经抽象化为简单的编程问题。 第7页
上一页 停止放映 下一页 第 7 页 “逐步求精” ⚫ 将现实世界的问题经抽象转化为逻辑空间或求 解空间的问题。复杂问题经抽象化处理变为相 对较简单的问题。经几次抽象(精化)处理, 最后到求解域中只是非常简单的编程问题。 ⚫ 求解(抽象)过程可以划分为若干个阶段,在 不同阶段用不同工具来描述。实现细则在前期 阶段可以不去管它。在每个阶段有不同的规划 和标准,产生出不同阶段的文档资料。 将现实问题抽象为逻辑空间问题, 几经抽象化为简单的编程问题
模块化处理 ●模块化就是把程序划分为若干个模块,而每个 模块完成一个子功能,把这些模块汇总起来构 成一个有机整体,即可完成指定的功能。 ●模块化的目的是为了降低软件复杂度,使软件 设计,调试和维护等操作变得简易。 第8页
上一页 停止放映 下一页 第 8 页 模块化处理 ⚫ 模块化就是把程序划分为若干个模块,而每个 模块完成一个子功能,把这些模块汇总起来构 成一个有机整体,即可完成指定的功能。 ⚫ 模块化的目的是为了降低软件复杂度,使软件 设计,调试和维护等操作变得简易
结构化编码 ●SP编码的方法强调清晰简洁,它是一种构造 程序的技术,有利于提高软件生产率及降低 软件维护代价。 ●1966年Bohm和 Jacopini就证明了只要用三 中基本结构,就足以表示所有形式的程序控 制结构。 ●1978年 Kernihan和 Plauger对一些编码风 格进行归纳,提出了16种具体方法。 第9页
上一页 停止放映 下一页 第 9 页 结构化编码 ⚫ SP编码的方法强调清晰简洁,它是一种构造 程序的技术,有利于提高软件生产率及降低 软件维护代价。 ⚫ 1966年Bohm和Jacopin就证明了只要用三 中基本结构,就足以表示所有形式的程序控 制结构。 ⚫ 1978年Kernihan和Plauger对一些编码风 格进行归纳,提出了16种具体方法
结构化编码风格 口尽量使用标准库函数 口使用有意义的变量名 口程序讲究清晰,避免过于精对输入进行错误判别 巧 口注释勿用太滥 口对重复使用的表达式尽量调口模块化功能专一,模块间 用公共函数代替 偶合清晰 口使用括号,以避免二义性 口递归定义的DS尽量采用 口用逻辑表达式代替分支嵌套 递归过程访问 口使用缩排格式 口把大程序分成小块去编 口避免使用 IF THEN和空ELSE 写和测试 口注意计算机运算特点,如口勿追求不必要的效率,尽 10.0乘0.1很少等于1.0 量采用基本控制结构 避免循环多个出囗 第10页
上一页 停止放映 下一页 第 10 页 结构化编码风格 ❑ 尽量使用标准库函数 ❑ 程序讲究清晰,避免过于精 巧 ❑ 对重复使用的表达式尽量调 用公共函数代替 ❑ 使用括号,以避免二义性 ❑ 用逻辑表达式代替分支嵌套 ❑ 使用缩排格式 ❑ 避免使用IF THEN 和空ELSE ❑ 注意计算机运算特点,如 10.0乘0.1很少等于1.0 ❑ 使用有意义的变量名 ❑ 对输入进行错误判别 ❑ 注释勿用太滥 ❑ 模块化功能专一,模块间 偶合清晰 ❑ 递归定义的DS尽量采用 递归过程访问 ❑ 把大程序分成小块去编 写和测试 ❑ 勿追求不必要的效率,尽 量采用基本控制结构 ❑ 避免循环多个出口