第二次Blog作業

Lapis_Evergarden發表於2024-06-09

此次Blog為題目集4-6的總結性內容
前言(題目集總結)

第四次題目集
(此次題目集為答題判題程式的最後一版,綜合性最強,總體偏難)
1.知識點
字串解析與處理: 程式需要能解析和處理各種格式的字串,包括題目資訊、試卷資訊、學生資訊、答卷資訊和刪除題目資訊。這涉及到字串分割、提取和轉換資料型別等操作。
資料結構的應用: 需要有效利用資料結構(如字典和列表)來儲存和檢索資訊。例如,用字典儲存題目編號和對應資訊,用列表儲存學生答案等。
邏輯判斷與錯誤處理: 輸入的資訊需要透過邏輯判斷來驗證其正確性和合理性。此外,需要處理各種異常情況並給出相應的錯誤提示,如格式錯誤、不存在的試卷號或學號等。
檔案讀寫操作: 程式應能從檔案中讀取資訊,處理後將結果輸出到檔案或控制檯。這涉及到基本的I/O操作。
格式化輸出: 輸出資訊需要按照特定的格式,這要求對輸出的每個部分進行精確的控制和格式化。
2.題量
題量較大: 因為要處理的題目包含多種輸入資訊型別,且每類資訊內部又有多個欄位,所以整體題量是比較大的。
多工處理: 程式不僅要讀取和解析資料,還需要根據不同的輸入型別執行不同的操作(如新增題目、刪除題目、計算分數等),這增加了題量的感知。
3.難度
困難: 由於需要在程式碼中管理多種型別的資料,並且這些資料之間存在關聯(如試卷中的題目分值對應於具體的題目編號),難度較為明顯。
資料關聯性: 難度之一在於維護和正確地使用這些資料之間的關聯性。例如,答卷中的答案需要與題目資訊及學生資訊準確匹配。
邊界條件和錯誤處理: 處理各種邊界條件和異常輸入(如非存在的試卷號或學號、格式錯誤的輸入等)增加了問題的複雜性。
邏輯判斷: 需要做大量的邏輯判斷來決定如何處理每種情況下的輸入,以及如何正確地生成輸出。
4.注意事項
注意題目編號、試卷資訊與學生答案之間的正確對應關係。
將程式分為解析輸入、處理資料和生成輸出的模組,使結構清晰。
嚴格按照題目要求的格式輸出結果,包括各種情況的處理。

第五次題目集
(題目集更新為家居強電電路模擬程式,開始解決物理電學問題,需要具備一定的相關知識,個人感覺難度較大)
1.知識點
電路模擬與裝置特性: 理解開關、調速器(分檔和連續)、燈(白熾燈和日光燈)、吊扇等裝置的電氣特性及其在電路中的工作原理。
電壓和控制邏輯: 掌握電壓如何透過開關、調速器等控制裝置影響受控裝置(如燈和風扇)的輸入電壓,進而影響其輸出狀態(亮度或轉速)。
資訊解析與處理: 解析裝置連線資訊和調節指令,處理這些資訊以類比電路的工作狀態。
比例計算和閾值判斷: 根據裝置特性進行電壓、亮度、轉速的比例計算,以及基於閾值的狀態判斷。
2.題量
中等偏上: 題目涉及多種裝置型別和複雜的連線關係,需要處理的輸入資訊量較大,同時需要對每種裝置進行狀態模擬和輸出計算。
3.難度
中等偏上: 需要準確模擬各種裝置的電氣特性和相互作用,特別是在複雜連線和多種調節指令下的狀態變化。
4.注意事項
正確解析輸入:確保準確讀取和解析裝置連線和調節指令。
嚴格輸出格式:按照題目要求格式輸出裝置狀態,注意精確度要求。
測試用例覆蓋:設計測試用例以覆蓋各種裝置和調節情況,確保程式穩定性和正確性。

第六次題目集
(此題為第五次題目集的迭代,新增線路中包含一個並聯電路)
1.知識點
電路基礎知識:理解開關、分檔調速器、連續調速器的工作原理,以及如何透過這些控制裝置調節受控裝置(燈和風扇)的狀態。
串聯與並聯電路:掌握串聯和並聯電路的特點,以及如何在這兩種電路中計算電壓分配和電流。
電阻對電路的影響:瞭解電阻對電流和電壓的影響,以及如何根據裝置的電阻和其他特性(如亮度和轉速)計算其工作狀態。
資訊解析與處理:能夠解析和處理複雜的輸入資訊,包括裝置連線資訊、調節指令,以及串聯和並聯電路的詳細配置。
程式設計邏輯與演算法應用:應用適當的演算法和邏輯來類比電路的行為,處理調節指令,計算並輸出每個裝置的狀態。
2.題量
較大:題目涉及多種裝置型別和複雜的電路連線方式,需要處理大量的輸入資訊,以及基於這些資訊的計算和邏輯判斷。
3.難度
較高:不僅需要理解電路的基本工作原理,還要能夠處理複雜的串聯和並聯電路配置,以及基於這些配置的電壓和電流計算。此外,題目還需要處理裝置的電阻特性和基於電阻的裝置行為模擬,增加了問題的複雜性。
4.注意事項
精確解析輸入:仔細解析所有輸入資訊,確保準確理解每個裝置的連線和配置。
正確應用電路規則:嚴格按照電路基本規則進行電壓和電流的計算,考慮電阻的影響。
輸出格式規範:按照題目要求的格式精確輸出每個裝置的狀態或引數,注意特定的輸出要求(如截尾規則)。

設計與分析
第四次作業
第四次作業的題目難度明顯增大,程式需要處理複雜的輸入格式,管理多種資料型別(題目、試卷、學生和答卷資訊),實現判題邏輯,並處理各種異常情況。必須增加新的類來滿足題目要求,受本人能力有限,目前只設計了基本的框架。SourceMonitor的測試結果如下:

第五次作業
本系統旨在模擬智慧家居中的強電電路,包括控制裝置(開關、分檔調速器、連續調速器)和受控裝置(白熾燈、日光燈、吊扇)。透過輸入裝置資訊、連線資訊以及控制裝置的調節資訊,系統能夠類比電路的工作狀態並輸出每個裝置的狀態或引數。

設計要點
1.資料結構設計:
定義類或結構體來表示每種裝置,包含裝置型別、編號、狀態/檔位/亮度/轉速等屬性。
使用列表或陣列儲存裝置例項,便於遍歷和索引。
電路模擬演算法:
2.解析輸入資訊,構建裝置例項並儲存。
根據連線資訊構建裝置間的連線關係,使用鄰接表或鄰接矩陣表示電路拓撲。
實現電路的電流/電壓傳播演算法,考慮開關狀態和調速器設定對電路的影響。
根據裝置型別和電位差計算裝置狀態(如亮度和轉速)。
3.使用者介面:
提供命令列或圖形介面輸入裝置資訊、連線資訊和控制指令。
輸出裝置狀態,清晰展示每個裝置的工作引數。

第六次作業
分析
裝置模擬:

開關:兩種狀態(0和1),控制輸出引腳的電位。
分檔調速器:4檔調速,每檔對應不同的輸出電位。
連續調速器:無固定檔位,按比例輸出電位。
白熾燈:亮度與電位差成正比,超過220V截斷。
日光燈:二元狀態,電位差非零時亮度為180lux。
吊扇/落地扇:轉速與輸入電壓成正比,超過150V轉速封頂。
連線管理:

支援裝置之間的串聯連線,不允許輸出引腳短接、調速器串聯及並聯或反饋接入。
電源VCC和接地GND分別作為電路的起點和終點。
狀態調節與輸出:

根據控制裝置的調節資訊調整其狀態或檔位。
輸出所有裝置的狀態或引數,包括開關狀態、調速器檔位、燈具亮度和風扇轉速。

踩坑心得

1.第四次作業
題目資訊不連續:題目編號可能不按順序出現,需要正確處理編號的不連續性。
試卷資訊不匹配:確保試卷中的題目編號與題目資訊中的實際題目相對應。
學生資訊格式錯誤:學號和姓名之間必須有正確的分隔符,資訊需完整。
答卷資訊不匹配:答卷中的題目順序必須與試卷中的題目順序一致。
刪除題目後的處理:刪除題目資訊後,要正確處理相關答卷的答案。
答案數量不一致:答卷中的答案數量可能與試卷中的題目數量不符,需處理多餘或缺失的答案。
答案內容的空格處理:答案內容中的首尾空格應去除後再進行判斷。

2.第五次作業
裝置識別符號混淆:由於開關、分檔調速器、連續調速器、白熾燈、日光燈和吊扇的裝置識別符號分別為K、F、L、B、R、D,學員可能會混淆這些識別符號,導致裝置識別錯誤。
引腳編號錯誤:所有控制裝置和受控裝置的輸入引腳編號為1,輸出引腳編號為2。學員可能會錯誤地處理引腳編號,尤其是在連線資訊中,引腳編號的錯誤會導致電路連線錯誤。
調速器檔位計算錯誤:分檔調速器的檔位值從0檔-2(3/4)檔變化,每個檔位的輸出電位分別為0、0.3、0.6、0.9倍的輸入電壓。連續調速器的輸出電位為檔位引數乘以輸入電壓。學員可能會在這些計算中出錯,導致輸出電位計算不準確。
裝置狀態或引數輸出格式錯誤:輸出資訊需要按照特定格式,包括裝置標識、裝置編號和裝置引數值。學員可能會在格式化輸出時出錯,例如忘記輸出單位或錯誤地輸出了狀態描述(如將“turned on”輸出為“0”)。

3.第六次作業
亮度和轉速計算錯誤:白熾燈的亮度和吊扇的轉速都需要根據電位差來計算。學員可能會在這些計算中出錯,導致亮度或轉速的輸出值不準確。
連線資訊處理不當:連線資訊包含了裝置的引腳連線關係,學員需要正確解析這些資訊以確定電路的連線方式。任何解析錯誤都可能導致電路連線錯誤,影響整個電路的工作狀態。
電源和接地標識處理錯誤:電源接地標識VCC和GND分別代表220V和0V。學員可能會錯誤地處理這些標識,導致電路的電源和接地狀態錯誤。
控制裝置調節資訊處理不當:控制裝置調節資訊包括開關、分檔調速器和連續調速器的調節指令。學員需要正確解析這些指令並據此調整裝置狀態。任何解析或執行錯誤都會導致裝置狀態不正確。

改進建議

1.第四次作業
設計一個內部對映表,將實際題目編號對映到連續的索引上,以便程式可以連續處理題目資訊,無論輸入的題目編號是否連續。
在生成試卷時,增加驗證步驟,確保所有引用的題目編號都存在於題目資訊中。如果發現不匹配,提供警告並允許手動修正。
對學生資訊的輸入進行嚴格的格式驗證,確保學號和姓名之間有正確的分隔符,並且資訊完整。對不符合格式的資訊提供錯誤提示,並引導使用者正確輸入。
在答卷資訊輸入時,檢查答案的順序是否與試卷中題目的順序一致。如果檢測到不一致,提供警告並允許使用者調整順序或重新輸入。
在題目被刪除後,更新所有相關的答卷資訊,將刪除題目的答案標記為無效,並在輸出時提供相應的失效提示資訊。
在答卷處理時,檢查答案的數量是否與試卷中的題目數量一致。對於答案數量不符的情況,提供警告並允許使用者調整或補充答案。
在判斷答案是否正確之前,先去除答案內容的首尾空格。這可以防止因空格問題導致的判題錯誤。

2.第五、六次作業
裝置識別符號簡化:為了減少混淆,可以考慮使用更直觀的識別符號或顏色編碼來區分不同的裝置型別。
引腳編號明確化:在輸入資訊中明確指出每個裝置的輸入和輸出引腳編號,以減少混淆和錯誤。
調速器檔位計算輔助工具:可以提供一種輔助工具或圖表,幫助學員理解不同檔位對應的輸出電位,以及如何根據輸入電壓計算輸出電位。
輸出格式指導:提供一個明確的輸出格式指南,包括所有可能的裝置狀態和引數值,以及正確的輸出單位和狀態描述。
亮度和轉速計算輔助工具:提供計算白熾燈亮度和吊扇轉速的輔助工具或公式,幫助學員準確計算這些引數。
連線資訊圖形化:開發一個圖形化介面,讓學員可以透過拖放引腳來建立連線,而不是手動輸入連線資訊,這樣可以降低解析錯誤的風險。
電源和接地標識強調:在輸入資訊中強調電源(VCC)和接地(GND)的標識,確保學員正確識別和處理這些關鍵資訊
控制裝置調節資訊圖形化:提供一個圖形化介面,讓學員可以透過點選按鈕或滑動條來調整控制裝置的狀態,而不是手動輸入調節資訊。
電壓超標保護:在實際應用中,加入電壓檢測和超標保護機制,以防止電壓超標導致的裝置損壞或安全事故。
考慮並聯和反饋接入:在實際應用中,設計邏輯來處理並聯接入和反饋接入的情況,以確保電路的穩定性和安全性。

總結

在本次實驗中,我經歷了從答題判題程式到家居強電電路模擬程式的開發過程。透過這一系列的程式設計任務,我深入理解了軟體開發的複雜性和挑戰性,同時也掌握了處理各種資料結構和演算法的能力。以下是對題目集4-6的總結。

第四次題目集總結
第四次題目集作為答題判題程式的最後一版,其綜合性最強,難度總體偏難。我學習了字串解析與處理、資料結構的應用、邏輯判斷與錯誤處理、檔案讀寫操作以及格式化輸出等知識點。

第五次題目集總結
在第五次題目集中,我轉向了物理電學問題,開發了一個家居強電電路模擬程式。這個程式需要理解電路模擬、裝置特性、電壓控制邏輯等資訊。

第六次題目集總結
第六次題目集是對第五次題目集的迭代,新增了並聯電路的處理。需要掌握電路基礎知識、串聯與並聯電路的特點、電阻對電路的影響等知識點。

透過這些實驗,我不僅提升了程式設計技能,還學會了如何分析問題並提出有效的解決方案。這些經驗將對我未來的學習和工作產生深遠的影響。