关于第四到六次PTA作业总结

news/2025/1/20 1:56:30/文章来源:https://www.cnblogs.com/Wei-jun1/p/18237800

一.第四到六次PTA作业的分析

1.第四次PTA作业的分析

(1). 理解题目的需求
在编程之前,准确理解题目需求至关重要。本题中,输入格式和输出格式的细节非常多,包括各种异常情况的处理,这些都需要仔细阅读题目描述,确保理解了每一个细节。在实际操作中,我采取了以下措施:
1.多次阅读题目描述,确保没有遗漏任何关键信息。
2.对于复杂的格式,通过画图或列表的方式整理信息,帮助理解。
通过这两个措施,我能够在写代码的过程中尽量减少自己的一些错误,并且不会犯一些简单的低级错误。

(2).选择合适的数据结构方式
选择合适的数据结构可以大大简化编程过程。在本题中,我使用了以下数据结构:

1.HashMap:用于存储题目信息,题号作为键,题目对象作为值,这样可以快速检索题目信息。
2.ArrayList:用于存储试卷信息和学生信息,便于进行有序操作。
在本次PTA作业中我没有过多的去使用数组来进行数据存储,我开始渐渐熟悉使用Arraylist来对数据进行存储,这样可以提高代码的简便性。
通过合理选择数据结构,我能够更高效地管理数据,减少查找和插入的时间复杂度。
但我还应该去练习使用Map函数来存储数据,这样可以更加的简洁和方便。

(3). 异常情况的处理
异常情况的处理是编程中常见的问题。在本题中,我遇到了以下异常情况:

1.题目编号缺失或重复。
2.试卷信息中引用了不存在的题目编号。
3.学生答案中包含了多余的答案或缺失的答案。
4.输入格式错误。
对于这些异常情况,我采取了以下措施:

1.在解析输入信息时,增加校验逻辑,确保信息的正确性。
2.对于删除题目信息,更新题目集合,并在判分时检查题目是否有效。
3.对于格式错误,输出具体的错误信息,方便调试。
只有在一次次的错误中,才能学会如何更好的去书写代码,才能更好的减少自己的错误的发生。

(4). 编程习惯和代码规范
良好的编程习惯和代码规范对于维护和扩展程序至关重要。在本题中,我遵循以下原则:

1.使用有意义的变量名和函数名,提高代码的可读性。
2.将功能相似的代码块封装为函数,提高代码的复用性。
3.在关键步骤添加注释,解释代码的逻辑。
只有不断地提高自己的编程思维才能够更好的锻炼自己的编程能力,让自己的代码给别人也能看懂。
通过这两个措施,我能够在写代码的过程中尽量减少自己的一些错误,并且不会犯一些简单的低级错误。

以下是我本次PTA作业的一个类图

2.第五次PTA作业的分析

(1). 需求理解的准确性
在编程之前,准确理解题目需求至关重要。本题中,输入格式和输出格式的细节非常多,包括各种异常情况的处理,这些都需要仔细阅读题目描述,确保理解了每一个细节。在实际操作中,我采取了以下措施:

1.多次阅读题目描述,确保没有遗漏任何关键信息。
2.对于复杂的格式,通过画图或列表的方式整理信息,帮助理解。

(2). 编程思维的锻炼
本题要求设计一个电路模拟系统,涉及到多个设备和复杂的逻辑关系。在编写代码的过程中,我深刻体会到了编程思维的重要性。以下是几个关键点:

1.模块化设计:将整个系统分解为多个模块,每个模块负责处理特定的功能,如设备解析、连接信息处理、设备状态更新等。这种设计方法有助于提高代码的可读性和可维护性。
2.数据结构的选择:合理选择数据结构可以大大简化编程过程。例如,使用HashMap来存储设备信息,可以快速检索设备状态;使用ArrayList来存储连接信息,便于进行有序操作。
并且注意一定要减少数组在代码中的使用。
3.算法逻辑的清晰:在设计算法时,我注重逻辑的清晰和简洁。通过逐步分析问题,将大问题分解为小问题,然后逐一解决,这种方法有助于避免逻辑混乱和错误。

(3). 异常情况的处理
异常情况的处理是编程中常见的问题。在本题中,我遇到了以下异常情况:

1.设备编号缺失或重复。
2.连接信息中引用了不存在的设备编号。
3.控制设备调节信息格式错误。
4.输入电压或电压差超过220V。
对于这些异常情况,我采取了以下措施:

1.在解析输入信息时,增加校验逻辑,确保信息的正确性。
2.对于电压或电压差超过220V的情况,输出错误信息,并终止程序运行。
在这些措施的帮助下,我能够很好的解决自身存在的一些问题。

(4). 编程习惯和代码规范
良好的编程习惯和代码规范对于维护和扩展程序至关重要。在本题中,我遵循以下原则:

1.使用有意义的变量名和函数名,提高代码的可读性。
2.将功能相似的代码块封装为函数,提高代码的复用性。
3.在关键步骤添加注释,解释代码的逻辑。

(5).面对难题的策略
本题涉及到的电路模拟系统较为复杂,我采取以下策略来应对:

1.逐步迭代:首先实现基本的电路模拟功能,然后逐步添加新的功能和设备。这种迭代方法有助于逐步完善系统,避免一开始就陷入复杂的实现细节。

2.代码复用:在实现不同设备的功能时,我尽量复用已有的代码,减少重复工作。这不仅可以提高开发效率,还可以保证代码的一致性。

对于难题要学会使用拆解的方法,将难题化繁为简,从而达到成功的目的

以下是我第五次PTA作业的类图

3.第六次PTA作业的分析
(1). 系统设计的复杂性
在这个题目中,我需要设计一个模拟电路系统,这不仅仅是编写代码,更是一次对电子电路知识的运用。我需要理解各种电路元件的工作原理,如开关、分档调速器、连续调速器等,并将这些元件的行为转化为代码逻辑。这个过程让我认识到,即使是简单的电路,其背后的设计和实现也是复杂且需要深思熟虑的。

(2).需求理解的准确性
在编程之前,准确理解题目需求至关重要。本题中,输入格式和输出格式的细节非常多,包括各种异常情况的处理,这些都需要仔细阅读题目描述,确保理解了每一个细节。在实际操作中,我采取了以下措施:

1.多次阅读题目描述,确保没有遗漏任何关键信息。
2.对于复杂的格式,通过画图或列表的方式整理信息,帮助理解。

(3). 编程思维的转变
在实现电路模拟的过程中,我逐渐从面向对象的编程思维转变为面向过程的编程思维。我需要关注电路的连接顺序,以及各个设备之间的相互作用。这种转变让我更加注重程序的整体结构和流程,而不仅仅是单个类的实现。

(4).异常情况的处理
在设计和实现过程中,我遇到了一些异常错误,以下是我对这些错误的总结:

1.输入格式错误:由于输入格式不规范,导致程序无法正确解析输入信息。为了避免这种情况,我编写了输入验证函数,确保输入格式符合要求。

2.设备连接错误:由于设备连接信息错误,导致电路无法正常工作。为了避免这种情况,我设计了连接检查函数,确保设备连接正确。

3.设备状态错误:由于设备状态设置错误,导致电路无法正常工作。为了避免这种情况,我设计了状态检查函数,确保设备状态正确。

4.计算错误:由于计算过程中出现错误,导致电路模拟结果不准确。为了避免这种情况,我使用了断言和日志记录,确保计算过程正确。

(5). 编程习惯和代码规范
良好的编程习惯和代码规范对于维护和扩展程序至关重要。在本题中,我遵循以下原则:

1.使用有意义的变量名和函数名,提高代码的可读性。
2.将功能相似的代码块封装为函数,提高代码的复用性。
3.在关键步骤添加注释,解释代码的逻辑。

以下是我第六次PTA作业的类图

二、踩坑心得

第四次pta作业:
选择题答案与顺序无关,比如答案ABCD输入DCBA也是对的;
选择题不止有ABCD这种选择题,
(eg:#Z:2 #Q:宋代书法有苏黄米蔡四家,分别是: #A:苏轼 黄庭坚 米芾 蔡襄)
像这种也算是选择题。

第五次pta作业:
发现没有电阻;
分档调节分别是0,1,2,3档,而不是,2,3,4档;

第六次pta作业:
这次有了电阻,就可以设计串联并联电路了,就把上次的Electric类细分成串联和并联电路;

三.自己学到了什么

在完成上述一次题目判断和两次次智能家居强电电路模拟系统的作业过程中,我收获了许多宝贵的知识和经验,以下是我对这些学习过程的一些详细总结和领悟。

1. 对物联网技术的理解加深
物联网技术是将物理世界与数字世界连接起来的关键技术,通过这次作业,我对物联网技术有了更深入的理解。我了解到,在智能家居系统中,各种设备如开关、调速器、灯和风扇等都需要通过网络进行互联互通,而物联网技术正是实现这一目标的基础。我学会了如何将物理设备的操作转化为数字信号,并通过编程来模拟这些设备的实际工作状态。

2. 编程能力的提升
在实现电路模拟系统的过程中,我不仅锻炼了自己的编程能力,还学会了如何将抽象的电路模型转化为具体的代码实现。我使用了面向对象编程(OOP)的方法来设计电路设备类、控制设备类和受控设备类,这让我对OOP有了更深刻的理解。同时,我也学会了如何使用数据结构(如列表)来存储和处理电路连接信息,以及如何使用算法来模拟电路的工作过程。

3. 电路原理和模拟的学习
通过这次作业,我学习了许多电路原理和模拟技术。我了解了电路中的基本元件(如开关、电阻等)的工作原理,以及它们在电路中的作用。同时,我也学会了如何使用编程来模拟电路中的电压、电流等物理量,这对我理解电路的工作原理非常有帮助。

以下是我从三次作业中具体学习到的内容:
第一次作业
信息解析和处理:我学会了如何解析不同格式的输入信息,包括题目信息、试卷信息、答题信息、学生信息和删除题目信息。我需要根据不同的标识符(如#N:, #Q:, #A:, #T:, #X:, #S:, #D:N-)来识别和提取信息。

复杂逻辑的实现:对于多选题和填空题,我需要实现更复杂的逻辑来判断答案的正确性,包括处理部分正确的情况。

第二次作业
理解电路元件的工作原理:我学习了开关、分档调速器和连续调速器的工作原理,并学会了如何在代码中模拟它们的行为。

电路连接的表示和解析:我学会了如何解析输入的电路连接信息,并将其转化为电路模拟的内部表示。

第三次作业
电路结构的扩展:在第二次作业中,我学习了如何处理包含并联电路的电路结构,这让我对电路的复杂性和多样性有了更深刻的理解。

电路参数的计算:我学会了如何计算电路中的电压、电流和功率等参数,以及如何处理电路中的并联和串联关系。

4. 问题解决能力的提升
在解决作业中遇到的问题时,我学会了如何进行问题分析和调试。我使用了逐步排除法、日志记录和断言等方法来定位和修复错误。这些方法不仅提高了我的编程能力,也提升了我的问题解决能力。

5. 团队合作和沟通
虽然这次作业是个人完成的,但在实际工作中,类似的任务通常需要团队合作。在这个过程中,我意识到了团队合作和沟通的重要性。如果是在团队环境中,我需要与团队成员有效沟通,共享知识和经验,以便共同完成任务。

6. 持续学习和自我提升
这次作业让我认识到,无论在哪个阶段,持续学习和自我提升都是非常重要的。在完成作业的过程中,我不断学习新的编程技巧和电路原理,这让我更加自信地面对未来的挑战。

总的来说,通过这三次作业,我不仅提高了自己的编程能力和电路知识,还学会了如何将理论知识应用到实际问题中。这些经验和知识将对我的未来学习和职业发展产生深远的影响。****

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

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

相关文章

WebLogic XMLDecoder反序列化漏洞

有关WebLogic的XMLDecoder反序列化漏洞包括CVE-2017-3506、CVE-2017-10271、CVE-2019-2725、CVE-2019-2729等,其漏洞原理相似,差异主要在于出问题的包、黑名单过滤的标签。目录前言XMLDecoder概述XMLDecoder反序列化漏洞漏洞复现 前言 上篇复现了T3反序列化漏洞,XMLDecoder反…

第四日

4. 从前序与中序遍历序列构造二叉树 题目描述:给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例:输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 输出: [3,9,20,nul…

Python_编程基础

Python_编程基础 Python编程基础 0、简单介绍 解释型语言:一边编译一边运行,不需要进行编译,运行效率比较低 解释器 JavaScript-浏览器 python.exe php.exe 编译型语言:运行前需要进行编译,运行效率比较高 C .c->.exe 组合:anaconda+pycharm、python+pychar…

答题判题程序终版与家居强电电路模拟程序两次迭代

目录: 一)前言 二)设计与分析 三)踩坑心得 四)改进建议 五)总结 一.前言 (1)答题判题程序-4: 【1】知识点:正则表达式,判题的逻辑思维能力,数据形式转换。 【2】题量:很大 【3】难度:很难 是前三次答题判题程序迭代优化的最终形态,难度较高,它对于类的种类的个…

AX6000 Zerotier 开机自启 持久化虚拟 MAC 地址

步骤:当前先配置好 Zerotier,保证可以拿到 IP 地址;将整个 Zerotier 复制到 /data 下;cp -a /var/lib/zerotier-one /data/zerotier删掉 /data/zerotier/ 下的 zerotier-one.pid 文件 在 /data/auto_ssh/auto_ssh.sh 末尾添加如下内容:cp -a /data/zerotier /var/lib/zero…

Java第二次Blog

7-4~6题目集 前言 这些题目主要用到对象与类的处理继承与多态的使用: 继承和多态是面向对象编程中相互关联的两个概念。继承为多态提供了基础,而多态则通过继承实现了代码的灵活性和可扩展性。 1.字符串处理:需要对输入的题目信息和答题信息进行字符串分割、提取和处理,以获…

D - 88888888

D - 88888888 https://atcoder.jp/contests/abc357/tasks/abc357_d思路 Code https://atcoder.jp/contests/abc357/submissions/54384091LL n;LL base = 998244353;LL getlen(LL n){LL cnt = 0;while(n){cnt++;n /= 10;}return cnt; }LL ksm(LL a, LL b) {LL t = 1;while (b){…

Git底层原理与分析模型

https://www.cnblogs.com/liqinglucky/p/git.html 一、git版本管理 1.1 背景--从写毕业论文讲文档备份 让我们从写毕业论文的经历讲起。通常开始写论文之前,先在一个开阔的空间创建了一个文件夹用于保存将来的论文稿。然后就开始了我们的 “毕业论文版本管理”。这样管理存在的…

SpringBoot配置文件敏感信息加密方案

在SpringBoot Project中,会将一些敏感信息配置到application.yml/application.properties配置文件中(同样适用于Spring Cloud的各个微服务其实(微服务实例)本质就是一个SpringBoot),例如数据库的用户名和密码、Redis的密码等。为了保证敏感信息的安全,我们需要将此类数据…