许多变成初学者都会遇到一个问题:我能分析出别人写的代码是否正确,但是我就是不知道他是怎么把这些代码写出来的!
这个问题困扰着每个编程初学者,其实他们是不知道算法如何转变为代码。
针对这个问题,我想从我的经历和学习方法,来解答如何将脑子里的算法落地。
我将用一些例子来解释,其中可能涉及到多种语言,在这一篇文章中语言不是重点,不必纠结。
Let's begin!
先来看一个例子:
某学校(大多“数算”书籍都喜欢用学校-_-!)有这样一个需求,根据学生的考试成绩,将成绩分为S、A、B、C、D、E六个等级。具体规则为:分数大于等于95分,成绩为S;分数大于等于90但小于95分,成绩为A;分数大于等于80但小于90分,成绩为B;分数大于等于70分但小于80分,成绩为C;分数大于等于60但小于70分,成绩为D;当成绩小于60分时,成绩为E;
这个需求对于老鸟们来说,在念的时候,代码已经在心中浮现了,可以说是“即时编译”。但对于初学者来说,“卧槽要怎么写成代码?”
重点要看分析过程,首先,我们将需求用简洁的表达式来表述,就会成为下面的样子:
分数设为score,那么
score >= 95 ----> S
score >= 90 and score < 95 -----> A
score >=80 and score < 90 ------> B
score >=70 and score < 80------->C
score >=60 and score <70 ------->D
score < 60 -------->E
到这里,需求的文字描述就变成了表达式描述。
And then,我们需要用伪代码,来包装这些条件,进一步把它们表述的更像是程序逻辑:
if(score >=95){
设置该学生成绩为S
}else if(score >= 90 && score < 95){
设置该学生成绩为A
}else if(score >=80 && score < 90){
设置该学生成绩为B
}else if(score >=70 && score < 80){
设置该学生成绩为C
}else if(score >=60 && score < 70){
设置该学生成绩为D
}else{
设置该学生成绩为E
}
此时,这段逻辑已经比较接近真实的代码了。接下来,就要用到我们所学的语言,来将这段儿伪代码,变成真正的代码。
这里我用PHP举例:(PHP是世界最好的语言)
$score = 0;
if($score >= 95){
setLevel($studentId,'S');
}else if(90 <= $score < 95){
setLevel($studentId,'A');
}else if(80 <=$score < 90){
setLevel($studentId,'B');
}else if(70 <= $score < 80){
setLevel($studentId,'C');
}else if( 60 <= $score < 70){
setLevel($studentId,'D');
}else{
setLevel($studentId,'E');
}
当然这段逻辑可以改进为很简洁的两行代码,这里不做算法优化讨论。
到这一步,我们已经将一个需求,从人类自然语言描述,转变为程序语言描述。也就是算法到代码的转变。
遇到一个需求时,通常步骤是分析->表达式逻辑->伪代码->套用编程语言。当熟练后或者需求比较简单时,可以将中间两步省略掉,在脑子里转化。但是当遇到复杂需求时,这个过程就显得比较重要了。
更多推荐
从算法到代码,你需要知道的几个要点
发布评论