# 20172318 2017-2018-2 《程序設計與數據結構》第10周學習總結
阿新 • • 發佈:2018-05-20
方案 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周學習總結