是否可以将代码转换为逻辑图?

时间:2009-06-27 22:09:32

标签: algorithm logic

是否可以将代码转换为逻辑图?


编辑:

我在想的是数学是绝对的。我们可以肯定地判断它是对还是错。但是对于代码来说,还有一些不同于逻辑的东西。我想要做的就是删除“某些东西”以仅保留逻辑。

5 个答案:

答案 0 :(得分:2)

这是可能的。流程图是逻辑图,可以很容易地由计算机生成。每个代码结构都有一个对应的flowchart structure

快速谷歌提出:Code Visual to Flowchart

<小时/> 就反向而言,流程图太宽泛而无法转换为代码。 但是有图形编程语言。例如,NI's labView fpga是所有图形编程,然后可以转换为VHDL。

答案 1 :(得分:2)

不确定这是什么意思,但静态分析器如clang解析代码,确定代码可能采用的所有可能分支,并检查错误。例如,给定代码..

1. if(somefunction()){
2.    this_will_break();
3. } else {
4.     if(anotherfunction()){
5.         printf("%i", str(something));
6.     }
7.     print("this is fine");
8. }

您将获得输出:

Line 1. Taking true branch.
Line 1. Error: Function this_will_break is not defined
Line 4. Taking true branch.
Line 5. Warning: Function passed incompatible type

您可以绘制这些路径的图形,但我不明白您为什么会这样(它不会真正显示任何内容)

另一个可能类似的想法是Gprof2Dot,它获取分析数据,并绘制一个分层的Graphviz图表,显示每个函数运行的时间,调用它的函数等等。

最后一点让人想起,这是基于节点的应用程序,如ShakeQuartz Composer - “可视化编程”的方式,代表Add(Blur(MyImage), Blur(AlphaChannel))之类的代码:

[MyImage]--->[Blur]----\/
                      [Add]
                       /\
[AlphaChannel]----------

这些不是逻辑图,但它们是可视化表示代码的方式,可能会给你一些想法......也许......除非我完全误解..

答案 2 :(得分:0)

至少可以反过来。在编写Siemen的PLC时,一种比较常见的编程形式是“梯形逻辑”,您可以用图形编程。

http://en.wikipedia.org/wiki/Ladder_logic

答案 3 :(得分:0)

或者像逆向工程UML,具有类和序列图?

没有代码本身那么有价值,IMO。一旦达到有意义的复杂程度,就无法获取整个图表或图表。而且可以有效绘制的问题并不值得付出努力。

没有任何类型的图形表示的调试器或单元测试。

图片和设计的价值是达到你能够很好地理解问题以进行编码的程度。但是,一旦你达到这一点,我认为使它们等同于工程图纸的边际效用是不值得的。

答案 4 :(得分:0)

这只是与您想要的相反,但 csgraph.com 允许您以 Adj List 或 Adj Matrix 格式绘制图形并生成它们的代码形式。

Screenshot of Webview