oo第一单元作业总结

 

oo第一单元结束,本单元作业主要是针对于表达式的求导,三次作业逐步层层深入。

第一次作业

 第一次作业由于不够熟悉,主要采用了面向过程的编程方式,还是按照表达式匹配是否合法、表达式拆分、拆分项计算的流程来计算。由生成的类图也可以看到,仍然为面向过程的思路。甚至可以说是直接将处理过后的表达式在不同的“函数”之间传递,面向对象的思想基本上没有,也没有任何涉及。在互测阶段,看到其中一位同学对于表达式的处理比较精简到位,在第二次作业中也加以应用。

 

 

被发现的bug:第一次作业被发现的bug主要是爆栈的问题,由于一开始使用大正则表达式进行匹配,导致表达式过长时,匹配会发生爆栈的情况。之后参看讨论区,看到是由于正则表达式回溯机制所导致的问题,也进行了两种修改方式,一种是分项进行判读,二是改为独占模式。

发现别人的bug:bug的问题,主要是分为格式检查,求导计算,最终输出的三个部分,而前两次互测的问题基本上集中在对于格式判断的检查上。bug发现基本上和第二次的相同,主要是对于带符号指数的错误格式的判断的问题,相同的问题,甚至在第二次互测中也有类似的bug。

第二次作业

由于第一次作业主要是面向过程的方法来写的,导致第二次作业加入sin(x),cos(x)以后必须要重构,表达式的处理主要是在Term类中解决:将表达式进行拆分;对拆分的每一项进行合并,得到系数和三个指数;对于合并之后的项进行求导。

 

 

被发现的bug:没有被发现过多的bug,但是主要问题集中在对于输出结果的化简上,由于只进行了合并同类项等操作,没有进行sin^2+cos^2=1类似表达式的化简,导致性能分数较低。

第三次作业

第三次作业采用递归方法进行表达式的判断和求导,并没有建立出来其他同学用到的表达式树,或者说是可能有所应用,但是并没有真正深入地理解。

 

 

被发现的bug:第三次作业被发现的bug主要是,其实这是一个比较严重的bug,只要是不在括号内的指数和常数因子所带有的+-号,都会导致异常。因为此次作业较难,自己在写程序的过程中思考并不是很清晰,而且也没有进行合理大量的测试,导致了此次比较严重的bug。

发现他人的bug:主要是一些感觉比较小众的问题,而且没有根据代码具体分析,没有特别具有代表性的问题。

反思

互测阶段:在三次互测过程中,前两次主要是自己还是构造测试数据,然后手动对于其他同学的代码进行测试,但是效率非常低,并且效果也不好,也没有应用自动化的方法。在第三次作业中,我在windows系统中编写了一个简单的.bat脚本文件,直接对其他同学的代码进行编译,将测试结果集中到一个文件,并且用matlab对于表达式进行化简,使得测试的效率提高,这只是一个对于多个代码进行测试节省时间的方法,但其实没有结合具体的代码进行运算。当然其实也并没有学会使用大佬们使用的对拍器,在之后的学习过程中也要继续学习应用。

作业:

在写作业的过程中,我觉得checkstyle的过程很大的帮助我提高了写代码的规范,从第一次作业疯狂修改style,到第三次的直接写也可以写出格式比较规范的代码,感觉这部分有了很大的进步。

其实在第一单元的作业中,我并没有很好地应用面向对象的思想进行解决问题,大部分感觉还是应用了以前的面向过程的方法,感觉仍需要有很大的提高,对于层次化结构理解也不是很到位。在本单元完成之后,参看优秀同学的代码,根据老师助教的思路讲解和同学们的优秀实例,重新对作业进行合理的架构,实现层次化分析和理解,建立面向对象的思想,以更好地完成之后的作业。

转载于:https://www.cnblogs.com/cxy1999/p/10609753.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值