關於三次求導做業的總結與感想

1、關於三次求導做業html

  前三次求導做業是一個由簡至易的練手,難度上適中而又很好的切合理論課。給未接觸學習過JAVA的同窗留有足夠的時間創建面相對象的意識,又可以隨着三次遞進做業結合理論學習。編程

  三次做業由簡單的一元多項式求導到添加三角函數,再到無限嵌套,既可以使用上次做業部分思想,又可以將繼承和接口結合進去。函數

2、程序分析學習

(一)分析程序結構測試

  (1)第一次做業優化

    類圖以下:編碼

    

    複雜度以下:spa

    

    耦合度以下:調試

    

 

   可見,第一次做業個人程序仍是具備很嚴重的面相過程的問題,程序主要部分在main函數內,雖然參照學長的代碼,使用了Pattern和Matcher,理清了思路,可是對於兩個方法的使用卻並很差,重複造輪子嚴重。htm

 

  (2)第二次做業

     類圖以下:

     

    複雜度以下:

     

    耦合度以下:

     

   第二次做業的主函數仍然冗長,我發現本身的思路存在很大的問題——我仍然仿照第一次做業,使用大正則,將整個表達式直接匹配大正則,而對於表達式拆分爲項的過程卻寫在了main函數內,這至關於類只是一個擺設,並無很好的使用一個類,而使用大正則匹配意味着使用Matcher方法仍然會重複造輪子,所以在看過別人的代碼後,我開始在第三次做業中使用小正則分別匹配。

  (3)第三次做業

    類圖以下:

    

    複雜度以下:

    

      耦合度以下:

     

  第三次做業是遞歸求導,大正則匹配再也不可行,我開始使用小正則遞歸拆分,在編程過程當中我開始發現,除了遞歸性,其餘和第二次並不太大區別。通過前兩次的經驗,個人類已經將方法整合的比較合理, 小正則的使用,使得我也再也不重複造輪子,代碼風格比較第一次有了很大改觀。

  (二)BUG分析

  第一次做業由於比較簡單,並無太大問題,只是因爲在項符號爲負時多輸出了一個負號。

  第二次做業並無考慮輸入爲空的狀況,我意識到程序調試的魯棒性,而兩個項之間可能存在三個加減號,我並無處理好,所以中測有一個點沒有過。

  第三次做業又出現了第二次的問題,在第二次討論課上聽其餘同窗講事後,我瞭解到要先對項進行預處理,將前面的正負號處理掉,不然交給項本身統一處 理不可能處理全部狀況。

  (三)互測策略

  (1)在寫完程序後,我會先對本身的程序進行測試,選用正常的測試樣例保證正常,選用魯棒性強的樣例保證覆蓋面全,互測時我會將這些樣例測試別人,比如常數項爲-0000,考慮邊界狀況,參照指導書要求,列出約束點,進行測試。

  (2)當魯棒測試樣例沒法發現更多BUG後,開始閱讀他人代碼,依照思路比較他人與本身的思路和考慮各類狀況的差異,以此肯定他人或本身的問題。

  (四)重構說明

  第二次做業因爲我沒有考慮到一個項可表示爲三元式,並無對一次做業重構,而第三次做業我艱難的實現了遞歸,仍是採用了將表達式拆分爲項,再拆分爲因子的策略,卻並不知接口該怎樣應用其中,個人代碼結構並適合接口,後來在問過別的同窗後,我瞭解到須要在乘和加減兩個類中採用接口。

3、總結

   (1)三次做業我逐漸將面向過程的思想扭轉了過來,可以將編碼與理論課結合起來

  (2)對於優化,我作的並很差,尤爲第三次做業,嵌套層數過多時結果尤爲冗雜

  (3)我在做業初期對整個程序結構的構思花的時間較少,每每有了思路就開工,卻半途放棄方法

原文出處:https://www.cnblogs.com/wdd00/p/10610830.html

相關文章
相關標籤/搜索