20172330 2017-2018-1 《程序设计与数据结构》第九周学习总结
教材学习内容总结
本周的学习包括两章内容,分别为异常和递归。
异常
- 错误和异常都是对象,代表非正常情况或者无效处理。
- 异常抛出时所输出的信息,提供了方法调用堆栈踪迹。
- 每一个catch子句处理一种try语句块中抛出的异常。
- 无论try语句块正常退出还是又是抛出异常而退出,都将执行finally子句。
(https://www.ibm.com/developerworks/cn/java/j-lo-finally/index.html) - 如果在一个机场的发生处没有捕获和处理该异常,则该异常将传递给上级调用方法。
- 程序员应该细心地考虑处理异常的时机和位置,否则最好不要做异常处理。
- 可由Exception类或他的后代类派生一个新类来定义一个新的异常。
- 流是一个有序的字节序列,它可以以用作输入源或作为输出目标。
递归
- 递归是一种方法能够调用自己的编程技术,掌握递归编程的关键是能以递归的思想考虑问题。
- 任何一个递归定义中必须称为基本情况的非递归定义部分,才能使递归最终结束。
- 每一次对方法的递归调用,都会创建新的局部变量与参数。
- 详细的跟踪递归处理过程,可以深入剖析递归问题求解问题的方式。
- 汉诺塔解法具有指数复杂性,效率非常低,但是该接发的实现却出奇的简短和精炼。
教材学习中的问题和解决过程
- 问题1:IO的理解。
- 问题1解决方案:如书上所说,Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。
下附Java中IO流的所有类
IO流还有许多东西需要去慢慢学习,对于很多方面都有概括的。 - 问题2: 递归与迭代的比较
-
问题2解决方案:对于某些问题,递归是最精炼和适当的解法,但对于其他的问题,递归则不如迭代解法直观。
递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出.//这是递归 int funcA(int n) { if(n > 1) return n+funcA(n-1); else return 1; } //这是迭代 int funcB(int n) { int i,s=0; for(i=1;i<n;i++) s+=i; return s; }
代码调试中的问题和解决过程
- 问题1:在做pp11.1的时候,无论我输入多长的字符串他都显示超过
- 问题1解决方案:当时反复检查代码觉得并没有问题啊,然后使用了代码调试一步步进行下去发现由于在if语句后加了一个;,导致throw语句一直能够进行,所以才会一直出现显示超出的提示。
代码托管
上周考试错题总结
问题1:We compare sorting algorithms by examining
A the number of instructions executed by the sorting algorithm
B the number of instructions in the algorithm itself (its length)
C the types of loops used in the sorting algorithm
D the amount of memory space required by the algorithm
E whether the resulting array is completely sorted or only partially sorted
分析:这道题考到的知识点为:不同的排序算法在执行时需要不同数量的指令。所以我们通过检查排序算法执行的指令数,来比较排序算法。所以应该选a。-
问题2:Polymorphism is achieved by
A . overloading(重载)
B . overriding(重写)
C . embedding(嵌入)
D . abstraction(抽象)
E . encapsulation(封装)
分析:这道题考查的是多态性是通过什么实现,我选择的是的抽象,而答案是b重写:重写提供了多态性,因为适当的方法是根据当前被引用的对象而调用的,所以应该是重写实现多态性。结对及互评
点评模板:
- 博客中值得学习的或问题:
- 严域俊同学在进行异常和错误的区别时进行了详细的描述并配了图
- 同时在根据自己代码中出现的问题又一次进行了查询和解答。
- 代码中值得学习的或问题:
- 这周我两就四则运算的最后结合部分进行了修改,但还是存在很多问题,我两也在不断地学习与探索过程中学到了很多,也希望能够按时完成四则运算吧。
- commit依旧很详细,有条理性。
点评过的同学博客和代码
- 本周结对学习情况
- 20172333
- 结对学习内容
- 学习第十一和十二章pp项目。
- 学习异常和递归的具体内容
- 对于IO操作的共同探讨
- 继续完善四则运算的的项目。
其他(感悟、思考等,可选)
这一周在做课后项目时问题不大,但是在做是四则运算的编写时遇到了很多问题,需要继续努力研究。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 180/180 | 2/2 | 20/25 | |
第二周 | 312/414 | 2/4 | 20/45 | |
第三周 | 557/971 | 1/5 | 25/70 | |
第四周 | 1217/2242 | 2/7 | 44/114 | |
第五周 | 734/2976 | 1/8 | 24/138 | |
第六周 | 523/3509 | 1/9 | 20/158 | |
第七周 | 697/4206 | 1/10 | 24/182 | |
第八周 | 1118/5324 | 3/13 | 30/212 | |
第九周 | 656/5980 | 2/15 | 20/232 |
计划学习时间:20小时
实际学习时间:20小时
改进情况:
这周对于课后练习做的没有那么吃力,但还是存在一些对于类的编写的问题,希望继续加油。