大作业7-8总结

news/2024/7/1 8:20:16/文章来源:https://www.cnblogs.com/Xgyy176184/p/18275789

前言
这两次大作业使用到的新知识点并不是很多,考查的是各类知识点的综合应用,题量方面大概考虑到这两次大作业的难度和临近考试的学习压力,两次大作业都只有一道大题,由于是所有知识点的总结,考察的知识点很广,再加上迭代的次数增加,这两次大作业的难度比之前的几次都要提升了不知一个档次。第七次大作业中的单刀双置开关增加了对于单刀双置开关所在的串联线路的信息获取与处理储存的需求,同时增加对于单刀双置开关切换状态的处理的需求,再加上对于多并联以及串联中含串联的情况考虑,使得第七次大作业需要考虑的东西增加了非常多,同时也使得代码必定会比之前两次迭代复杂很多。而第八次大作业新增的二极管以及对于所有用电元件引脚两端的电压都列举出来,使得之前三次迭代一直在使用的分压计算法以及判断电路是否短路的方法都全部被推倒,被迫通过考虑电流这一物理量来计算各引脚上的电压以及用电器的输出量,所以第八次大作业基本就宣判让我重写了,导致此次大作业的难度上市了一大步。

设计与分析

从这就可以看出我第七次大作业完成的非常困难了,光从图就能看出代码非常复杂,而将它完成的过程就更复杂了。不过我不得不承认,这样的类设计不但不是最好的反而是非常差的,起码在我所了解过的同学的类设计中,我这个算比较复杂的,其主要原因还是上一次大作业设计类时的思路就是这样,对于上一次大作业这样的类设计与数据计算思路虽然实现起来不会很简单,但不至于难的很离谱,而这次迭代在在整体框架上并没有改动很多,所以就直接继承上一次大作业的设计思路来设计了,但很显然,同样的设计思路在不同的需求数量下的复杂程度完全不是一个等级的。

这是上一次大作业的设计,可以看到,我上次大作业的设计思路对编码就不是很友好,并且我没有建立控件与用电器作为父类,所以让类的关系光看起来都非常杂乱无章,我完成上次大作业所用的大部分时间就基本都在梳理和修改不同控件与用电器的关系与各自的调用方法上了。而这次大作业更加复杂的类的关系与各种相互调用就让这个梳理过程更加漫长与痛苦了。相较于上一次大作业,这次大作业在类设计上的改动主要为新增的单刀双置开关类,这个类主要是用来储存处理与之相关的两条串联支路的断开与连接状态。可能这么说会显得这个功能很容易实现,但实际情况是这个类如何与line类相联系以及两个不同引脚的转换还要牵动电阻的转变这几点让我麻烦了很久。
难以启齿的是,第八次大作业我并没有完成,正如前言中所述,我完全从零开始改编了我的思路,从考虑电流的方面重写了所有的代码,但很可惜我并没有做到完全用新的方法解决最后一次迭代这个难度的编码,不过主体思路还是有的。我的想法是在处理串联支线时将读取到vcc以及gnd的那条主线路的总电阻求出,再以此求出干路的电流,而并联支路的的电流则用干路的电流依据支路电阻的反比来求,而电路元件的前引脚电压与前一个用电器的后引脚电压相同,后引脚电压用前引脚电压与通过电流与电阻乘积求得的元件电势差相减得到。但是在实际实现的过程中,短路的情况,单刀双置开关的情况以及各种控件对于电路状况的影响使得我一直难以在短时间内实现这个想法。

踩坑心得
在第七次大作业中,因为没认真看题目吃了一个很大的亏,因为习惯性地根据测试样例来判断输出条件,导致在单刀双置开关接引脚三时,显示单刀双置开关的状态也一直是闭合,就单这一点就让我浪费了很多时间,甚至发现这个错误都不是我重新读题发现的,而是同学提醒的。
然后很重要的一点就是方法的考虑了,前三次迭代一直使用的是分压法求用电器的电势差,而第四次迭代新增的要求几乎直接ban了这个方法,因为之前没考虑到这种情况,而选择了分压法这个明显简单很多的方法,所以第四次迭代完全没法顺接前三次的方法。
其次是未考虑到并联电路全断的情况,导致即使并联部分是断路,干路部分还是有电压,用电器也能正常输出,找到这个错误还是我不信邪用笔画出电路自己计算与程序输出进行对比时偶然发现的,如果不是运气好可能我还一直不会考虑到这个情况。
还犯过的一个比较大的错误是带有单刀双置开关的并联线路的电阻计算错误,因为单刀双置开关的电阻我是作为单刀双置开关自己的属性储存的,导致在计算并联支路的总电阻时没有加上单刀双置开关的那部分电阻,进一步导致了用分压计算各用电器的电势差时全部出现了错误,不过这个错误在我发现多组测试数据都对不上正确输出时就发现并改正了,所以并没有造成太大的困扰。

改进建议
对于这两次大作业的代码方面的改进建议我认为主要有以下几点:

  1. 对于同一个数据尽量只进行一次储存(只储存在一个类中),防止出现多处储存的数据在更改时没有同步进行更改,导致之后的计算出现错误。
  2. 尽可能降低类与类之间的耦合度,特别是两个类之间同时存在多次调用对方的情况,降低可能因此出现的逻辑混乱进而导致出现错误的可能性。同时还需要降低类之间关联关系的出现。
  3. 对于重复出现的方法可以考虑写一个复用性强的总方法来实现,通过调用该总方法减少代码量,降低代码的重复率。
  4. 对代码进行分块化处理,将不同功能的模块区分开来,单独执行相同或相似的功能,以减少排查错误的难度以及增强代码的可修改性,同时在不同模块前使用注释标注好各模块的功能,以方便更容易地找到需要排查或修改的代码块。

总结
这两次大作业说实话对我有一定的打击,毕竟这两次大作业确实完成的非常差,也让我再次意识到了自己的几点不足:

  1. 读题还是不够耐心,且过于依靠测试样例,在完成大作业时总是急于写代码,导致经常看漏或者忽略很多关键的信息,这一点也在这两次大作业中体现的非常明显。以及在这么多次大作业中可以明显感受到自己过于依赖测试样例,以至于经常出现测试样例全部通过但是分数却非常低并且要花很长时间才能找到一个错误的情况。
  2. 考虑问题不够全面,每一次迭代时都只考虑了此次迭代的情况,没有为之后的迭代做好铺垫,导致每一次新的迭代难度都会呈指数级上升,甚至会像这次一样连从上一次迭代进行修改的可能性都没有。
  3. 代码的可读性不高,对于变量的命名没有规律和标准,经常在使用时混淆不同的变量,同时代码重复性太高,导致排查修改代码时经常需要从极度相似的代码中寻找需要寻找的代码,并且对于代码的标注过于随意和稀少,经常连标注都看不懂或者搞错。
  4. 代码过于杂乱,杂糅,经常许多不相关的代码混杂在一起,即使进行标注也很难理清楚某块代码具体有多少,有哪些作用,在修改时也经常修改到一些不改动的代码,导致改错反而变成了加错。
    在完成了这么多次大作业后,我也清晰感受到了自己不断成长的过程,也证明了不断练习确实有很大的作用,也意识到了自己的不足,而在今后的学习中,我也会结合自身的不足进行针对性的强化学习,希望自己能在今后的学习中更进一步!

建议及意见
对于本学期该门课程的学习,整体来说还是很满意且很有收获的,但在一些方面我还是有一些建议:首先是课堂上对于知识点的讲解我还是更习惯用具体的代码示例进行演示讲解,并及时给出相应的练习,在刚接受完知识点能尽快的自己使用,深刻地去了解。其次是对于大作业,可以多向后面几次大作业那样在发布后几天让完成得比较顺利,比较快,比较好的同学分享他的思路以及他让为比较关键或者易错的点,让我们拥有更多想法及可虑方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/733841.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你的第一个SpringMVC程序

1.创建Maven模块 1.1 新建一个父模块1.2修改一下JDK版本这里选择JDK211.3 父模块中建立一个子模块,接下来的操作将在子模块中进行2.添加web支持 2.1设置本地Maven仓库(非必须)2.2 在springmvc-001的pom.xml文件中修改打包方式为war同时添加web所需要的依赖,由于Servlet依赖…

第三次OOP作业总结

第三次OOP作业总结 前言 此次作业为家居强电电路模拟程序的再次迭代,主要增加了两个特殊用电器,并且考察学生前几次的程序架构的完善性。新增的电压与电流的要求迫使程序更加智能。设计与分析 题一:家居强电电路模拟程序-3题解:在器具方面,控制设备增加了互斥开关,受控设…

codis架构学习

转自:https://jackeyzhe.github.io/2018/11/14/玩转Redis集群之Codis/ 1.介绍 codis是一种redis 分布式集群解决方案,codis是基于多个redis实例做了一层路由层来进行数据路由,每个redis实例承担一定的数据分片。Codis FE:集群管理界面。多个集群实例共享可以共享同一个前端…

PTA作业7~8总结

目录1.前言:2.设计与分析:(1)第七次大作业(2)第八次大作业3.采坑心得:4.改进建议:5.总结: ---------------------------------------------------------------------------------------------------------------------------------- PTA作业总结1.前言:这次的作业相比于前几次…

02-单链表的操作

单链表的创建:头插法 #include <stdio.h> #include <malloc.h> #include <stdbool.h>typedef int ElemType; /*定义一个单链表*/ typedef struct LNode{ElemType data;/*下一个元素的地址指针*/struct LNode *next; } LNode,*LinkList;/***单链表的创建* @r…

Java7-8次大作业题目集总结性Blog

Java4~6次大作业题目集的总结性Blog前言这两次大作业无疑就是更好学会面向对象编程了,并且是新添加的信息能够合理处理然后使用。 题量不大,只是在之前的代码上运用开闭原则修改代码,但我还是不能能很好掌握开闭原则。 难度有点大了,第八次大作业在之前的基础上添加了并联…

Linux系统基本介绍

一、Linux系统基本介绍 【1】、Linux操作系统特点多任务的操作系统多任务操作系统严格区分大小写Linux一切皆文件所有文件的起点都是“/”根目录对于Linux操作系统来说文件的后缀名没有任何实际意义,他不像是Windows操作系统中的后缀名代表了本文件是什么类型的文件。Linux中文…

STM32延时函数

STM32延时函数(查询定时器实现) 之前在STM32中使用延时函数的时候,都是直接使用,并不了解其中的原理。经过查阅资料,这里记录一下大致原理。 首先直接贴出来延时函数delay.c,通过查询的SysTick Timer的STK_CTRL寄存器的计数标志位COUNTFLAG方式实现,其中SysTick是一个结构…

OOP最后两次作业总结

OPP最后两次作业总结 前言 两次题目集其实都是在前面的基础上进行迭代,第一次作业说实话我没花什么时间,毕竟我从写第一次PTA就是给电器使用两个接点,我从拿到题目到达到及格分只用了半天时间,然后最后又花了点时间测试几个样例,拿到了82分。然后最后一次作业嘛,我几乎是…

游戏常用运行库 合集 | Game Runtime Libraries Package(2.1.24.0618)

软件简介: 游戏常用运行库 合集 整合了许多游戏会用到的运行库,支持 Windows XP – Windows 11 系统,并且支持自动检测系统勾选推荐的运行库,方便快捷。 本版特点: By:mefcl整合常见最新游戏所需运行库根据系统自动勾选推荐的版本纯净安装包无病毒和弹窗行为支持静默安装…

背包DP——混合背包

顾名思义,混合背包就是将前面三种的背包问题(01,完全,多重)混合起来,有的只能取一次,有的能取无限次,有的只能取 k 次。 正解特解 部分情况下,如小数据,可以转换成多重背包(把完全情况的数量换成足够大,如1e7,就把完全相对变成了多重) 例题 https://www.luogu.co…

cent os配置docker(解决2024.6月docker镜像拉取问题)

docker拉取镜像目前已经失效,多方查找目前试了试下面这个还可以用 首先执行以下命令安装dockeruname -r yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum …

Field stock doesnt have a default value

当你遇到 "Field stock doesnt have a default value"​ 这个错误时,这意味着你正在尝试插入一条新记录到数据库中,但是涉及的 stock 字段没有提供一个值,同时该字段在数据库表定义中也没有设置默认值(default value),并且数据库配置为严格模式,不允许NULL值或…

南昌航空大学软件学院23201823第三次blog

一、前言 这是最后一次blog了,是一些关于题目集7~8次的总结以及这一个学期对于PTA题目集的总结了。最后这两次的题目难度其实我并不是非常了解,大抵是因为我已经来不及挽救了,但是我还是想说其实这几次题目的难度感觉并没有想象中的触不可及,而是我自己没有花足够的心思去了…

中国城市降雨量历史记录查询 All In One

中国城市降雨量历史记录查询 All In One 降雨量 历史记录中国城市降雨量历史记录查询 All In One降雨量 历史记录https://www.ceicdata.com.cn/zh-hans/china/precipitation 中国 降水量:河南:郑州 1990 - 2022 | 月 | 毫米 | 气象局 降水量:河南:郑州在12-01-2022达1.500毫米,…

oracle安装调用图形化失败

报错现象: [grid@19c01 grid]$ ./gridSetup.sh ERROR: Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable.No X11 DISPLAY variable was set, but this program performed an operatio…

Kubernetes-高可用k8s集群部署(多Master节点二进制方式)

一、安装Docker 配置docker的yum源地址 yum -y install wget wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum provides docker-ce 安装指定的docker版本 yum install -y docker-ce-20.10.7 docker-ce-cli-20…

23201813-第三次blog作业

前言: 这学期已经接近了尾声,java和面向对象的学习也已经接近结束,在这门课程的最后时间里,剩余的两次pta我都没有完成,一部分原因是后面的题目集感觉好难,然后要经过好多迭代,还有期末的考试学科很多,有大部分的时间用来复习,所以对pta就基本上放弃了,所以最后两个题…

一个HTML页面demo

代码:<!--* @Description: 一个博客页面布局,加上一些CSS和JS样式* @Author: zhangyh* @Date: 2024-06-29 15:25:16* @LastEditTime: 2024-06-29 23:06:12* @LastEditors: zhangyh* Copyright (c) 2024 by zhangyinghui181217@163.com, All Rights Reserved. --><!…

WPF网格类型像素着色器

由于WPF只能写像素着色器,没法写顶点着色器,所以只能在这上面做文章了 刚好有个纹理坐标TEXCOORD输入可用,而且值的范围是已知的0-1,左上角是原点,这就好办了 例子 索引 二分网格使用ceil 0-1移动定义域到-0.5 - 0.5,然后向上取整变成 0 / 1float4 main(float2 uv : TEXC…