简述“自顶向下,逐步求精”——面向过程程序设计方法

2023-10-31

引入

 所谓“自顶向下,逐步求精”的程序设计方法,网络上有着如下的说法,一者是百度百科所述,另一者则为维基百科的说法。

自顶向下设计 :一种逐步求精的设计程序的过程和方法。对要完成的任务进行分解,先对最高层次中的问题进行定义、设计、编程和测试,而将其中未解决的问题作为一个子任务放到下一层次中去解决。这样逐层、逐个地进行定义、设计、编程和测试,直到所有层次上的问题均由实用程序来解决,就能设计出具有层次结构的程序。

——百度百科

In computer science, divide and conquer is an algorithm design paradigm based on multi-branched recursion. A divide and conquer algorithm works by recursively breaking down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly. The solutions to the sub-problems are then combined to give a solution to the original problem.

——Wikipedia


个人看法

 要说到“自顶向下”,那么肯定是有着一个顶部的存在——就是一个或若干个复杂的大的问题。那么将这复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题,就是“自顶向下”方法的思路和体现。
  至于“逐步求精”,那就是将现实世界的问题经抽象转化为逻辑空间或求解空间的问题。复杂问题经抽象化处理变为相对比较简单的问题。经若干步抽象(精化)处理,最后到求解域中只是比较简单的编程问题。
 其中,具体可分为以下几钟不同的抽象处理方式:
①顺序结构
②选择结构
③循环结构
 而其中最复杂的要数循环结构,但这种方法却是解决问题较为有效的一种方法,比如说它可以解决洗衣机运行的问题,而今日我就将用这种“自顶向下,逐步求精”的方法实现普通洗衣机运行程序的伪代码。
 不过在这之前,我得先用一个简单的例子来熟悉熟悉这一种方法。


例1:杨辉三角

例1:输入一个数字n(1<=n<=10), 不在范围内的n输出“Out Of Range.\n” 输出杨辉三角的前n行
 为什么我会选择杨辉三角来充当本文的第一个例子而不选择简单的1+2+3+…+n这种问题来充当例子呢?
&esmp;很简单,那种1加到100的问题逼格不够,一看就是拿来敷衍的。(吐槽一发)
 那么,这个杨辉三角怎么样才能够用代码实现呢?
 方法有很多,因为这个数阵这么多年来早已经被人类给摸得七七八八了:
规律:
这里写图片描述
从上图可看出杨辉三角的几个显著特征:

 1. 每行数值左右对称&
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简述“自顶向下,逐步求精”——面向过程程序设计方法 的相关文章

  • logback 配置详解(二)——appender

    1 appender
  • solidworks 2020小金球_solidworks2020如何开启小金球RealView

    solidworks2020如何开启小金球RealView 如何查看sw否开启小金球RealView 只有在建模环境下依次点击 视图 显示 RealView图形 就可以看见小金球RealView是否开启 像图片中的呈现灰色 则表示小金球Re
  • 今天使用模板特化所遇到的问题

    template lt class T gt void test const T t cout lt lt void test const T t lt lt endl template lt gt void test lt int gt
  • Ubuntu中deb包详解及打包教程

    一 deb包详解 1 gt deb 包的文件结构 deb 软件包里面的结构 它具有DEBIAN和软件具体安装目录 如etc usr opt tmp等 deb包本身有三部分组成 组成 详细 数据包 包含实际安装的程序数据 文件名为 data
  • C# 中的Dispose()用法

    Dispose 在向大家详细介绍C 调用Dispose 方法之前 首先让大家了解下Dispose 方法 然后全面介绍C 调用Dispose 方法 我们已经知道了处置那些占用非受控 unmanaged 资源的对象的重要性 现在应该编写资源管理
  • 反射——通过工厂类来完成获取接口示例

    反射可实现程序中无new关键字 实现真正的解耦合 import java lang reflect InvocationTargetException import java lang reflect Member 只要是获取接口示例 都应
  • python离线安装第三方库

    python离线安装第三方库 安装包下载 cmd实现离线安装 zip文件包下载安装 whl文件下载安装 由于内外网的物理隔离 导致很多python的第三方库无法在线安装 只能选择离线安装了 离线安装具体如下 安装包下载 python除了本身
  • 职场年度最励志文章:纽约华人女教师直指人心的23条金句

    多年的工作经历让我深刻理解这23句职场的肺腑之言 也许对于一个初出茅庐的大学毕业生 这些内容显得高屋建瓴 并不能被深刻理解 推荐这篇文章 不在于要你记住多少 而是希望透过别人经验的这面镜子 审视自己 如果有什么忠告 只有一句话 去经历 你就
  • 强化学习 gridworld P77 模拟

    import numpy as numpy from tabulate import tabulate class State class for each unit on the game def init self id if id 0
  • 实体-联系模型

    实体 联系 Entity Relationship E R 模型 以下简称E R模型 的提出旨在方便数据库的设计 它是通过允许定义代表数据全局逻辑结构的企业模式实现的 E R模型采用三个基本概念 实体集 联系集和属性 实体集 实体 enti
  • VirtualBox虚拟机 Ubuntu分辨率太小的解决方案

    转自 http blog csdn net xubinlxb article details 18092297 今天用VirtualBox成功装上Ubuntu10 04之后发现了一个问题 默认情况下 ubuntu 的分辨率最高只能设到800
  • vba中颜色代码

    更详细的可以看 VBA颜色代码 经典颜色收藏版打印版 豆丁网
  • 测试人员与开发人员的比例究竟多少是合理的?

    在一些软件大会上 人们常常会问这样一个问题 测试人员与开发人员的比例究竟多少是合理的 而这样的问题 很难直接给出一个答案 为什么会有这样的问题 可能来自于两方面的压力 许多公司领导总是希望得到一个合理的比例 然后按这个比例分配招聘的名额 或
  • IDEA中创建Java Web项目方法2

    以下过程使用IntelliJ IDEA 2021 3 一 创建Maven项目 1 File gt New gt Projects 2 选择Maven 点击Next 3 输入项目名称 Name WebDemo3 点击 Finish 生成新的项
  • python中的__doc__,__name__

    模块的name 每个模块都有一个名称 在模块中可以通过语句来找出模块的名称 这在一个场合特别有用 就如前面所提到的 当一个模块被第一次输入的时候 这个模块的主块将被运行 假如我们只想在程序本身被使用的时候运行主块 而在它被别的模块输入的时候
  • 雅克比(Jacobi)方法

    转载 https www cnblogs com ytxwzqin p 9853781 html 雅克比 Jacobi 方法 可以用来求解协方差矩阵的特征值和特征向量 雅可比方法 Jacobian method 求全积分的一种方法 把拉格朗
  • DTO 的替代品

    点击 终码一生 关注 置顶公众号 每日技术干货 第一时间送达 数据传输对象是在进程之间承载数据的对象 使用它的动机是进程之间的通信通常通过远程接口完成 其中每次调用都是昂贵的操作 由于每次调用的大部分成本都与客户端和服务器之间的往返时间有关
  • I/Q信号

    当前的数字射频芯片 无一例外的用到了I Q信号 就算是RFID芯片 内部也用到了I Q信号 然而绝大部分射频人员 对于IQ的了解除了名字之外 基本上一无所知 I Q信号一般是模拟的 也有数字的比如方波 基带内处理的一般是数字信号 在出口处都
  • centos 普通用户操作 supervisor 报错

    当我们在centos系统中使用普通用户操作supervisor时 可能会有以下权限问题 error
  • vue---el-upload使用FormData多文件同时上传

    需求描述 使用el upload 手动上传方式进行文件上传 https element eleme cn zh CN component upload 当选择上传多个文件时 选择几个文件就会向后台发送几次请求 先后台要求同时一次请求发送多个

随机推荐