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

来源:互联网 发布:常用的mac论文软件 编辑:程序博客网 时间:2024/06/03 14:26

自顶向下(top-down)
将复杂的大问题分解为相对简单的小问题,找出每个问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。其核心本质是”分解”。
对要完成的任务进行分解,先对最高层次中的问题进行定义、设计、编程和测试,而将其中未解决的问题作为一个子任务放到下一层次中去解决。这样逐层、逐个地进行定义、设计、编程和测试,直到所有层次上的问题均由实用程序来解决,就能设计出具有层次结构的程序。 按自顶向下的方法设计时,设计师首先对所设计的系统要有一个全面的理解.然后从顶层开始,连续地逐层向下分解,起到系统的所有模块都小到便于掌握为止
这里写图片描述
逐步求精
将现实问题经过几次抽象(细化)处理,最后到求解域中只是一些简单的算法描述和算法实现问题。即将系统功能按层次进行分解,每一层不断将功能细化,到最后一层都是功能单一、简单易实现的模块。求解过程可以划分为若干个阶段,在不同阶段采用不同的工具来描述问题。在每个阶段有不同的规则和标准,产生出不同阶段的文档资料。

这里写图片描述
举个简单的例子:蛇形矩阵
Description
蛇形矩阵是由 1 开始的自然数依次排列成的一个矩阵上三角形。
Input
本题有多组数据,
每组数据由一个正整数 N 组成。(N不大于 100)
Output
对于每一组数据,输出一个 N 行的蛇形矩阵。两组输出之间不要额外的空行。
矩阵三角中同一行的数字用数域控制符“%4d”分开。行尾不要多余的空格。
Sample Input
5
Sample Output
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
首先把蛇形矩阵问题分解成若干个小问题:
1.使用一个二维数组储存数字,方便表格形式打印
2.使用嵌套循环结构赋值,大循环有n次,小循环起点为第一列,终点为第一行,每次小循环结束后行数+1,列数初始化为0
3.按照行列打印数组
代码如下:

#include<stdio.h>  int main()  {    int n,a[100][100]={0},row=1,col,coun,x,m=1;    //赋值,大循环嵌套小循环,终点在第一行     scanf("%d",&n);    for(coun=1;coun<=n;coun++){        col=1;        for(x=row;x>=1;x--){            a[x][col++]=m++;            }             row++;        }    //打印数组    for(coun=1;coun<=n;coun++){        for(x=1;x<=n-coun+1;x++){            printf("%4d",a[coun][x]);        }        printf("\n");    }     return 0;   } 

这里写图片描述
另附其他版本的蛇形矩阵:

#include<stdio.h>int main(){int i,j,a[100][100],n,k;printf("请输入列数n= ");scanf("%d",&n);k=1;//输出上三角for(i=0; i<n; i++)for(j=0; j<=i; j++){if(i%2==0) a[i-j][j]=k;else a[j][i-j]=k;k++;}//输出下三角for(i=n; i<2*n; i++)for(j=1; j<2*n-i; j++){if(i%2==0) a[n-j][i-n+j]=k; //n+1在这里是定值了else a[i-n+j][n-j]=k;k++;}for(i=0; i<n; i++){printf("\n");for(j=0; j<n; j++)printf("%4d",a[i][j]);}printf("\n");return 0;}

这里写图片描述
洗衣机程序设计:


  1. 进水,洗涤(漂洗)、排水、脱水
  2. Waterinswitch open getwatervolume(V) IF V==20 Waterinswitch close WHILE time<=0.5h motorrun(direction) direction%=2
    direction++ //dirction=0 left
    左转, //dirction=1right 右转, wateroutswitch open if V==0 wateroutswitch close motorrun(direction) direction%=2 direction++

  3. 快速洗衣跳过了浸泡过程 改进:加大电机运转速率

  4. Wait(time) Motorrun(time) Warning(time) 注水(vol,time)

阅读全文
0 0
原创粉丝点击