1、源自aerojockey.com的C程序
产品软件不论程序规范与否,只要语法上没有错误,都可以将它自动变换成清晰、规范、可读性远胜于文字性程序的二维结构化程序框图(SI-NS图)。
以下是源自www.aerojockey.com的一个C代码程序:
变换后生成的SI-NS图为:
2、源自《C程序设计》例题11.13

清华大学谭浩强教授的《C程序设计》,发行量超过700万册。书中几乎所有例题都采用NS图表达解题的的算法。
这里以例题11.13为例:
例11.13: 口袋中有红、黄、蓝、白、黑五种颜色的球若干个。每次从口袋中先后取出3个球,问得到3种不同色球的可能取法,输出每种排列的情况。
球只能是5种色之一,而且要判断各球是否同色,应该用枚举类型变量处理。
设取出的球为i、j、k。根据题意,i、j、k分别是5种色球之一,并要求i ≠ j ≠ k。可以用穷举法,即一种可能一种可能地试,看哪一组符合条件。
算法用书上图11-27和图11-28的NS图表示。

该题最终的程序如下:
#include <stdio.h>
main()
{enum color {red,yellow,blue,white,black};
enum color
i,j,k,pri; int n,loop;
n=0;
for
(i=red;i<=black;i++)
for
(j=red;j<=black;j++)
if (i!=j)
{ for
(k=red;k<=black;k++)
if ((k!=i) && (k!=j))
{n=n+1;
printf("%-4d",n);
for (loop=1;loop<=3;loop++)
{switch (loop)
{case 1: pri=i;break;
case 2: pri=j;break;
case
3: pri=k;break;
default:break;
}
switch (pri)
{case red:printf("%-10s","red"); break;
case yellow: printf("%-10s","yellow"); break;
case blue: printf("%-10s","blue"); break;
case white: printf("%-10s","white"); break;
case black: printf("%-10s","black"); break;
default :break;
}
}
printf("\n");
}
}
printf("\ntotal:%5d\n",n);
}
显然,程序不能像NS图那样清晰、直观地表达该题的算法和设计思想。
用产品软件将上述程序变换成SI-NS图之后,情况就完全不同了,学生很容易读懂理解程序的整体结构、算法和设计思想。
倘若能将开发和维护中的程序随时变换成SI-NS图,学生在分析考虑问题时,只需面对读起来远比程序容易理解得多的SI-NS图。这样的开发模式,一次开发成功率非常高。
|