第二轮大作业比起第一轮大作业难度上升了不少,运用到的东西更新,更先进,所涉及的思维设计,逻辑框架也更难,还有其计算的设计也会很复杂很难。
第二轮大作业的第一次作业难度低,简单类型,因为其信息输入每一行固定的就是两个设备,都可以不用正则表达式光用split就能写出,设计思路也简单,两个引脚可以用到,设置一个输入和输出引脚即可。但是不足的点是我发现大作业中提供参考的输入和输出引脚没有实际用处,可以去掉不要的。有点误导我后面第二次大作业的设计,刚开始我还想着用引脚来计算设备的电压差,后面发现根本没有实际意义,设计了一堆发现没啥用,后面全部删掉又设计了新的思路。
第二轮第二次作业难度相比第一次就提升很多了,从一开始就要设计好,要不然中途要修修补补的,就会浪费很多时间和降低代码的可读性和效率,相当于一个倒金字塔,顶层设计好了,后面的就都好办了,我先是设计了所有设备类都继承一个总设备类,还设计了一个串联类和并联类,然后将并联类继承总设备类device,便于以后读取信息,将并联电路看作一个用电器。给每一条线路都赋予一个电阻属性,并且赋予一个开关属性,先遍历每一个线路,根据大作业的设计习惯来讲就是最后一个串联电路就是总电路,所以先找到line.length-1就是总干路,我给每一个类都设置了一个list数组。便于后续的输出和遍历及排序。后面的输出就是按照顺序依次输出排序好的list数组。
至于计算每个工作器的工作结果就是先算出总干路的电流,然后再遍历总干路上的各个工作器(也当作一个设备)用电流乘以电阻即得到每个工作器的电压。即可算出每个工作器的工作结果,当遍历到并联电路时,则先算出其总电压,然后再用总电压除以各个支路的属性总电阻得到各个支路的电流最后重复总干路的工作结果计算方法即可,还忘了一点,要先遍历每个串联电路的开关然后判断这个支路是否打开,如果支路开关结果为打开则赋予电阻为0,当然再计算的时候也要注意如果这个支路为打开支路则不考虑乘以这个支路的电阻, 要不然会导致后面都是零。
中途也出现过很多错误,比如在计算并联电路总电阻的时候是套的公式,(R1R2R3*......)/(R1+R2+R3+......),但是赋予了一个电阻为零就导致了计算结果是0,就导致了整个并联电路总电阻为0。好在后面及时发现错误并改正。
在做完这次大作业后我发现自己的设计思路还不够简单,代码开了超过1000行了,还犯了很多错误,例如函数名写错,还一直没有发现,调试了很久也没有发现,
我认为这次pta作业还好,对设计思维要求挺高,很有锻炼性。老师在上课也给我们提供了指导和分析,也邀请了pta第一学生给我们进行了讲解,给我们提供了方向。大家只要认真听了就能拿到70分最起码。就我自己而言,我太懒了我只得了75分我就没有继续了,一个是我懒还有一个是平时学习没用工,也很难找到错误。大家写不出来得时候可以去多请教一下会得同学,真的会有一种豁然开朗得感觉,如果只一个人闷头写,很有可能就是浪费一堆时间,又没有写出来,又没有收获。
总得来说,这次大作业得收获还是很大得,也是很有必要很值得的。