在编码之前你是用伪代码写出你的算法吗?

时间:2009-05-27 23:28:38

标签: algorithm

所以我知道有些人在编码之前用普通英语(伪代码)编写了算法。我以前从未这样做过,但是现在我想到了它,它对于组织复杂的算法是有意义的。你这样做吗?有帮助吗?如果没有,你在编写程序之前做了什么(如果有的话)来组织你的程序?

17 个答案:

答案 0 :(得分:8)

我没有写很多伪代码,但我发现如果我不能用简单的英语说出我想做什么,那么我就不明白这个问题就足以开始编写代码了。

答案 1 :(得分:8)

I've mentioned it before

  

我倾向于发现自己在使用缩进的记事本中编写小用例...并且经过六行左右后我突然意识到我的写作风格本质上是Python但语法少了一点!所以我得出的结论是,Python实际上是伪代码,是用你真正想写的任何语言对你的想法进行原型设计的绝妙方法。这种技术最好的方法就是你已经有了一个可以比较的参考你的成品结果是在令人讨厌的错误的情况下。

答案 2 :(得分:4)

这些天我主要用Python编写。这是伪代码开始。

答案 3 :(得分:3)

总的来说,不是真的。如果我在计算机上工作并且我正在处理一些特别困难或乏味的事情,我可以通过事先使用注释来描述事物,但它们往往更像是一种自然语言陈述而不是适当的伪代码。通常我唯一一次使用适当的伪代码是在课堂上。

然而,值得注意的是,对一个开发人员有用的东西可能对另一个开发人员不起作用,有些人发誓手头写伪代码。

答案 4 :(得分:3)

我使用注释(在方法和发布的界面中)作为伪代码。

实施算法时,我按顺序执行的步骤是:

  • 确保API或界面正确。如果我无法确定正确的操作是什么,或者什么数据进出,那就错了。
  • 描述Javadoc(或等效)注释中的每个操作;这通常指出算法的问题或如何使用它。
  • 将方法或方法中的注释写为伪代码形式。我在开始编写代码之前或者在编写代码时这样做。这有助于我在编写之前记住我的想法,并记录我的想法以供将来参考。

答案 5 :(得分:2)

我试过这个但是,我觉得这很难做到,因为通常在我被迫用严格的语言写出算法之前,我通常会考虑许多事情。英语对你自己来说是一种很好的语言。

我实际上发现它有害,因为我花时间处理非问题,并且忽略了在我尝试编写计算机代码之前我没有看到的实际问题。事实上,我已经编写了计算机代码来帮助组织我对用英语写作的想法。

我发现绘制图片和/或采用几何方法非常有帮助。

答案 6 :(得分:1)

如果它不重要,我将首先使用伪代码,然后在我的文档中包含伪代码,如果我正在为该特定组件生成任何正式文档。

如果它是微不足道的,我只是用我的实现语言编写代码,然后在需要的时候通过并添加注释。

答案 7 :(得分:1)

通常对于一个函数,我会写一个很好的长标题描述它的作用(最好是Doxygen格式化)。

如果它足够复杂,我会制作结构图(旧的UML前OO设计),或类似UML序列或活动图。

对于整个系统,当然我从类图开始。

答案 8 :(得分:1)

如果这是一个非常棘手的问题,我会做一些伪代码。

答案 9 :(得分:0)

如果我知道我需要为其他部分编写代码,但我现在可以想到方法或函数的大致轮廓,我会写出足够的内容,以便我后来记得我的想法如何该方法应该运行。一般来说我最后会改变它,所以我很少发现它有用。

答案 10 :(得分:0)

那将是梦想。

只需编写伪代码即可。

答案 11 :(得分:0)

我不是用伪代码写的,但我通常会制作某种流程图来指导我。

答案 12 :(得分:0)

我非常喜欢先用伪代码编写算法,只是为了绕过算法。它相对容易(对我来说)从英语转换为代码,所以我倾向于写更多的单词和更少的代码。我可以轻松地将我的伪代码用作其他人的注释,以获得足够复杂的算法。

至于细节,我通常使用旧纸/铅笔,我缩进循环/控制语句。其他一切都是当时我的思绪吐出来的。

答案 13 :(得分:0)

绝对......曾经,我有一些坚实的伪,我开始“端口”。在没有语言语义的情况下,很容易以简单的方式完成复杂的事情。

答案 14 :(得分:0)

我的伪代码与上面的其他代码一样,基本上都是Python。这不是关于我的Python专业知识的陈述,而是关于语言的直观性。我的解决问题的技巧总是比我的记忆更好,因为语法这样的细节,所以很高兴使用一种语言,让我专注于手头的问题而不会妨碍我查找语法这么多。此外,伪代码与其他语言的好处之一就是在没有像类型声明这样的东西的情况下编写逻辑 - 而且无论如何你都不会在Python中这样做,因此编写代码基本上不会比伪代码逻辑更糟糕。

答案 15 :(得分:0)

我在fortran中写它 - 这基本上是伪代码,几乎任何人都能理解。我想不出更简单的写作方式。

答案 16 :(得分:0)

这取决于算法。如果它很简单,那么我通常可以存储所有逻辑路径,如果它很复杂,那么我将用相对逻辑勾勒出每一步。