c#实现科学计算器

c#实现科学计算器 —— 总体分析篇 引言   早在一年前,我就用VC++设计了一个能够计算表达式的科学计算器,但由于当时才大二,对于“编译原理”这种东西根本就没有概念,因此设计时遇到了有关错误文法分析的问题(当时只知道要在用户输入不正确的表达式格式时报错),不知道怎么做,因此就把这个项目搁置了下来,本学期正好学到编译原理,发现还是可以用一些理论化的东西来解决文法问题,于是决定重新启动这个项目,并把代码移植到C#中。 设计科学计算器的用意   在计算机里,我们用得最多的计算器恐怕就是Windows自带的那个计算器了。该计算器当然有不少值得学习的功能,如进制转换、三角函数计算、指数运算、幂运算等,但有一个令人遗憾的功能就是不能输入表达式进行计算(我们看到的永远只是一个中间结果),往往我们用起来的时候必须先把要计算的表达式写下来,然后一个一个的输入,如果一不小心输错了,就只能重新输入,这对于普通用户来说是个不小的考验。   另一方面,我现在已经大三下学期,想把学过的一些理论的东西融合在一起,能够有所突破。计算器尽管看起来是一个再简单不过的软件,但仔细想想,还是有很多文章可做的,就我个人的分析来看,该计算器将涉及到《数据结构》、《编译原理》、《软件工程》等多门学科的知识,对于我来说既是考验也是挑战。   从这两点来看,设计该科学计算器自然是值得的!(不知道大家有啥建议,大家可以发表一下评论) 功能分析   作为一个科学计算器,最重要的自然是能够计算东西,以下是我罗列的一些需要实现的基本功能: 1. 基本四则运算 2. 三角函数计算 3. 指幂运算 4. 表达式求值 5. log运算 6. 提供一些基本常数,如PI、e等 7. 进制转换 8. 变量存储     基本上以上海市中小学教材指定用计算器的功能为参照,当然可能以后还会考虑增加函数绘图、概率分析、化学方程式配平、线性方程求解等高级功能,暂时就不列入功能列表中了。 打算支持的运算符 根据以上功能,打算支持的运算符包括: +、-、*、/、%、!、cos、sin、tg、ctg、asin、acos、atg、actg、ln、log、lg、cbrt(立方根)、sbrt(平方根)、1/(倒数)、^(次方)、= 可能还会引入一些其他的运算符和操作符,暂时不写入需求中。 目前已划分的功能模块 1. 词法分析模块:负责分析输入的表达式的词法,存入特定的数据结构中 2. 文法分析模块:负责分析表达式的语法,如果存在任何不符合规定文法的格式,则报错,拒绝计算。 3. 计算模块:在假设输入表达式正确的前提下,进行计算,计算精度为double 大家如果有好的建议,还请多多发表评论,献计献策,先谢谢大家! =======================Updated on 2007.2.26========================科学计算器文章目录c#实现科学计算器 —— 总体分析篇http://www.cnblogs.com/tonyqus/archive/2005/04/14/137792.html c#实现科学计算器 —— 设计篇之词法分析模块设计 http://www.cnblogs.com/tonyqus/archive/2005/04/14/137811.html c#实现科学计算器 实现篇之词法分析器 http://www.cnblogs.com/tonyqus/archive/2005/04/19/140266.html c#实现科学计算器 实现篇之分词结果存储http://www.cnblogs.com/tonyqus/archive/2005/04/26/145881.html c#实现科学计算器 设计篇之优先级表设计 http://www.cnblogs.com/tonyqus/archive/2005/04/26/145918.html c#实现科学计算器 设计篇之优先级表的另一种实现方案 http://www.cnblogs.com/tonyqus/archive/2005/05/11/152823.html c#实现科学计算器 实现篇之常数表实现 http://www.cnblogs.com/tonyqus/archive/2005/05/16/156774.html c#实现科学计算器 实现篇之文法分析器 http://www.cnblogs.com/tonyqus/archive/2005/05/18/158312.html c#实现科学计算器 设计篇之第三个栈的作用 http://www.cnblogs.com/tonyqus/archive/2005/05/31/164373.html c#科学计算器测试版发布 http://www.cnblogs.com/tonyqus/archive/2005/05/31/165552.html 科学计算器 文法测试用例 http://www.cnblogs.com/tonyqus/archive/2005/12/26/304984.html 科学计算器c#正式版发布 http://www.cnblogs.com/tonyqus/archive/2006/01/04/310481.html Calculator.NET 2.3发布http://www.cnblogs.com/tonyqus/archive/2006/08/25/476268.html

你可能感兴趣的:(c#实现科学计算器)