Step 1. START
Step 2. Do something. If condition in Step 2 holds goto Step X else goto Step Y.
Step 3. Do something. If condition in Step 3 holds goto Step U else goto Step V.
Step 4. Do something.
Step 5. Do something. If condition in Step 5 holds goto...
Step 6. ...
...
Step N. END
你明白了。例如,Knuth 在他的书中以这种独立于编程语言的高级方式描述了算法。
现在的问题是如何将这样的高级描述转换为goto语句到带有 while 循环和 if/else 语句的实际实现中?是否可以完全消除所有goto语句,并用 while 循环替换它们?如果是这样,应该如何做一般来说?
有两种方法可以回答这个问题。优选地,并且非常希望,我正在寻找一种算法方法来实现任何算法。如果算法是什么very简单,那么直观上就很清楚应该做什么,但在我看来,一旦频繁访问某个步骤(那里有很多 goto 语句跳转),或者换句话说,当其中一个节点时,事情就会变得相当复杂。流图的入度很大。然后我不太明白 while 循环应该以什么特定顺序嵌套。另一方面,很可能一个人根本无法做我想做的事情,这样的答案应该得到对算法不可能的高级描述的支持,该描述清楚地表明无论如何,一个人根本无法做到避免使用goto在实际实施中跳跃。
然而,在这里我对另一个方向感兴趣。简单的搜索发现DRAKON(也可以看看https://en.wikipedia.org/wiki/DRAKON and http://drakon-editor.sourceforge.net/)可能正在做我所要求的事情。从这个角度来看,问题是,这样一个自动流程图到代码程序在不使用goto陈述?