zoukankan      html  css  js  c++  java
  • 第一单元总结博客

    第一次作业

    有关设计

    1. 第一次作业相对简单,我只设计了两个类。Item类存放各种项的系数和指数;
    2. 识别各种概念我采用了自顶向下分析法,用一个ArrayList存放项;
    3. 在对输入的表达式进行解析以后,首先进行一次同类项合并,减少需要求导的项数,根据测试结果来看这样做的优化效果不错,只有负号开头的情况没有优化到。

    度量分析

    不知道为啥,第一次作业代码的复杂度和类图都无法显示,不过作业比较简单,又采用了自顶向下的分析,所有没有很复杂的方法。

    有关bug

    • 自己的

      由于心大脑大,感谢同学给我报bug。少考虑了一种情况,比如说:- - x;
      这种情况下,两个符号分别判断为项前的符号,第一个因子为-1的省略形式。

    • 别人的

      发现bug的思路还是分析各种组合情况,主要在各种省略;
      除了被自己少考虑的上种情况外,没有发现其他的问题。

    第二次作业

    有关设计

    1. 第二次作业在第一次作业的基础上对 进行了复杂化,增加了 因子 的概念,项表示为因子的乘积,因子有常数因子、幂函数和三角函数;
    2. 识别各种概念依然采用了自顶向下分析法;
    3. 对于每一种概念建立一个类,Expression类, Item类, Factor类,还有一个专门用来错误处理的类;
    4. Expression类里维护一个存放项的列表, Item类里维护一个存放因子的列表, Factor类里存放因子的种类和它的指数;
    5. 时间有限,做了几个简单的优化:比如说将“+-”替换为“-”,将因子“1”和项“0”省略等,不值一提。

    度量分析

    • UML类图

    • 复杂度分析

    1. 类的复杂度

    2. 方法的复杂度

    Expression类中trigonometric()方法是将两种三角函数分开分析的,增加了复杂度,其实可以一同判断,这一点待改进;
    digit()方法是因为有+1和-1省略的情况存在,当时没有进行预处理,这里的处理略有些复杂,其实可以先对表达式进行简化预处理,进而降低后续方法的复杂度。

    有关bug

    • 自己的

      处理 --1 这种情况时写法欠考虑,导致 +-sin(x), --x 这种形式被判断为错误输入,非常遗憾,不过bug修复时忘记了点“下一步”更让我难过;
      还有因为输出不完善导致最后结果显示错误的问题。

    • 别人的

      从各种组合情况,尤其是各种省略来分析;
      有不少关于省略的bug,比如 - -2, - + -1这些,大多问题出在符号个数和正负叠加的合并判断上。

    第三次作业

    有思路未实施,是一次无效作业,不做赘述。

    对比和心得体会

    • 从第一次作业到第三次作业,难度层层递进,有一点点想法。
    • 关于作业。可以做的预处理应当先做,可以非常有效的避免其后的代码过于复杂。像第一次作业先合并同类项还有优化的好处,第二三次作业可以利用正则表达式预判一些WRONG FORMAT的输入,而且可以除空格简化符号等等,让输入的表达式简单标准化,方便后续处理。
    • 要通读指导书,上面的建议尽可能的采纳,某些提示也应该注意,因为遇到过没过的点是数的范围不够的原因,而这个刚好在当时指导书上提到过,开始没当回事,后来老老实实改了的。
    • 还有要多思多想,写代码我觉得“瞻前顾后”挺好的,这是来自没有成功提交修复的血泪教训。
    • 还有遇到某个知识点的时候尽量看透彻看明白,就算这次不用,下次可能还需要被启发。
    • 必要的注释很有用,有助于检查代码,自己debug,写总结博客的时候尤其有裨益!
  • 相关阅读:
    IO流上机作业
    数据结构堆排序
    数据结构实训报告
    字符串的基本操作
    java窗口的简单切换
    判断一个串B位于串A的位置
    c语言实现数组转置,加减,乘法运算
    java异常处理
    弹奏乐器
    课程总结
  • 原文地址:https://www.cnblogs.com/mzny/p/12535734.html
Copyright © 2011-2022 走看看