第一次oo博客作业--表达式求导
(1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高,可扩展性不强,还学不到什么东西。因此在这里立一个flag,下次作业必好好构造。由于都是一个类,UML就不上丢人现眼了。
(2)第二次作业的bug点在于我的优化,我对我的表达式的优化方法是求导后在String类中将^1,1*,0等替换掉,0是好办的,但是^1,和1*有些麻烦,我一开始想用String自带的replaceall方法,但是发现这样会把类似于x^122改成x22,发现这一点后我便在求导的过程中将所有的1(就真的是1),改为1q,这样我再在后面把所有的1q替换掉就好了,但是我只把1q*和^1q替换掉了,像+1这样的数据就会输出+1q,这就是bug点所在,所以我在修复bug时把这一部分替换成+(-)1就完成了;第二个bug是我当时误以为制表符等于四个空格,于是没有对制表符进行处理导致出现制表符代码会崩溃,于是在一开始的判断时加入了制表符,合法的话就把他替换掉,成功修复了所有bug。第三次作业的bud点发生在求导的时候,由于表达式很长,我是先用+-号分开各个表达式,然后在每一个表达式里再用*号分开,但是这样有一个问题就是像x*+2求导应该是1,但是由于+号分开,导致求导是1甚至崩溃,所以在改进的时候我在+-号分开后去判断是不是*后面的+-或者^后面的加减,修复了这个bug;还有一个bug是我在求导时如果一个表达式是一堆const连乘,我输出的时候会多一个加号,于是我在求导部分特判了这种情况,修复了所有的bug。
(3)来说一下我互测hack别人时的策略吧。由于转专业的情况,第一次作业没有参加互测,所以在第二次互测时,我还真的认真看了别人的代码,先从她的正则开始看,然后就是求导部分对指数系数的求导是否正确,再去试一下数据,这也导致我在第二次的时候hack效率低下;到了第三次,我跟大佬们学习了对拍技术,直接上对拍器,但是不是盲目对拍,拍出的数据我先分析她的问题出在哪里,去除一些同质的bug,再将麻烦的数据简化,提交上去,使得我尽管在A组还是有四次hack入账。还是希望大家在对拍出bug后不要太激动,先看一看,同质的bughack一两次差不多了,你hack太多也没什么意义,人家一次更改就过了,而且还让被hack的人心烦,何必呢?
(4)三次作业我最多用了两个类,说实话还没有掌握面向对象的思想和方法,大多数代码还是在用面向过程(c语言打法)来写,自己也感觉这样会有些问题,于是在前两天学了继承接口等等概念,至于重构什么的我打算在第五次作业开始时好好构思,把面向对象的思想用好,写出像java的代码,真正的学到知识。
第一次oo博客作业--表达式求导的更多相关文章
- BUAA_OO第一单元总结性博客作业——表达式求导
一.程序设计思路 在我的三次作业中都采用了类的分层结构,采用逐项匹配,分层求导的思路. (一). 第一次作业中构建了Polynimial(多项式)类,在类的构造器中就完成了对非法空格的判断并对合法表达 ...
- 2019年北航OO第1单元(表达式求导)总结
2019年北航OO第1单元(表达式求导)总结 1 基于度量的程序结构分析 量化指标及分析 以下是三次作业的量化指标统计: 关于图中指标在这里简要介绍一下: ev(G):基本复杂度,用来衡量程序非结构化 ...
- 2020 OO 第一单元总结 表达式求导
title: BUAA-OO 第一单元总结 date: 2020-03-19 20:53:41 tags: OO categories: 学习 OO第一单元通过三次递进式的作业让我们实现表达式求导,在 ...
- 2019年北航OO第一单元(表达式求导任务)总结
2019面向对象课设第一单元总结 一.三次作业总结 1. 第一次作业 1.1 需求分析 第一次作业的需求是完成简单多项式导函数的求解,表达式中每一项均为简单的常数乘以幂函数形式,优化目标为最短输出.为 ...
- OO博客作业-《JML之卷》
OO第三单元小结 一.JML语言理论基础以及应用工具链情况梳理 一句话来说,JML就是用于对JAVA程序设计逻辑的预先约定的一种语言,以便正确严格高效地完成程序以及展开测试,这在不能容忍细微错误的工程 ...
- OO第一单元总结——表达式求导
第一次作业 (1) UML结构图 (2)结构分析 Polynomial 类是对输入的字符串进行预处理,其中包括判断格式是否合法,运算符简化,分割成项等方法. Polynomial处理后得到的每一个项的 ...
- 2019 OO第一单元总结(表达式求导)
一. 基于度量的程序结构分析 1. 第一次作业 这次作业是我上手的第一个java程序,使用了4个类来实现功能.多项式采用两个arraylist来存,系数和幂指数一一对应. private ArrayL ...
- OO第一单元作业——魔幻求导
简介 本单元作业分为三次 第一次作业:需要完成的任务为简单多项式导函数的求解. 第二次作业:需要完成的任务为包含简单幂函数和简单正余弦函数的导函数的求解. 第三次作业:需要完成的任务为包含简单幂函数和 ...
- 第二次oo博客作业--多线程电梯
这次的系列作业是写一个电梯调度,主要目的是让我们熟悉多线程. 第一次作业是一个傻瓜电梯的调度问题,要求也很简单,即每次接一个人就行了.我只用了两个线程,一个是输入线程,一个是电梯线程,输入线程负责从标 ...
随机推荐
- ubuntu中连接mssql数据库sqlserver
参考文章 https://blog.csdn.net/fangaoxin/article/details/5386149 (感谢作者) sudo apt-get install tdsodbc sud ...
- configEnvironment()源码探究
该方法目的是对上面刚创建的环境对象进行相关配置,包含两步:配置属性源和配置活跃profiles. 其中配置属性源如下: 1.首先获取属性源 2.然后将默认属性源添加到属性源中 3.然后将命令行属性源添 ...
- python列表生成式
在Python编程中,list列表应用的比较广泛,而列表生成式是一个非常强大但是使用很简单的功能. 比如要生成1到100的数组列表[1,2,3,4......,97,98,99,100],可以使用li ...
- JAVA相关技术
开发服务器环境: 1.Linux系统 CentOS 6.5\7 2.JDK1.8 3.tomcat 9 4.mysql 5.7 开发环境: 1.开发集成工具:idea 2.构建工具maven 仓库暂时 ...
- Android 开发 View的API 转载
转载地址:https://blog.csdn.net/lemonrabbit1987/article/details/47704679 View类代表用户界面组件的基本构建块.一个View占据屏幕上的 ...
- OOP AOP
OOP 一切皆对象,,,对象交互---功能,,,功能叠加---模块,,,模块叠加----系统 AOP 面向切面, 业务逻辑外,添加公共逻辑,增加日志功能,权限控制功能,缓存处理,异常处理,事务,性 ...
- Oracle参数Arraysize设置对于逻辑读的影响分析
说明: 当执行一条SQL查询的时候,为了获得满足的数据,查询在这个过程中完成解析,绑定,执行和提取数据等一系列步骤,这些步骤都是单独执行的,满足条件的数据行必须由数据库返回给应用:对于任何大小的结果集 ...
- Idea spring 配置文件报红 URI is not registered
把报错的加到如下忽略列表中
- javascript条件语句
//条件语句 if (false) { console.log("is true") } else { console.log("is false") } // ...
- loadrunner-参数化
参数化的目的: 1.数据库或应用程序对提交请求里的参数值进行唯一性校验 2.为了避免查询缓存导致的性能测试结果失真 (语法检查-语意检查-检查缓存(有直接从数据库给)没有就生成执行计划-按照执行计划去 ...