伪代码:一个明确的定义?

时间:2010-03-22 02:43:47

标签: definition pseudocode

以下代码是我认为有资格作为伪代码的示例,因为它不以任何语言执行,但逻辑是正确的。

string checkRubric(gpa, major)
    bool brake = false
    num lastRange
    num rangeCounter
    string assignment = "unassigned"
    array bus['business']= array('person a'=>array(0, 2.9), 'person b'=>array(3, 4))
    array cis['computer science']= array('person c'=>array(0, 2.9), 'person d'=>array(3, 4))
    array lib['english']= array('person e'=>array(0, 4))
    array rubric = array(bus, cis, lib)

foreach (rubric as fieldAr)
    foreach (fieldAr as field => advisorAr)
        if (major == field)
            foreach (advisorAr as advisor => gpaRangeAr)
                    rangeCounter = 0
                foreach (gpaRangeAr as gpaValue)
                    if (rangeCounter < 1)
                        lastRange = gpaValue
                    else if (gpa >= lastRange && gpa <= gpaValue)
                        assignment = advisor
                        brake = true
                        break
                    endif
                    rangeCounter++
                endforeach
                if (brake == true)
                    break
                endif
            endforeach
            if (brake == true)
                break
            endif
        endif
    endforeach
    if (brake == true)
        break
    endif
endforeach
return assignment

在过去的几周里,我一直在尝试创建一个明确的伪代码定义。它是相对于程序员还是有实际的明确语法?我说伪代码是任何不执行的代码,你怎么样?谢谢(链接到这个主题欢迎)

8 个答案:

答案 0 :(得分:7)

伪代码没有固定的定义。这是您期望观众理解的任何符号,以表达您的观点。重要的想法是,它是供人类阅读的,而不是计算机,所以它不一定非精确。您可以包含对您的展示重要的详细信息,并省略那些不重要的详细信息。

答案 1 :(得分:3)

Wikipedia无耻地撕掉:

伪代码是计算机编程算法的紧凑和非正式的高级描述,它使用编程语言的结构约定,但是用于人类阅读而不是机器阅读。伪代码通常省略对人类理解算法不重要的细节,例如变量声明,系统特定代码和子例程。

有很多代码无法执行。这并不意味着它是伪代码。你的“伪代码”有很多额外的东西,非程序员不会理解。您的“伪代码”语言与实际语言非常非常接近,而不是伪代码。

答案 2 :(得分:1)

理论上,伪代码应该是独立实现的。它以简明的语言呈现了如何做的逻辑步骤。它用于人工解释,而不是机器执行。

OP的示例比伪代码更接近实际代码。例如,在所有语言中都找不到++。它在其他方面也可能有不同的含义。

答案 3 :(得分:1)

好吧,如果我不编译/链接我的C ++代码,它就不会执行,所以我不认为“不执行的代码”是一个可接受的定义。

同样,脚本语言不会被执行,它们经常被解释。

我对伪代码的定义是:

“[简明]与语法无关的代码,用于传达函数,行为或算法。”“

答案 4 :(得分:1)

伪代码是算法或程序的任何紧凑的,人类可读的解释。由于你的程序对我来说是不可读的,我会说它不是伪代码。以下是伪代码的示例:

def sum(x):
    result = 0
    for each entry in x:
        add current entry to result
    report result

或者,风格略有不同:

sum(x):
   Let x be an array
   Let result be an integer representing the result, initially 0

   for item in x:
       result += item

   return result

你可以使用特定语法的元素(事实上,我的伪代码往往看起来很像Python),但它需要被广泛的受众理解,不应该受到语法的阻碍。例如,我使用“+ =”,但这是因为它非常紧凑和方便,而不是因为它是必需的。如果您发现“endforeach”在您的博览会中有用且方便,那就没问题了;但是,我认为这样的事情不属于伪代码,因为它看起来更有用而不是有用或解释。

答案 5 :(得分:1)

程序概要,以易于转换为真实编程语句的形式编写。

伪代码无法编译也无法执行,也没有真正的格式或语法规则。在生成最终代码时,这只是一步 - 一个重要的步骤。伪代码的好处是它使程序员能够专注于算法而不必担心特定编程语言的所有语法细节。

答案 6 :(得分:0)

我的两分钱:

  

我说伪代码是任何代码   不执行,你呢?谢谢   (链接到这个主题欢迎)

在考虑其定义时,这不是我的想法。伪代码是您的程序将比描述算法更详细地完成任务所采取的步骤。

我发现对于如何编写伪代码非常重要的一件事是,每个人都必须理解它,以便每个人将其“移植”到一个人想要的语言。换句话说,它必须与语言无关。

正如建设性的批评一样,我不会因为各种原因而将您的示例视为伪代码,但特别是因为您使用的语法和约定类似于特定的编程语言。我说伪代码应该是编程语言不可知的,以便被不同的人移植到几种实际的编程语言。

编辑: 我可能会在我的定义中添加一条规则,即它必须类似于人类语言而不是编程语言。如同,等于而不是==分配而不是=。这背后的原因是,例如,赋值和相等运算符在不同语言中是不同的。

答案 7 :(得分:0)

如果您希望快速,清晰地了解您的想法,那么Pseudocode就是您在白板上写的内容。在实践中,对我来说,它很像一种无类型的脚本语言,但语法要求更宽松。对我而言,它看起来很像C,因为坦率地说,大多数程序员都会使用一些C语言变体的语言,所以直觉对于更多的人来说更容易(它曾经看起来像Pascal,但那是因为那是我最早的语言之一在学校里学到的。)