关于三次求导做业的总结与感想

1、关于三次求导做业html

  前三次求导做业是一个由简至易的练手,难度上适中而又很好的切合理论课。给未接触学习过JAVA的同窗留有足够的时间创建面相对象的意识,又可以随着三次递进做业结合理论学习。编程

  三次做业由简单的一元多项式求导到添加三角函数,再到无限嵌套,既可以使用上次做业部分思想,又可以将继承和接口结合进去。函数

2、程序分析学习

(一)分析程序结构测试

  (1)第一次做业优化

    类图以下:编码

    

    复杂度以下:spa

    

    耦合度以下:调试

    

 

   可见,第一次做业个人程序仍是具备很严重的面相过程的问题,程序主要部分在main函数内,虽然参照学长的代码,使用了Pattern和Matcher,理清了思路,可是对于两个方法的使用却并很差,重复造轮子严重。htm

 

  (2)第二次做业

     类图以下:

     

    复杂度以下:

     

    耦合度以下:

     

   第二次做业的主函数仍然冗长,我发现本身的思路存在很大的问题——我仍然仿照第一次做业,使用大正则,将整个表达式直接匹配大正则,而对于表达式拆分为项的过程却写在了main函数内,这至关于类只是一个摆设,并无很好的使用一个类,而使用大正则匹配意味着使用Matcher方法仍然会重复造轮子,所以在看过别人的代码后,我开始在第三次做业中使用小正则分别匹配。

  (3)第三次做业

    类图以下:

    

    复杂度以下:

    

      耦合度以下:

     

  第三次做业是递归求导,大正则匹配再也不可行,我开始使用小正则递归拆分,在编程过程当中我开始发现,除了递归性,其余和第二次并不太大区别。通过前两次的经验,个人类已经将方法整合的比较合理, 小正则的使用,使得我也再也不重复造轮子,代码风格比较第一次有了很大改观。

  (二)BUG分析

  第一次做业由于比较简单,并无太大问题,只是因为在项符号为负时多输出了一个负号。

  第二次做业并无考虑输入为空的状况,我意识到程序调试的鲁棒性,而两个项之间可能存在三个加减号,我并无处理好,所以中测有一个点没有过。

  第三次做业又出现了第二次的问题,在第二次讨论课上听其余同窗讲事后,我了解到要先对项进行预处理,将前面的正负号处理掉,不然交给项本身统一处 理不可能处理全部状况。

  (三)互测策略

  (1)在写完程序后,我会先对本身的程序进行测试,选用正常的测试样例保证正常,选用鲁棒性强的样例保证覆盖面全,互测时我会将这些样例测试别人,比如常数项为-0000,考虑边界状况,参照指导书要求,列出约束点,进行测试。

  (2)当鲁棒测试样例没法发现更多BUG后,开始阅读他人代码,依照思路比较他人与本身的思路和考虑各类状况的差异,以此肯定他人或本身的问题。

  (四)重构说明

  第二次做业因为我没有考虑到一个项可表示为三元式,并无对一次做业重构,而第三次做业我艰难的实现了递归,仍是采用了将表达式拆分为项,再拆分为因子的策略,却并不知接口该怎样应用其中,个人代码结构并适合接口,后来在问过别的同窗后,我了解到须要在乘和加减两个类中采用接口。

3、总结

   (1)三次做业我逐渐将面向过程的思想扭转了过来,可以将编码与理论课结合起来

  (2)对于优化,我作的并很差,尤为第三次做业,嵌套层数过多时结果尤为冗杂

  (3)我在做业初期对整个程序结构的构思花的时间较少,每每有了思路就开工,却半途放弃方法

原文出处:https://www.cnblogs.com/wdd00/p/10610830.html

相关文章
相关标签/搜索