Presentation is loading. Please wait.

Presentation is loading. Please wait.

表达式树构建实例与扩展 Stardust D.L. 2017/11/6.

Similar presentations


Presentation on theme: "表达式树构建实例与扩展 Stardust D.L. 2017/11/6."— Presentation transcript:

1 表达式树构建实例与扩展 Stardust D.L. 2017/11/6

2 代码实现(C#)-树结构

3 代码实现(C#)-核心算法 见MathExpr.cs

4 表达式树可视化 如果我们让计算机把表达式树画出来是不是好理解了呢? Let’s go!

5 扩展1-表达式树的形状 你发现了什么?

6 扩展2-基于表达式树的运算 有了表达式树,计算表达式的值就非常容易 每个节点先递归进入子节点,计算子节点的结果 计算完成后,再计算当前节点
递归完成后,根节点的结果就是答案

7 扩展3-核心算法与操作项的关系 我们把表达式中的每个数值,每个运算符称作操作项。 核心算法与运算符具体是什么有关吗?
核心算法关心运算符的什么性质? 核心算法与具体数值有关吗? 核心算法对数值项的要求是什么?

8 抽象! 当我们发现核心算法并不关系具体操作项时 我们便可以将操作项抽象 只需保证核心算法要求的特点不被破坏即可!

9 扩展4-抽象化 我们重新设计算法(此处涉及少量面向对象思想(封装))-伪码
Def build_exprtree(expr, symbols, variables): Divide the expr into items Deal each item 这样有什么好处?

10 Code Version 2 (Simple OOP Design Mode)

11 数学表达式的运算符配置

12 扩展5-解析逻辑表达式 我们现在拥有了这样一个利器,为什么只用它来计算数学表达式呢? 只要我们稍稍改一下运算符的配置……
前段时间折磨人的逻辑表达式难道不是很容易搞定吗?

13 扩展6-逻辑表达式的真值表 别忘了我们还能用变量代替具体数值 只要我们遍历所有变量取值,不就……

14 总结 数学表达式解析->抽象->逻辑表达式等表达式解析 抱歉时间有点长,希望能让大家有所启发 谢谢大家!


Download ppt "表达式树构建实例与扩展 Stardust D.L. 2017/11/6."

Similar presentations


Ads by Google