實驗題目:結對編程-四則運算
實驗日期:2017.5.12
實驗內容:編譯一個程序,使其:
- 自動生成小學四則運算題目(加、減、乘、除)
- 持多運算符(比如生成包含100個運算符的題目)
- 支持真分數
- 統計正確率
- 支持整數
指導老師:婁老師、謝老師,王老師。
實驗內容:
需求分析與設計思路
根據要求的四則運算,第一反應就是ifelse語句來選擇加減乘除,如此繼續延伸,ifelse語句也可以用來寫是否加入真分數等等這些操作,因此,這次實驗我們選擇大量使用ifelse語句來編寫,但是在如何計算出值和表達式方面,通過謝老師的博客知道,我們需要學習逆波蘭式算法,進而得出計算結果,並且由於需要判斷的語句較多,需要進行多次輸入新的變量。
首先需要完成的是偽代碼的編寫,由於代碼量比較大,在編譯過程中有困難,因為大量的代價十分容易產生混淆與重復的問題,同時本次實驗的代碼的層次十分多,環節十分復雜,在編譯過程中出現邏輯錯誤的可能性很高,需要進行多次編寫和修改。在幾個實驗要求中,支持真分數運算是比較困難的一個部分,首先要確定輸入值是否為真分數,這里就有了一個比較的過程,但是幸運的是,我們在多運算符解決之前就解決了真分數的問題,同時我們選擇了在代碼一開始就給使用者一個選擇,是否加入真分數。
同時真分數時候的一些注意事項
在完成了這兩個難點之后,判斷答案並進行記錄,統計正確率是總結整個代碼的過程,對於答題情況的統計,同樣要通過變量進行統計。
最后結果如圖
困難點:
因為這是結對編程項目,其一對於多運算符方面的問題,我們在網上進行查找,但是都沒有找到一個令人滿意的解決辦法。其二,因為結對人更多的選擇使用bash進行編程,所以要結合IDEA和bash來進行編程。其三,因為代碼量很大,出現很多問題,需要不斷的改進和修正。
解決辦法:
結對人刑天鉞同學與張泰毓同學交流學習后,結合張同學在碼雲上的代碼,完成了多運算符的代碼編譯,完善了代碼。編譯方法為:給代碼增加一個for循環語句,在不加入括號的情況下,運算符由數字、符號、數字、符號組成,將這個語句進行長度加一的循環,就完成了多運算符的計算。
結對學習情況:
本次實驗,我與20162309刑天鉞結對共同完成本次實驗,刑天鉞同學在java學習上基本功很扎實,在對代碼的理解深入。能夠提出很多新穎的想法,給習慣照本宣科的我以很大的啟迪。
但是本次結對編程中,我們隊還存在一個問題就是,代碼量很大,重復冗雜的很多,因此不得不拿出很多時間去精簡一下,雖然也沒精簡多少。
PSP表格:
|
PSP2.1 | Personal Software Process Stages | 預估耗時(小時) | 實際耗時(小時) |
---|---|---|---|
Planning | 計划 | 15 | 17 |
· Estimate | · 估計這個任務需要多少時間 | 8 | 11 |
· Analysis | · 需求分析 (包括學習新技術) | 2 | 2 |
· Design Spec | · 生成設計文檔 | 0.5 | 0.33 |
· Design Review | · 設計復審 (和同事審核設計文檔) | 0.5 | 0.5 |
· Coding Standard | · 代碼規范 (為目前的開發制定合適的規范) | 1 | 1.5 |
· Design | · 具體設計 | 2 | 3 |
· Coding | · 具體編碼 | 3 | 4 |
· Code Review | · 代碼復審 | 2 | 1.5 |
· Test | · 測試(自我測試,修改代碼,提交修改) | 1 | 1 |
Reporting | 報告 | 1 | 1 |
· Test Report | · 測試報告 | 2 | 2.5 |
· Size Measurement | · 計算工作量 | 0.5 | 0.5 |
· Postmortem & Process | · 事后總結, 並提出過程改進計划 | 2 | 2 |
Improvement Plan | 合計 | 22.5 |
實驗總結:
本次實驗是學習java以來一次較為完整和系統的考察學習情況的實驗過程,通過結對實驗的方式來實現。本次實驗有一定的難度,考察方式較為全面,需要投入較多的時間和精力,在一些實驗要求上,比如在給定的一定數量(較大)的代碼輸出結果中,需要為客戶自動篩選出是否存在重復代碼,以及多重的判斷語句,在編譯上確實存在困難,本周也只是完成了一部分實驗內容,一些完善工作還需要完成。通過結對編程任務,在java運用上體會到了還有很多在教材學習上沒有學習到和掌握的知識,只是單純地完成教材上的代碼任務很難全面的學習,通過每周的實驗任務以及隨堂代碼運行檢查可以有效地進行鞏固對學習有很大幫助。
四則運算的實驗的代碼量相對較多,在測試和運行時,單純的命令行就無法較為簡潔地完成了,則idea的一些好處就體現出來了,代碼量大的程序idea可以更加方便地進行錯誤的檢查,判斷語法,對實驗的完成有很大的幫助。