BUAA_OO 第一单元总结

1.简单多项式求导

   第一次作业的难点,我认为是对输入的预处理,尤其是正则表达式的使用。这次作业的思路是:首先将表达式进行预处理,(由于题目中要求不会有空格产生的WF,所以可以放心大胆的消除空格)。

    消除空格之后进行表达式的解析,主要分为表达式的判断,以及对指数以及系数的存储,将指数以及系数分别放在两个容器里。

    解析之后是求导运算,我这里采用的方法是将容器里的数字进行操作,最终得到新的系数与指数。

    最容易卡bug的地方是表达式的输出,一不小心,有些地方优化的时候忘记考虑,就会在户厕中gg。

    下面是第一次作业中我使用的类图。

2.较为复杂的多项式求导

    第二次作业的难点,在于对WF的判断,对cos,sin的求导,以及乘积法则的使用。

    WF的判断:由于错误类型比较多,而且不可胜数,所以我在这里采用的方法是只判断正确的输入。用一个超级大正则判断输入是否是正确的输入。如果不是直接WF出局,程序结束;如果是的话,再进行预处理等一系列活动。

    对cos,sin 的求导,这里我采用的方法是 只分析其指数,将其系数看作是一个新的项进行操作,这样的好处就是减少了cos,sin 单独求导的难度,使得代码更加简洁以及清晰。

    乘积法则的使用,我这里的处理牺牲了优化确保正确度,所以只使用了最基础的优化。因为乘积法则,所以我采用的思路是:将每一项都存在一个String容器里,将每一项的导数也都存在一个String容器里,在求导时按需找出元素,进行相乘操作即可。

    下面是第二次作业的类图。

3.函数嵌套的求导

    这次的作业主要是正则表达式的匹配。我采用的方法是:参考往年代码,获得思路。(在很多时候,一个人的想法会很不成熟,借鉴往年的代码,从老师同学那里获得帮助,从中找到思路,但又不抄袭,我认为也是学习过程中不可避免的一个环节。)

    下面是这次作业的类图。

4.bug分析。

    添加了一个bug分析,帮助未来的学弟学妹们进行debug。

    第一次作业:bug 主要集中在print 类的特殊情况考虑上,最典型的数据是:-x**-1  ,x**-1 这两组数据上。

    第二次作业:bug 主要集中在符号处理上,最典型的代表就是符号重复处理(求导的时候处理了一次,输出的时候又处理一次),后来经过一下午的优化,才将自己发现的bug全部找出来。

   第三次作业:由于参考了往届的优秀代码,所以bug明显减少。

5.一些感受

    emmmmmmm,感觉压力还是有的,希望自己能改掉拖延的习惯,每次OO作业一下来就抓紧时间完成,不要拖到DDL,这是最重要的一点。

    还有就是感觉对“面向对象”思想,加深了一点点的认识。

猜你喜欢

转载自www.cnblogs.com/alink61/p/12536420.html
今日推荐