23172321 2017-2018-2 《程序设计与数据结构》第10周学习总结

23172321 2017-2018-2 《程序设计与数据结构》第10周学习总结

教材学习内容总结

  • 集合与数据结构

    • 集合是一种对象,类似于保存其他对象的存储库。我们常常用集合表示一个专门用于保存元素的对象,并且该对象还提供增添、删除等管理所保存元素的服务。
    • 集合分同构和异构

      同构:集合中保存的类型全部相同。

      异构:集合中可以保存全部的类型。

  • 数据结构的动态表示

    • 数组具有局限性,在存在期间具有固定的大小。动态数据结构的大小规模随需要增长和收缩。
    • 一个动态数据结构用链来实现,利用对象引用作为连接对象间的链。
  • 其他的动态列表
    • 双向链表
    • 头节点
  • 线性数据结构
    • 队列:队列是一种以先进先出方式管理数据的线性数据结构。

- 堆栈:堆栈是一种以后进先出方式管理数据的线性数据结构。

  • 非线性数据结构

    • 树:树是一个非线性数据结构,由一个根节点和构成层次结构的多个节点组成。除根节点外的所有节点称为内部节点,没有子节点的节点称为叶节点。
    • 图:图是 非线性数据结构,是用常见的编来连接节点。
  • java集合类API
    • 泛型:只一个集合所管理的对象的类型要在实例化给集合对象时才确定。

教材学习中的问题和解决过程

  • 问题1:ArrayList和LinkedList类的区别
  • 问题1解决方案:
      1. ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构;
      1. 对于随机访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针;
      1. 对于添加和删除操作add和remove,一般大家都会说LinkedList要比ArrayList快,因为ArrayList要移动数据。
  • 问题2:泛型是什么
  • 问题2解决方案:

代码调试中的问题和解决过程

  • 问题1:在进行pp13.3时,我先想的是在向链表里添加对象时就完成排序

但是它就是显示有错,然后我决定先不变加入对象的方法,等对象全部加进去了,在用一个方法进行排序,于是改编了之前写的一个向链表里插入的方法,可以把对象与其他进行比较,再插入到顺序位置,像这样

这样子已经可以实现了,但是再编写这个方法的时候,我发现之前报错的原因好像就是我进行比较的类型不对,于是我又想办法让在向链表里添加对象时就完成排序

很可惜还是失败了。

  • 问题1解决方案:最后我还是决定就用一个单独的方法进行排序,但是我再按Ctrl+z的时候多按了几下,不知道后退到哪步了(我简直要窒息了),又输不出东西了,最后照着那张不完整的截图,改了又改,大概可以输出这样了

代码托管

上周考试错题总结

  • 错题1及原因

The following method should return true if the int parameter is even and either positive or 0, and false otherwise. Which set of code should you use to replace ... so that the method works appropriately?
public boolean question3(int x) { ... }
A . if (x = = 0) return true;else if (x < 0) return false;else return question3(x - 1);
B . if (x = = 0) return false;else if (x < 0) return true;else return question3(x - 1);
C . if (x = = 0) return true;else if (x < 0) return false;else return question3(x - 2);
D . if (x = = 0) return false;else if (x < 0) return true;else return question3(x - 2);
E . return(x = = 0);
正确答案: C 你的答案: A
我当时想了好一会,本来想自己在idea上实验一下的,但是感觉时间不够了,就没有试,结果想错了。

  • 理解情况

该方法会递归地让自己从X-2,直到X=0或X<0。如果X=0,那么它X-2i==0或X=2i,所以X必须是偶数。否则,递归在X<0时结束,也就是说,原来的X是奇数或小于0

  • 错题2及原因

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 你的答案: C
我当时依稀记得在哪里看到了他们两个应该是有些区别的,但是没有仔细去回想,就选了一个C

  • 理解情况

无限循环和递归都是相似的,因为它们会无限地重复。既不能被编译器捕获,也不能被运行时捕获。

  • 错题3及原因

We can define a list of int values recursively as: a list_item, followed by a comma, followed by a list where a list_item is any int value.
A . true
B . false
正确答案: B 你的答案: A
当时没觉得哪里不对,唉,太年轻。

  • 理解情况

递归定义不包含一个基例,使得INT值的所有列表都将无限长

  • 错题4及原因

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 你的答案: A
我当时没有考虑周全,下意识地感觉是对的

  • 理解情况

对于大于或等于零的INT,该加法方法是可以完成得;但如果B小于0,则该方法就会失败。

结对及互评

评分标准

点评模板:

  • 博客中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...

点评过的同学博客和代码

  • 本周结对学习情况

    • 结对同学学号1
    • 结对照片
    • 结对学习内容
      • XXXX
      • XXXX
      • ...
  • 上周博客互评情况
    • 学号1

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

  • 挺好的,这本书终于学完了。
  • 最近两周的测试结果不好,看书的时候总觉得还行,做起测试来就很难受,有点烦躁。
  • 总之,人丑就要多读书嘛,这本书其实我的掌握还不是很牢固,还是需要多多复习的,要经常翻翻,温故而知新。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 189/189 1/1 18/18
第二周 250/439 1/2 21/39
第三周 437/876 2/4 25/64
第四周 459/1335 2/6 21/85
第五周 547/1882 1/7 20/115
第六周 592/2474 2/9 25/150
第七周 782/3256 1/10 29/179
第八周 830/4086 3/13 40/219
第九周 1300/5386 2/15 40/259
第九周 1000/6386 1/16 26/285

参考资料

原文地址:https://www.cnblogs.com/N-idhogg/p/9063994.html

时间: 2024-10-12 18:34:19

23172321 2017-2018-2 《程序设计与数据结构》第10周学习总结的相关文章

20172305 2017-2018-2 《程序设计与数据结构》第一周学习总结

20172305 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书的第一章简单的介绍了计算机和JAVA的历史,基础内容很多,代码的讲解还没用正式进入,本周一直在做敲代码的准备,简单敲了老师给的"Hello World!"以及书后的PP1.3.PP1.4等简单的小程序. 教材学习中的问题和解决过程 问题1:三种不同类型的错误,运行错误和逻辑错误的混淆 问题1解决方案:针对EX1.20的"希望做加法时却做里乘法"进行了网上

20172314 2017-2018-2 《程序设计与数据结构》第一周学习总结

20172314 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令.在接下来的Java编程语言与程序开发部分,开始看的时候有点迷茫,不是很理解,后来先按照作业中附带的流程完成一些代码托管之后,接触了完整的简单的程序之后,再回过头来看书,看到的一些陌生的名词在脑海中就有了实际的对应,

20172317《程序设计与数据结构》第一周学习总结

20172317 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 重新温习了一遍计算机的基础 总算了解了局域网广域网因特网万维网这些东西之间的区别了 通过URL的例子知道了网址各个部分的含义 对Java编程语言和程序开发有了一个粗浅的了解 教材学习中的问题和解决过程 问题:练习题SR1.13出现了答案与题目不相符的情况 问题解决方案:题中有个选项是"网卡",答案中没有,反而有个题目没有的选项"调制解调器"(俗称"

20172322 2017-2018-2 《程序设计与数据结构》第二周学习总结

20172322 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 了解了print与println的区别 了解了字符串的拼接可以用+来完成 了解了转义字符的使用 学会了使用赋值 学会使用部分算术运算符 学会了使用Scanner来实现交互性 教材学习中的问题和解决过程 问题1:在最初接触赋值时对foalt和double的赋值范围不了解 问题1解决方案:使用万能的度娘后看到一个高赞答案后有了了解 问题2:在提前预习时看到2.7图形后敲入的代码无法执行 问题2解决方案

20172328《程序设计与数据结构》第二周学习总结

20172328李馨雨<程序设计与数据结构>第二周学习总结 又到周五,李馨雨同学要开始写博客了.让我们开始吧!(????) 教材学习内容总结 1.首先是String类定义的字符串,然后是print和println的区别.转义字符的学习.(让我印象深刻的\b[回车符]在字符串结尾不显示哈哈,及其更新的\t[换行符],还有在课堂上真正明白了什么是回车.) 2.了解变量.常量.赋值语句.变量:保存数据的内存单元.常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限.去修饰符等等.没实

20172327 2017-2018-2 《程序设计与数据结构》第二周学习总结

20172327 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 字符串的拼接和转义序列的使用 变量的声明和使用 讨论语法及表达式的处理 定义数据转换类型和实现类型转换的机制 创建Scanner类 教材学习中的问题和解决问题 暂无 代码学习中的问题和解决过程 问题1:在提交过程中,突然遇到无法上传的情况 问题2解决方案:通过上网查找,输入git pull之后弹出一个编辑框,选择关闭之后,再次用git push就成功了. 问题2:在按照例题2.10打代码时,Jav

学号20172328《程序设计与数据结构》第九周学习总结

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息

20172326 《程序设计与数据结构》第九周学习总结

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常(exception):定义非正常情况下或错误的情况的对象,由程序或运行时环境抛出,可根据需要进行相应的捕获处理. 异常与错误的区别:错误代表不可恢复的问题并且必须捕获处理.而异常可以忽视,或者使用try语句处理,或调用更高级的方法. 可检测异常与不可检测异常:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来.在方法定义的声明头中追加一条throws子句.不可检测异常不需要使

20172322 2017-2018-2 《程序设计与数据结构》第九周学习总结

20172322 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常 学会了使用try-catch来实现未捕获的异常的处理.可以使得异常被捕获进而不导致程序出现错误退出.使用try写入可能产生异常的语句,使用catch来编写在捕获异常后继续执行的代码(可以为空). "未捕获的异常"指在编译过程中不会被编译软件显示异常但是在运行时会出现异常导致程序直接退出,例如:"ArithmeticException"."In

20172311 2017-2018-2 《程序设计与数据结构》第九周学习总结

20172311 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 本周对异常和递归进行了学习 异常的处理方式有两种:一种是直接抛出,并从异常处终止程序:另一种是捕获并处理异常,从而使程序继续运行. 捕获和处理异常主要运用try-catch语句. 通过继承Exception类可以自定义一个新的异常 处理IO异常的常用方法是抛出异常. 对于某些问题,递归是最精炼和适当的解法,但对于其他问题,递归则不如迭代方法直接. 教材学习中的问题和解决过程 问题:什么是IO操作