1 概述[/b]
这里我这是简单的说一下。一想到新内容我会补充的:)1)自顶向下,逐步求精
意思就是,先写主程序,需要用子程序的地方尽管调用(虽然子程序还没有写),
直至完成主程序的框架(顶)。下面再分别完成各各子程序。
这样做的好处很明显:思路连贯,清晰,从全局入手,不会被众多小问题弄的
晕头转向。静态查错和调试也非常方便,程序可读性也极强。
2)子程序的大小
学过一点软件工程基本知识的同学应该知道,子程序因为起到了分割问题的作用
会降低编程复杂度,但过多的子程序会因为接口工作带来额外的程序量。我不
想借用那种N行一个子程序的建议,只是希望大家注意,子程序不能太多。常用
的代码写成子程序就可以了。
3)子程序的相互依赖关系。
我不想深入展开,只是提醒大家,少用全局变量,减少依赖性,增加独立性。这
会给调试带来极大的方便。
4)竞赛需要简洁和清晰的统一
一般来说,竞赛时更看中简洁,因为涉及到编程复杂度和调试复杂度,所以过程不易太多。
[b]2 美化你的程序
这是一个值得深入研究的问题。我在这里只是讲一点皮毛,给初学者引引路,
帮你们找到“感觉”。
源程序是给人看的。
不只有你是人,因此程序要让第二个人也能看懂^O^.
我知道你不想让别人看到你的程序,但N年以后可能你自己都看不懂了...
所以,我给你一些建议:
a.缩进式。就是每个层次空两格(也不一定是2格,看你的习惯了)。如:
for i:=1 to n do
for j:=1 to n do
if i+j>5 then
begin
i:=i+1;
j:=j-2;
end
就写成:
for i:=1 to n do
for j:=1 to n do
if i+j>5 then
begin
i:=i+1;
j:=j-2;
end
这样层次很清楚,也比较好看一点。
b.给变量取好记的名字。
如:i,j:循环变量
total:累加器
best:当前最优值
等等。主要也是看你的习惯了。注意一定不要引起混淆。
例如一个变量叫num,一个叫number,就难免会用错。
c.善用子程序。
例如:
begin
Init;
for i:=1 to n do
begin
Analyse(i);
Process(i);
AddToResult(i);
end;
end.
程序的作用和结构很明显,如果把init(),analyse(),process().addtoresult()代码放在这里,
就会显得非常臃肿,分不清哪些代码是干什么的,而且很不利于单独调试。