if>的一些替代形式是什么?然后关系?

时间:2013-08-04 22:24:17

标签: if-statement relational-database

传统的if>那么伪代码中的关系:

if (x>y) {
then print "x is greater than y."

}

还有关系数据库。

或者只是视觉如果>然后是表格。可视化表格表示。

如果>然后编程辅助工具,还有树或层次结构。

我正在寻找if>然后构造的任何和所有替代品和风味,但最好是实用的。由于大多数人在使用和记忆视觉结构(表格与原始代码)方面比符号结构更好,我正在寻找理论上以图形方式构建if> then规则引擎的最直观方式。

注意:我没有尝试实现这一点,我只是试图了解理论上可以做什么。

2 个答案:

答案 0 :(得分:0)

我希望我能正确地解释这个问题。

一切最终归结为比较,只是将这些比较分解为可管理的人类块。有许多技术可以减少if-thens,或者至少将它们转换为更容易理解的东西。

一个例子是多态性。这使程序员从if / then的一个实例中解放出来(基本上是一个switch语句)。另一个例子是地图。地图的实现使用if / thens,但是可以使用所有数据预填充地图并使用一个逻辑代码而不是使用if / then来区分。这转向了数据驱动的方法。另一个例子是SQL;它只是一种语言,一种更高层次的结构,使我们能够以不同的方式表达条件和约束。您如何选择表达这些条件取决于问题域。有些问题适用于传统的过程编程,有些问题与逻辑编程,声明性编程等有关。如果嵌套的if-thens有很多层次,那么状态机方法可能效果很好。面向方面的编程试图解决不属于任何一个模块的模块中重复代码的问题;关注“横切”。

我会在Programming Paradigms上做一些阅读。做大量的研究,如果你遇到一个反复出现的问题,看看另一种方法是否允许你减少if-thens的数量。大多数情况下,其他人遇到了同样的问题,并提出了解决方案。

答案 1 :(得分:0)

你的问题有点宽泛,我们可以从逻辑门到数学函数徘徊。我将专注于这一点:

  

“我正在寻找理论上构建if> then规则引擎的最直观方式,以图形方式”。

首先,两个警告:

  1. 最佳表示取决于可能的规则数量。什么适用于3-4规则可能不适用于30-40。
  2. 我要假装else条件不存在。
  3. 如果“X则Y”归结为:一个条件和一个指令,其执行取决于条件。让我们假装X -> Y意味着“如果X为真则执行Y”。让我们创建两个集合:一个是C,包含所有可能的条件。另一个是I,其中包含所有可能的说明。

    请注意,X ∈ CY ∈ I。在您的具体情况下,可以Y ∈ C(Y可以是条件)吗?如果是这样,则嵌套ifs。

    嵌套ifs可以表示为and运算符连接的条件链:

    if (x > 3) {
      if (y > 5) {
        # do something
      }
    }
    

    可以写成:

    if (x > 3 and y > 5) {
      # do something
    }
    

    如果您只考虑代码,那么当您有许多嵌套条件时,后者可能会出现问题,但是当您使用图形时,嵌套(可能使用树状结构)可能看起来混乱,而链接通常看起来像一个序列说明(我认为更好)。

    如果您不考虑在规则中嵌套(链接),那么从X -> Y连接元素(方框,圆圈等)是非常简单的工作方式。这种表示取决于您想要获得的图形(有关示例,请参阅下面的链接)。

    如果你正在考虑筑巢,那么我会想到三个随意的想法:

    1. 维恩图:视觉上有吸引力,超过3-4个条件无用。它们非常适合数据库表示。请参阅:http://share.mheroin.com/image/3i3l1y0S2F39
    2. 流程图:功能强大且易于阅读,创建起来不会太麻烦。 10个元素可能会失控。请参阅:http://share.mheroin.com/image/2g071j3U1u29
    3. 表:正如您所提到的,只要您可以限制适用规则集,表就是表示条件的一种不错的方式。这是从iTunes获取的示例:http://share.mheroin.com/image/390y2G18123q。 “匹配[所有/任何]以下规则”可替代if/else