我刚刚在测试中丢失了50%的答案,因为我在我的期中编写了代码而不是算法,让我从A变为C.编写代码仍然被认为是算法表示吗?
维基百科:算法表示(因为编程风格几乎是基于共识的)
编辑:好的,让我明确几点:
测试要求伪代码,我们从未在课堂上"定义"; 我们刚刚为我们的算法写了英文.
它是一个Java类,并用Java方法和注释写出整个解决方案.所有这些都是手写的,写出来的时间比伪代码要长.我认为会更清楚.
我通常不会对这些事情提出问题,但这是A和C之间的区别,我有一个奖学金骑在我的考试上.
最后,我发布这篇文章有两个原因:
4.1我想展示现代编程社区对伪代码和算法表示的看法.
4.2我想知道"现实世界"中可以接受的东西; 我已经编程了一段时间,但我希望能够尽快为开源项目做贡献,而且我不想踩到任何人的脚趾.(虽然我很确定这个话题几乎没有机会进入现实世界).
再次感谢任何帮助/建议.
您可能想举个例子.如果您的代码过多地关注不属于算法的语言细节,那么可以理解,可以说您的算法混合了非算法,导致结果不正确.
我觉得这个推理,整个学习的目的是让你明白这个概念,而不是弯腰并勾选所有正确的方框.
可以教一台计算机通过大学,但计算机还不能教会实际思考并应用知识.
吃饭和反刍的心态是我从未毕业的原因.
关于你最近的评论,它对于实现伪代码的重要性是不确定的.它中通常有重复使用的术语,但它不是严格的语言,而不是英语(否则它将是一种编程语言,可以逐字解析和执行)
伪代码的重要性在于充实系统的逻辑部分,而不必过分担心超出"它有意义"的语法
通常这可以使伪代码更简洁 ,更易理解.
伪代码也不依赖于读者理解语言中的"魔术语法"以便处理它,他们需要理解的是所使用的术语.
例如,如果你要给普通人一个perl算法,那么大多数人都会死于恐怖,因为他们没有看到线路噪声的碎片.
而:
sub foo { my @args = @_ ; my( $a, $b )=(@args[0],@args[1]); for( @{ $a } ){ $b .= $_ ; s/id//g; } return [$b,$a]; }
对于精通perl的人来说可能会有一些连贯的意义,对于普通的代码阅读器,他们得到的只是"你刚才说的到底是什么"的回应.记录它也没有多大帮助.
| there is a subroute foo which can take a list of strings, and a default string, \- which then iterates all items in that list, | \- and for each item in that list | 1. appends the contents of that item to the end of the default string | 2. removes all instances of the string "id" in that item | \ and returns a list, which contains 1. the concatentated default string 2. the modified input list
突然间,它变得不那么暧昧,更多的人可以理解它.
因此,编写算法的一半练习是"不仅要证明你理解它,而且还必须证明你可以向不了解问题的其他人解释你的推理",这是至关重要的练习.你需要的能力.如果你无法沟通你所做的事情,没有人可以使用它.
代码中也存在这个令人讨厌的小问题,这在算法中是不存在的,那就是代码看起来可能正确,但可能不会按照你的想法做到,如果做得不对,你就不要没有意识到,人们阅读代码进行逆向工程,它会污染它并复制一个破碎的算法.不好.人类形式的算法更好地翻译'这就是我想要它做的'