1. 程式人生 > ># 20172318 2017-2018-2 《程序設計與數據結構》第10周學習總結

# 20172318 2017-2018-2 《程序設計與數據結構》第10周學習總結

方案 while false 進度條 重復 form 必須 基本 紅色

20172318 2017-2018-2 《程序設計與數據結構》第10周學習總結

教材學習內容總結

  • 錯誤和異常都是對象,代表非正常情況或無效處理
  • 處理異常三種方法:1.根本不處理異常 2.當異常發生時處理異常 3.在程序的某個位置集中處理異常
  • 未捕獲的異常:如果程序不處理異常,則將非正常地終止執行,並產生關於描述在何處發生什麽異常的信息
  • 異常拋出時所輸出的信息,提供了方法調用堆棧蹤跡
  • try-catch語句:沒有異常,執行完try語句後,將繼續執行finally子句,有異常,則控制立刻轉移到相應的catch子句處理異常
  • 每一個catch子句處理一種try語句塊發生的異常
  • finally子句(可選):無論try語句塊正常退出或由於拋出異常而退出,都將執行finally子句
  • 異常的傳遞:如果想一個異常的發生處沒有捕獲和處理該異常,則該異常將傳遞給上級調用方法
  • 自定義異常:可由Exception類或它的後代類派生一個新類來定義一個新的異常
  • 可檢測異常:必須由方法捕獲,或者必須在可能拋出或傳遞異常方法的throws子句中列出來
  • 不可檢測異常:Java中唯一的不可檢測異常是RuntimeExceptions類的對象或該類的後代類對象
  • 遞歸:遞歸是一種方法能夠調用自己的編程技術
  • 無窮遞歸:任何一個遞歸定義中必須有稱為基本情況的非遞歸定義部分,才能使遞歸最終結束
  • 每一次對方法的遞歸調用,都會創建新的局部變量和參數
  • 直接遞歸與間接遞歸:方法調用自己的遞歸為直接遞歸,一個方法調用其它方法,導致再次調用自己稱為間接遞歸
  • 遞歸的應用:1.迷宮旅行 2.漢諾塔問題

教材學習中的問題和解決過程

  • 問題1:異常是對象?不是錯誤代碼?
  • 問題1解決方案:看完整章後發現,異常不僅是個對象,而且你還能自定義異常,捕獲異常,
  • 問題2:對於迷宮搜索的代碼有些不理解
  • 問題2解決方案:後來仔細研究了下發現先是使用一個方法判斷是否走過該路,再一直判斷上下左右是否可走,如果可走就坐標移動一位,一次次地走到終點

代碼調試中的問題和解決過程

  • 問題1:pp11.1不清楚異常要怎麽編
  • 問題1解決方案:使用了課本的例子,直接對其進行了修改
    技術分享圖片

  • 問題2:pp11.2使用catch語句時出現紅色的報錯
  • 問題2解決方案:問了下其他同學發現必須先定義一個異常,並throw拋出,對這方面不太了解哈
    技術分享圖片

代碼托管

技術分享圖片

上周考試錯題總結

  • 錯題1及原因,理解情況
    An infinite loop and an infinite recursion
    A . are different because it is impossible to detect the latter, while it‘s quite easy to detect the former
    B . both continue to repeat indefinitely
    C . both will be caught by the compiler
    D . both will be caught by the Java Virtual Machine during execution
    E . none of the above
    選B,無限循環和遞歸都是相似的,它們會不斷地重復。兩者都不能被編譯器捕獲或在運行時捕獲
  • 錯題2及原因,理解情況
    It always is possible to replace a recursion by an iteration and vice versa.
    A . trueB . false
    選A,遞歸和叠代都是重復的形式,它們在計算方面是等價的——每個都可以被另一個取代。
  • 錯題3及原因,理解情況
    The following method correctly adds two ints, returning their sum:
    public int add(int a, int b)
    {
    return (b > 0) ? add(a+1, b-1) : a;
    }
    A . true
    B . false
    選B,b<0時運算會失敗

點評模板:

  • 博客中值得學習的或問題:
    • 對教材內容解析的非常到位
  • 代碼中值得學習的或問題:

    點評過的同學博客和代碼

  • 本周結對學習情況
    • 20172312
    • 結對學習內容
      • 課本第十一、十二章
      • 結對編程-四則運算
  • 上周博客互評情況
    • 20172312

其他(感悟、思考等,可選)

課本簡單實驗難

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 128/128 1/1 12/12
第二周 212/340 1/2 18/30
第三周 206/546 1/3 20/50
第四周 483/1029 2/5 40/90
第五周 633/1662 1/6 30/120
第六周 560/2222 1/7 20/140
第七周 511/2733 1/8 20/160
第八周 817/3550 3/11 25/185
第九周 1319/4869 2/11 20/205

參考資料

  • 《Java程序設計與數據結構教程(第二版)》

  • 《Java程序設計與數據結構教程(第二版)》學習指導

# 20172318 2017-2018-2 《程序設計與數據結構》第10周學習總結