从算法到代码,你需要知道的几个要点

许多变成初学者都会遇到一个问题:我能分析出别人写的代码是否正确,但是我就是不知道他是怎么把这些代码写出来的!

这个问题困扰着每个编程初学者,其实他们是不知道算法如何转变为代码

针对这个问题,我想从我的经历和学习方法,来解答如何将脑子里的算法落地。

我将用一些例子来解释,其中可能涉及到多种语言,在这一篇文章中语言不是重点,不必纠结。

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');
}

当然这段逻辑可以改进为很简洁的两行代码,这里不做算法优化讨论。

到这一步,我们已经将一个需求,从人类自然语言描述,转变为程序语言描述。也就是算法到代码的转变。

 

遇到一个需求时,通常步骤是分析->表达式逻辑->伪代码->套用编程语言。当熟练后或者需求比较简单时,可以将中间两步省略掉,在脑子里转化。但是当遇到复杂需求时,这个过程就显得比较重要了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章