2017-2018-2 165X 『Java程序設計』課程 結對編程練習_四則運算

2017-2018-2 165X 『Java程序設計』課程

結對編程練習_四則運算

通過第一階段的學習,同窗們已經熟悉了這門語言基本的用法。在一次又一次對着電腦編寫並提交代碼,進行練習的時候,有沒有以爲孤單又無趣?此次咱們來體驗一種新的開發模式——結對編程,讓你和小夥伴一塊兒分析,一塊兒思考,一塊兒測試,一塊兒完善,在思惟的碰撞中體驗結對編程的魅力!html

————————CONTENTS————————


1.題目描述

鄒欣老師在《現代軟件工程講義 3 結對編程和兩人合做》一文中提到:java

在結對編程模式下,一對程序員肩並肩地、平等地、互補地進行開發工做。兩個程序員並排坐在一臺電腦前,面對同一個顯示器,使用同一個鍵盤,同一個鼠標一塊兒工做。他們一塊兒分析,一塊兒設計,一塊兒寫測試用例,一塊兒編碼,一塊兒單元測試,一塊兒集成測試,一塊兒寫文檔等。git

生活中也有不少相似的搭檔關係,例如:程序員

  • 越野賽車(駕駛,領航員)
  • 駕駛飛機(駕駛,副駕駛)
  • 戰鬥機的編組(長機,僚機)

咱們把結對編程中兩位合做者的關係看做駕駛員和領航員,其中:github

  • 駕駛員(Driver)是控制鍵盤輸入的人
  • 領航員(Navigator)起到領航、提醒的做用

在本次結對編程中,即須要兩位合做者之間創建駕駛員和領航員的關係。算法

具體題目要求參見:『結對編程項目-四則運算』編程

如何對錶達式進行求值運算呢?咱們先來一個簡單的入門。數據結構

1、中綴表達式與後綴表達式模塊化

中綴表達式就是運算符號在運算數中間的表達式,好比1+2,顧名思義,後綴表達式就是運算符在運算數後面的表達式,好比1 2 +。爲何要講後綴表達式呢?由於電腦運算後綴表達式會比中綴表達式方便不少。那麼如何運算後綴表達式呢?函數

舉個例子:計算9+(3-1)*3+6/2,轉換爲後綴表達式即爲9 3 1 - 3 * + 6 2 / +(怎麼轉換後面再講)。計算規則就是創建一個空棧,遇到數字就入棧,遇到符號就以符號前面的兩個數爲運算數進行計算。

2、中綴表達式轉換爲後綴表達式

法則:

  • 若是遇到數字,咱們就直接將其輸出。
  • 若是遇到非數字時,若棧爲空或者該符號爲左括號或者棧頂元素爲括號,直接入棧。
  • 若是遇到一個右括號,持續出棧並輸出符號,直到棧頂元素爲左括號,而後將左括號出棧(注意,左括號只出棧,不輸出),右括號不入棧。
  • 若是遇到運算符號且棧非空,查看棧頂元素,若是棧頂元素的運算優先級大於或者等於該運算符號,則持續出棧,直到棧頂元素優先級小於該運算符。最後將該元素入棧。
  • 若是咱們讀到了輸入的末尾,則將棧中全部元素依次彈出。

有了以上的瞭解,你們能夠嘗試本身作一個「計算器」啦~

(更多參考:婁老師的博客2016-2017-2 《Java 程序設計》課堂實踐項目——數據結構應用

返回目錄


2.測試說明

婁老師在《Intellj IDEA 簡易教程——單元測試》部分提到:

若是別人用本身的代碼發現一堆Bugs,那多沒面子!怎麼辦?寫了產品代碼,咱們還要寫測試代碼,證實本身的代碼沒有問題。Java編程時,程序員對類實現的測試叫單元測試。這裏咱們設計了一個測試用例(Test Case),測試用例是爲某個特殊目標而編制的一組測試輸入、執行條件以及預期結果,以便測試某個程序路徑或覈實是否知足某個特定需求。

產品代碼主要進行三個方面的測試:

  • 正常測試
  • 異常測試
  • 邊界測試

與之有殊途同歸之妙的一種標準是:『Right-BICEP法則』

其中 Right 指程序的正確性,BICEP 每一個字母代指一個測試的方面。具體來講:

  • Right: 傳入程序單元期待的參數、數據,是否可以獲得正確的結果。
  • Boundary Conditions: 程序單元是否可以正確處理全部的邊界條件。
  • Inverse relationships: 反向測試。
  • Cross-check: 交叉測試。
  • Error-condition: 異常狀況。
  • Performance: 性能。

對於本次四則運算的結對編程項目,需從如下幾方面考慮進行測試:

  • Right: 按照設計者意圖輸入參數時,程序可以正確輸出結果。
  • B: 在程序受到極端參數時,程序可以正確進行響應。
  • E: 有同窗選擇將出題結果寫入一個文件。若是此時硬盤滿了,文件寫不進去了,怎麼辦?
  • P: 出題速度應該足夠快。測試生成100、1000、10000甚至更多道題目所需的時間。

如下爲一些基本的測試用例,可供參考:

  • 2 + 5 = 7
  • 4 - 9 = -5
  • 3 ÷ 7 = 3/7
  • 2 ÷ 6 = 1/3
  • 5 * (1 + 3) = 20
  • 2/3 - 1/5 = 7/15
  • 5/6 - 2/3 = 1/6
  • 2/5 - 3/20 = 1/4
  • 13 - 2 * 5 = 3
  • (2/3 + 1/2) * 6/7 = 1
  • (5 - 2) * (4 + 1) = 15

(更多參考:鄒欣老師的博客《軟件工程練習:模塊化,單元測試,迴歸測試,TDD》)

返回目錄


3.提交要求

1、代碼提交

【注意】

  • Git提交粒度不要太粗,建議一個文件/一個類/一個函數/一個功能/一個bug修復都進行提交,不能一天提交一次,更不能一週一次,參考Commit Message的編寫
  • Git提交日誌需保證有意義,若是整個項目持續使用無心義的提交日誌,這裏會是一個扣分項,如以前做業中的:
    • weekxxx
    • Pxxx代碼
    • 純數字類名:1.2
    • 日期:0409
    • 只寫文件名
    • ......

2、博客規範

  • 小組的兩位同窗都須要提交各自的博客,最終將視博客的質量給出各自的博客部分分數。
  • 博客中需附:
    • 碼雲連接
    • 需求分析
    • 設計思路
    • UML類圖
    • 功能截圖
    • 結對感覺
    • 結對編程的照片
    • ......
  • 更多博客規範,參見:結對編程項目-四則運算

3、截止時間

本項目持續兩週時間,從發佈做業當天開始計算

  • 第一週:階段性總結
  • 第二週:總體總結

返回目錄


附:參考資料

返回目錄

相關文章
相關標籤/搜索