一.前言
这两次pta作业第一次为家居强电电路模拟程序-3,这次题型,是在家居强电电路模拟程序-2的基础上进行迭代,虽然仅仅只增加了互斥开关等,但带来的改变同上一次十分巨大,通路的判断不再仅仅局限于各个控制设备0与1,而是要判断多个控制设备的开闭,其位置乃至互斥开关的实际情况,使得并联电路和各用电器电压的判断困难。第二次为家居强电电路模拟程序-4,虽然仅仅只增加了二极管等,但同样带来的改变同上一次仍旧十分巨大。尽管这几次的作业具有极大的挑战性,但通过不断地思考、实践和反思,是我们能够逐渐掌握家居强电电路的模拟技能,为未来的学习和职业发展打下坚实的基础。
二.设计与分析
(1)家居强电电路模拟程序-3
一、题目要求分析
- 控制设备
本题模拟的控制设备包括开关、分档调速器、连续调速器和互斥开关。每种设备都有其特定的功能和连接方式。
开关:具有两种状态(0和1),可以控制电流的通断。
分档调速器:按档位调整输出电压,每个档位对应不同的输出电压比例。
连续调速器:按位置比例得到档位参数,输出电压与输入电压成比例。
互斥开关:具有三个引脚,只能接通一个分支引脚,另一个分支引脚处于断开状态。 - 受控设备
受控设备包括灯、风扇和窗帘。它们根据输入电压或光照强度表现出不同的工作状态。
灯:包括白炽灯和日光灯,根据输入电压的不同,亮度有所变化。
风扇:包括吊扇和落地扇,根据输入电压的不同,转速有所变化。
窗帘:根据光照强度控制开合比例。 - 输入信息
输入信息包括设备信息、连接信息、控制设备调节信息和电源接地标识等。
设备信息:用特定的标识符和编号表示,如K1、F3等。
连接信息:用方括号表示连接在一起的设备引脚,如[K1-1 K3-2]。
控制设备调节信息:包括开关、互斥开关、分档调速器和连续调速器的调节信息。
电源接地标识:电源VCC电压为220V,接地GND电压为0V。 - 输出信息
输出信息包括所有设备的状态或参数,按特定格式输出。
二、解题思路 - 模型构建
首先,需要构建各种设备的模型,包括开关、调速器、互斥开关、灯、风扇和窗帘。每个设备都应该有一个唯一的标识符和编号,以及对应的状态或参数。
开关:可以用一个布尔变量表示其开/关状态。
调速器:可以用一个整数或浮点数表示其档位或比例。
互斥开关:可以用两个布尔变量表示其两个分支引脚的连接状态。
灯:可以用一个整数表示其亮度。
风扇:可以用一个整数表示其转速。
窗帘:可以用一个整数表示其开合比例。 - 电路连接和状态更新
根据输入的连接信息,构建电路的连接关系。每个设备都应该知道其输入和输出引脚的连接状态。当电路状态发生变化时(如开关状态切换、调速器档位调整),需要更新整个电路的状态。
串联电路:按照输入顺序连接设备,更新每个设备的输入和输出状态。
并联电路:将多个串联电路的输入端短接,输出端短接,分别更新每个串联电路的状态。 - 控制信息
开关控制:切换开关状态。
调速器控制:调整调速器的档位或比例。 - 输出结果
格式要求:按指定格式输出设备的状态或参数,包括开关状态、亮度、转速等。
三、知识点
电路基础知识:包括电压、电流、电阻的基本概念及其在电路中的作用。
智能家居系统:涉及智能家居设备的控制逻辑和状态转换。
编程逻辑:需要设计程序来模拟电路的连接和设备的状态变化。
数据结构:使用合适的数据结构(如类、对象、列表、字典等)来表示和操作电路设备及其连接关系。
四、实现方法 - 类和对象
同上次家具模拟据设计为电器类子类 - 电路连接
同上次家具模拟通过链表连接
加入hushmap 保存所有信息 - 控制
单独在主函数中设计一个方法进行切割
一个方法进行用电器与控制设备的状态改变 - 输出结果
使用hushmap与循环逐个按照顺序输出
五、总结
本题是一个复杂的编程问题,涉及电路模拟、状态管理和控制逻辑。解题的关键在于构建清晰的设备模型,正确处理电路连接和状态更新,以及解析和执行控制指令。通过使用类和对象、字典和列表等数据结构,可以有效地组织和操作电路数据。最终,按照指定的格式输出所有设备的状态或参数,完成智能家居强电电路模拟系统的设计。
(2)家居强电电路模拟程序-4
一、设备模型构建
首先,我们需要构建各种设备的模型,包括开关、调速器、互斥开关、灯、风扇和窗帘。每个设备都应该有一个唯一的标识符和编号,以及对应的状态或参数。
开关:可以用一个布尔变量表示其开/关状态。
调速器:可以用一个整数或浮点数表示其档位或比例。
互斥开关:可以用两个布尔变量表示其两个分支引脚的连接状态。
灯:可以用一个整数表示其亮度。
风扇:可以用一个整数表示其转速。
窗帘:可以用一个整数表示其开合比例。
二、电路连接和状态更新
根据输入的连接信息,构建电路的连接关系。每个设备都应该知道其输入和输出引脚的连接状态。当电路状态发生变化时(如开关状态切换、调速器档位调整),需要更新整个电路的状态。
串联电路:按照输入顺序连接设备,更新每个设备的输入和输出状态。
并联电路:将多个串联电路的输入端短接,输出端短接,分别更新每个串联电路的状态。
三、知识点
电路基础知识:理解电路的基本概念,如电压、电流、电阻、串联和并联等。
编程基础:掌握基本的编程概念,如变量、数据类型、函数、类和对象等。
数据结构:了解和使用基本的数据结构,如列表、字典、集合等,用于存储和操作电路数据。
算法设计:能够设计算法来模拟电路的连接、状态更新和控制指令执行。
输入输出处理:能够解析输入信息,并按照指定的格式输出结果。
异常处理:能够处理电路中的异常情况,如短路、过流等。
四、输出结果
根据设备的当前状态或参数,按照指定的格式输出结果。
五、新增功能实现
- 管脚电压显示:在输出每个电器的状态信息后,再依次输出该电器每个管脚的电压。
- 电流限制:电器在工作时,过大的电流会引起电器过热,从而烧坏电路。本次迭代,每个元器件都有最大电流的设置,当实时电流超过最大电流时,在该电器输出信息的最后加入提示“电流错误”。
- 短路检测:如果电路出现无穷大的电流造成短路,所有元器件信息不输出,输出提示“断路”。
- 并联电路中包含并联:本次迭代考虑并联电路中包含并联电路的情况,即构成并联电路的串联电路可以包含别的并联电路。
- 二极管:增加二极管元件,其电路特性为:正向导通,反向截止。
六、实现方法 - 类和对象
同上次家具模拟据设计为电器类子类 - 电路连接
同上次家具模拟通过链表连接
加入hushmap 保存所有信息 - 控制
单独在主函数中设计一个方法进行切割
一个方法进行用电器与控制设备的状态改变 - 输出结果
使用hushmap与循环逐个按照顺序输出
七、总结
本题是一个复杂的编程问题,涉及电路模拟、状态管理和控制逻辑。解题的关键在于构建清晰的设备模型,正确处理电路连接和状态更新,以及解析和执行控制指令。通过使用类和对象、字典和列表等数据结构,可以有效地组织和操作电路数据。最终,按照指定的格式输出所有设备的状态或参数,完成智能家居强电电路模拟系统的设计。
踩坑心得
关于这几次PTA有一个关键,就是电路的串通,互斥开关,二极管,使得电路的联通变得极其复杂,只有搞清楚电路的联通顺序才能够比较好的写出这两道题,因此对于类的设计就需要更高要求,只有各个类之间的耦合性不那么强,才能做到线路的相契合,才能使得这两道题得以完好的解决。
改进建议
仔细审题理解题目所描述的问题和需求,明确要解决的核心问题是什么。注意题目中的约束条件、输入输出要求以及可能存在的特殊情况。
分析题目确定题目所涉及的技术领域和知识点。思考可能的解决方案和算法思路。对于复杂的问题,可以将其分解为更小的子问题,逐步进行分析。选择合适的技术和工具根据题目需求和自身的技术储备,考虑技术的可行性、效率和可维护性。
编写代码按照设计的方案逐步编写代码,注意代码的规范和可读性,及时添加必要的注释。
总之,解决问题需要耐心、细心和严谨的态度,不断积累经验,提高解决问题的能力。
总结
这两次PTA虽然增加的东西不多,但每一个增加都在上一次的关键点上,每一次增加都使得代码必须改进一大部分(也是我的代码结构不行),既费时又费力,因此作为软件工程师,一个好的代码结构是必须的,除此之外,对于题目相关专业的知识也是必须的,这几次题目虽然相关电学知识并不多,但同样需要几个基础的电学公式才能够得以解决,因此我们软件工程师对于知识的储备必须不断增加,活到老学到老。
标签:状态,输出,blog,开关,电路,23201826,熊锋,连接,设备 From: https://www.cnblogs.com/kasrd/p/18276879