OOP第四次blog

news/2024/10/5 13:05:58/文章来源:https://www.cnblogs.com/BlogHhh/p/18275685

本次blog是本学期的最后一次blog,接下来分析最后一次小结内容的PTA作业。

本次作业分为以下部分:

(1)总结三次题目集的知识点、题量、难度等情况。

(2)设计与分析:重点对题目的提交源码进行分析。

(3)采坑心得:对源码的提交过程中出现的问题及心得进行总结。

(4)改进建议:对相应题目的编码改进给出自己的见解,做到可持续改进。

(5)总结:对本阶段二次题目集的综合性总结,学到了什么,哪些地方需要进一步学习及研究。

前言:本次blog的主要内容是第二次大作业的迭代三和迭代四的内容,比之前的内容更加复杂。

一.三次作业的内容:

1.第一次作业的模拟场景:

1)单个以及多个用电器与多个开关之间的关系。
新增内容:用电器有电阻,考虑并联电路并且包含多个串联起来的并联电路,风扇迭代落地扇,迭代落地窗帘,开关考虑互斥开关。
2)输入设备的信息(设备标识,引脚编号),输入连接信息(引脚号),输入控制设备调节信息(设备标识,引脚编号),输入串联电路信息(电路编号和连接信息),输入并联电路信息(电路编号,串联电路信信息)
输出信息:
按开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、互斥开关、受控窗帘的顺序依次输出所有设备的状态或参数。每个设备一行。同类设备按编号顺序从小到大输出。

2. 第二次作业的模拟场景:

1)单个以及多个用电器与多个开关之间的关系。
新增内容:
1.增加管脚电压的显示
在输出每个电器的状态信息后,再依次输出该电器每个管脚的电压。(格式详见输出信息部分)

2.电流限制
电器在工作时,过大的电流会引起电器过热,从而烧坏电路。本次迭代,每个元器件都有最大电流的设置,当实时电流超过最大电流时,在该电器输出信息的最后加入提示“exceeding current limit error”,与前面的信息之间用英文空格分隔。
本题各类电器的最大限定电流如下:
开关20、分档调速器18、连续调速器18、白炽灯9、日光灯5、吊扇12、落地扇14、互斥开关20、受控窗帘12、二极管8。

3.短路检测
如果电路出现无穷大的电流造成短路,所有元器件信息不输出,仅输出提示“short circuit error”

4.并联电路中包含并联
本次迭代考虑并联电路中包含并联电路的情况,即构成并联电路的串联电路可以包含别的
并联电路。

5.二极管
增加二极管元件,其电路特性为:正向导通,反向截止;其电器符号如图4所示,当电流从左至右流过时,二极管导通”conduction”,电阻为0;电流从右至左流动时,二极管截止”cutoff”,电阻无穷大,相当于开关打开。

2)输入设备的信息(设备标识,引脚编号),输入连接信息(引脚号),输入控制设备调节信息(设备标识,引脚编号),输入串联电路信息(电路编号和连接信息),输入并联电路信息(电路编号,串联电路信信息)
输出信息:
按开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、互斥开关、受控窗帘、二极管(见第6部分说明)的顺序依次输出所有设备的状态或参数。每个设备一行。同类设备按编号顺序从小到大输出。

2.三次作业的设计与分析:

1.第一次作业:

1)1)设备类(Device):保存和处理设备的信息

设备类:(用于封装设备信息)
属性:设备标识,电压
方法:计算电压(电压)

2)开关类(Switch):用于保存和处理开关的信息

开关类:(用于封装开关信息)
属性:状态
方法:计算电压(电压)

3)调节器类(Controller)

调节器类:(用于封装调节器类信息)
属性:档位,档位参数
方法:输出档位(档位),输出档位参数(档位参数)

4)分档调节器类(ContinueController)

加速调节器类:(用于封装加速调节器信息)
属性:档位
方法:加速(档位+),减速(档位-),计算电压(电压),输出

5)连续调节器(SpeedController)

连续调节器类:(用于封装连续调节器信息)
属性:档位参数
方法:计算档位参数(档位参数),计算电压(电压),输出

6)风扇类(Fan)

风扇类:(用于封装风扇信息)
属性:调节器
方法:计算电压(电压),计算风扇速度(电压),输出

7)灯类(Light)

灯类:(用于封装灯的信息)
属性:调节器,亮度
方法:计算电压(电压),计算亮度(电压)

8)白炽灯(DayLight)

白炽灯类:(用于封装白炽灯的信息)
属性:调节器,亮度
方法:计算电压(电压),计算亮度(电压),输出

9)日光灯(LightBulb)

日光灯类:(用于封装日光灯的信息)
属性:调节器,亮度
方法:计算电压(电压),计算亮度(电压),输出

10)电路方法(Load)

电路类:(用于封装电路的信息)
属性:电路编号,连接信息
方法:setter,getter

11)串联电路类(LoneLoad)

串联电路类:(用于封装串联电路的信息)
属性:电路编号,连接信息
方法:setter,getter

12)并联电路类(ConnetLoad)

并联电路类:(用于封装并联电路类)
属性:电路编号,串联电路信息
方法:sette,getter

13)电路设备类(DeviceLoad)

电路设备类:(用于封装描述所有电路设备的公共特征的信息)

14)受控设备类(DeviceS)

受控设备类:(用于封装受控设备的信息)

15)控制设备类(DeviceM)

控制设备类:(用于封装控制设备的信息)

16)受控窗帘类(Certain)

受控窗帘类:(用于封装受控窗帘的信息)

2.第二次作业:

1)1)设备类(Device):保存和处理设备的信息

设备类:(用于封装设备信息)
属性:设备标识,电压
方法:计算电压(电压)

2)开关类(Switch):用于保存和处理开关的信息

开关类:(用于封装开关信息)
属性:状态
方法:计算电压(电压)

3)调节器类(Controller)

调节器类:(用于封装调节器类信息)
属性:档位,档位参数
方法:输出档位(档位),输出档位参数(档位参数)

4)分档调节器类(ContinueController)

加速调节器类:(用于封装加速调节器信息)
属性:档位
方法:加速(档位+),减速(档位-),计算电压(电压),输出

5)连续调节器(SpeedController)

连续调节器类:(用于封装连续调节器信息)
属性:档位参数
方法:计算档位参数(档位参数),计算电压(电压),输出

6)风扇类(Fan)

风扇类:(用于封装风扇信息)
属性:调节器
方法:计算电压(电压),计算风扇速度(电压),输出

7)灯类(Light)

灯类:(用于封装灯的信息)
属性:调节器,亮度
方法:计算电压(电压),计算亮度(电压)

8)白炽灯(DayLight)

白炽灯类:(用于封装白炽灯的信息)
属性:调节器,亮度
方法:计算电压(电压),计算亮度(电压),输出

9)日光灯(LightBulb)

日光灯类:(用于封装日光灯的信息)
属性:调节器,亮度
方法:计算电压(电压),计算亮度(电压),输出

10)电路方法(Load)

电路类:(用于封装电路的信息)
属性:电路编号,连接信息
方法:setter,getter

11)串联电路类(LoneLoad)

串联电路类:(用于封装串联电路的信息)
属性:电路编号,连接信息
方法:setter,getter

12)并联电路类(ConnetLoad)

并联电路类:(用于封装并联电路类)
属性:电路编号,串联电路信息
方法:sette,getter

13)电路设备类(DeviceLoad)

电路设备类:(用于封装描述所有电路设备的公共特征的信息)

14)受控设备类(DeviceS)

受控设备类:(用于封装受控设备的信息)

15)控制设备类(DeviceM)

控制设备类:(用于封装控制设备的信息)

16)受控窗帘类(Certain)

受控窗帘类:(用于封装受控窗帘的信息)

17)限制类:(Limit)

限制类:(用于检查是否受限)

18)二极管类(Lobe)

二极管类:(用于封装二极管的信息)

本次作业在上一次的作业上面迭代了线路钟有并联电路中还包含另一个并联电路,以及多了管脚电压,电流限制,短路检测,二极管的相关内容。

三.踩坑心得

1.因为没有先写输入输出,而是先写类,导致要写方法时要在类里面写输入输出

2.正则表达式没有正确使用,导致输入时有问题

3.输出时应该在类设计时添加方法,这样会简化且条理清晰

四.改进建议

1)要先做输入输出,然后再补全类
2)有些特定方法一定要用对,要不然会出很大的问题
3)代码类设计要合理,这样可以省去一些重复和不必要的步骤

五.总结

经过了一个学期的PTA作业的学习,我感觉到了这门课真的很难,一点儿也能不像之前高中所学的那些东西一样,就算不知道方法在学了之后马上就能掌握了,想学好这门课程的内容要不断的积累,充实自己的知识库,这样才能在写相关代码时能够马上解决,要不然就算花很长的时间可能还是做了无用功,这样做的又累但是又最后的结果没有什么用。害,感觉自己的“天赋”还是不是很适合学这个,看看后续自己能不能顿悟一下,能够找到学习这种相关内容的诀窍。

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

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

相关文章

南昌航空大学第二次blog

本次blog是本学期的最后一次blog,接下来分析最后一次小结内容的PTA作业。 本次作业分为以下部分: (1)总结三次题目集的知识点、题量、难度等情况。 (2)设计与分析:重点对题目的提交源码进行分析。 (3)采坑心得:对源码的提交过程中出现的问题及心得进行总结。 (4)改…

(交换使逆序对数为1+并查集)CF1768D Lucky Permutation

题意:思路: 先从排好序的数组考虑:1,2,3,4,5,...n,如果交换相邻元素,必然使得逆序对数+1。 考虑先将乱序数组变成顺序数组,最后交换任意一对相邻元素即可。 将所有的i与\(p_{i}\)连边,最后形成若干个环,交换次数其实就是边数,也即点数-环数。并查集维护。 注意特殊情…

[C++ Primer] 开始

C++ Primer 第5版中英版电子版pdf开始 C++ Primer 第5版pdf中英版 夸克云盘 百度云盘 提取码:qrjn该系列记录了我在学习C++过程中经常会遗忘和混淆的相关操作语法,以备将来用到时方便查找。 加油吧!!!🙆

【MX-S1】梦熊周赛 提高组 1(同步赛)

【MX-S1】梦熊周赛 提高组 1(同步赛)\(T1\) luogu P10672 【MX-S1-T1】壁垒 \(100pts\)一个简单的结论:随着前缀长度的增长,出现的数字种类数每次只能增加 \(0\) 或 \(2\)。考虑构造时可以从这里下手。一种构造方案是这样的:优先让数字种类数增加 \(2\),即先将原先没有出…

vue学习笔记-2

1.模板语法 文本插值 <template><p>{{ msg }}</p><br/> <p>{{ num+1 }}</p><br/> <p>{{ ok?"yes":"no" }}</p> </template> <script> export default{data(){return{msg:"模板语…

Nginx 站点配置多目录管理

运维需求 在使用Nginx 对多个站点进行配置和运行维护时,如果将多个站点的配置都放在同一配置文件中,对于server 部分的调整,随着时间的推移,可能对应的配置变更是由不同的人员接手,不方便系统的部署和迁移。解决方案 为了解决这个问题,可以考虑使用include 块。用于指定加…

PNAS | 中国农大汪海团队实现转录调控序列的人工智能设计

近日,中国农业大学农学院汪海团队联合美国康奈尔大学、丹麦奥胡斯大学、北京大学现代农业研究院、坦桑尼亚农业科学院等单位在_PNAS在线发表了题为Modeling 0.6 million genes for the rational design of functional cis-regulatory variants and de novo design of cis-regu…

[C++ Primer] 关联容器

C++关联容器相关操作关联容器标准库提供了8个关联容器。类型map和multimap定义在头文件map中;set和multiset定义在头文件set中;无序容器则定义在头文件unordered_map和unordered_set中。pair标准库类型,定义在头文件utility中。关联容器额外的类型别名:关联容器insert操作:…

Kali 关闭自动锁屏功能

Kali 关闭自动锁屏功能 1、点击 [开始] -> [设置] -> [电源管理器]2、选择 [安全性],将 [自动锁定会话] 选为 [从不],将 [当系统休眠时锁定屏幕] 取消勾选,点击 [关闭]

键盘记录大师:用pynput轻松捕获每一个按键,包括组合键和功能键

哈喽,大家好,我是木头左!揭秘键盘输入的监控神器 - pynput库 在数字时代,键盘是与计算机交流的主要工具。无论是编写代码、撰写文档还是进行日常通讯,键盘的每一次敲击都承载着信息。而在某些场景下,可能需要记录这些信息,比如开发一个学习打字的软件、监控儿童的上网行…