If statement if>then关系有哪些替代形式?

If statement if>then关系有哪些替代形式?,if-statement,relational-database,If Statement,Relational Database,伪代码中的传统if>then关系: if (x>y) { then print "x is greater than y." } 还有关系数据库 或者只是可视化的if>then表。一种可视化的表格表示法 还有树或层次结构if>then编程辅助工具 我正在寻找if>then构造的任何和所有备选方案和风格,但最好是实用的。由于大多数人在使用和记忆可视化构造表和原始代码方面比符号构造更好,因此我正在寻找理论上以图形方式构造if>then规则引擎的最直观的方法 注意:我不是想实现这个,我只是想知

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

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

还有关系数据库

或者只是可视化的if>then表。一种可视化的表格表示法

还有树或层次结构if>then编程辅助工具

我正在寻找if>then构造的任何和所有备选方案和风格,但最好是实用的。由于大多数人在使用和记忆可视化构造表和原始代码方面比符号构造更好,因此我正在寻找理论上以图形方式构造if>then规则引擎的最直观的方法


注意:我不是想实现这个,我只是想知道理论上可以做些什么。

我希望我已经正确地解释了这个问题

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

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


我会继续读下去。做大量的研究,如果你遇到一个反复出现的问题,看看是否有另一种方法可以让你减少if-thens的数量。大多数情况下,其他人遇到了相同的问题,并提出了解决方案。

你的问题有点宽泛,我们可以从逻辑门到数学函数漫无目的地讨论。我将重点关注这一点:

我正在寻找一种最直观的方法,从理论上以图形方式构建一个if>then规则引擎

首先,有两个警告:

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

这就是我的心,X∈ C和Y∈ I.在你的具体情况下,你能∈ C Y可以是一个条件吗?如果是这样,那么就有嵌套的ifs

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

if (x > 3) {
  if (y > 5) {
    # do something
  }
}
可以写为:

if (x > 3 and y > 5) {
  # do something
}
如果您只考虑代码,那么当您有许多嵌套条件时,后者可能会出现问题,但是当您使用图形化的嵌套(可能使用树状结构)时,可能会看起来杂乱无章,而链接通常看起来像一系列指令,我认为这样更好

如果你不考虑规则中的嵌套链接,那么从X->Y连接元素框、圆等是很简单的工作方式。其表示方式取决于您希望获得的图形化程度。有关一些示例,请参见下面的链接

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

维恩图:视觉上很吸引人,在3-4种以上的情况下没有用处。它们非常适合数据库表示。见: 流程图:功能强大,易于阅读,创建起来不太麻烦。可以用10+元素失控。见: 表:正如您所提到的,表是表示条件的一种不错的方式,只要您能够限制一组适用的规则。这是一个取自iTunes的示例:。以下规则中的匹配[全部/任何]可替代if/else。