20182303 2019-2020-1 《数据结构与面向对象程序设计》第1周学习总结
目录
教材学习内容总结(教材第一章内容)
1.简单学习计算机和Java的最最最最基础知识,完成我的第一个Java程序,以及作业PP1.3,PP1.8。
2.面向对象编程思想(举个例子:五子棋):
-
面向过程(首先分析问题的步骤):1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现。
-
面向对象:1、黑白双方,这两方的行为是一模一样的;2、棋盘系统,负责绘制画面;3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
面向对象的通俗解释
3.java运行步骤:
-
.java文件->编译->.class文件
-
.class字节码->jvm(java虚拟机,也叫JDK)解释->执行。
教材学习中的问题和解决过程
- 问题1:支持面向对象程序设计的基本概念是什么?(SRA1.8)
- 问题1解决方案:课本答案:支持面向对象程序设计的基本元素:对象,类,封装,继承。
- 问题2:标识符args有什么意义,可以用其他标识符替换吗?
- 问题2解决方案:java规定main方法参数必须为字符串数组(String [ ]),args是一个字符串数组的变量名(arguments的缩写),只是一个默认名,一般习惯性照写。
- 问题3:为什么其他许多语言在编译时将源代码直接转为具体的机器语言,而编译运行Java程序过程中需要字节码作为中间步骤?
- 问题3解决方案:我们编写的程序在不同的平台上运行前都要经过重新编译才能被执行。而Java刚诞生的时候曾经提过一个非常著名的宣传口号: "一次编写,到处运行"。
可运行在许多不同平台的JVM虚拟机都拥有一个共同的功能:可以载入和执行同一种与平台无关的字节码(ByteCode)。 这样源代码不再必须根据不同平台翻译成0和1,而是间接翻译成字节码,储存字节码的文件再交由运行于不同平台上的JVM虚拟机去读取执行,从而实现一次编写,到处运行的目的。
代码调试中的问题和解决过程
-
问题1:当install时,给出下面提示:
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarly unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is an other process using it?
-
问题1解决方案:
1、kill当前进程(百度提供,但没成功...)
2、删除锁定文件(成功)sudo rm /var/lib/dpkg/lock-frontend sudo rm /var/lib/dpkg/lock
-
问题2::在apt-get update vim的时候,提示(和问题1类似):
E: Could not get lock /var/cache/ apt/archives/lock - open (11 Resource temporarily unavailable) E: Unable to lock the download directory
-
问题2解决方案:
sudo rm -rf /var/cache/apt/archives/lock sudo apt-get update
-
问题3:git push后,提示:
! [rejected] master -> master (fetch first) error: failed to push some refs to 'https://gitee.com/zhang_duanyun/GitGit.git' hint: Updates were rejected because the tip of your current branch is behind its remote counterpart. hint: Integrate the remote changes before pushing again. hint: (e.g.'git pull …') hint: See the ‘Note about fast-forwards’ in ‘git push --help’ for details.
-
问题3解决方案:在码云新建过项目后复制链接,git clone之后会在Home目录下自动创建一个和项目名称相同的目录,要进入项目名称目录下git push。
代码托管
上周考试错题总结
- 判断:Linux Bash中, 可以使用man printf查看C语言中printf函数的帮助文档。 (x)
- 分析:man 3 printf才是真正的查询C库函数里的printf函数
- 填空:Linux Bash中,(cheat find )命令可以查年find命令的使用示例。
- 分析:
cheat命令简单来说,就是告诉你一个命令如何使用。它没有提供其他额外多余的信息,只通过使用实例告诉你一个命令如何使用。
结对及互评
点评
- 博客中值得学习的或问题:
- 博客整体内容翔实,对课本知识有着深入的学习和思考。
- 改进:教材学习内容总结部分可以再简洁一些。
- 基于评分标准,我给本博客打分:13分。得分情况如下:
- 语法正确(1)、要素齐全(1)、排版简洁(1)、感想真实(1)。总结了很多问题和解决方案(6),如实记录了学习时间(1),结对学习情况真实可信(1),有动手敲新代码(1)。
本周结对学习情况
-
结对学习内容
- 讨论字节码在Java程序编译执行过程中的作用。机器码是电脑CPU可直接读取的数据,但不同CPU有不同机器码与之对应。字节码是源代码转换为机器码的中间状态,在运行时通过JVM(JAVA虚拟机)做一次转换生成机器指令,因此能使Java程序更好的跨平台运行。
- 互帮互助完成vim配置,互对讨论教材课后练习题答案。
感悟
正式学习Java的第一周,配置vim编辑器(加入头部注释、行号、高亮等一系列对敲代码友好的功能),并通过添加页面定制CSS代码使自己的博客园页面更美观(接下来希望在写博客过程中摸索一些让自己博客排版更清楚美观的方法),在这些过程中不停地碰壁,不停地寻找如何解决,由于还什么都不懂,所以只能通过尝试来确认自己搜到的解决方式是不是正确,终于体会到什么叫“没有结果就是最好的结果”。
除此之外,在刚开始敲最简单的代码时,发现自己很容易丢三落四(eg.System‘S'忘记大写,String写成Strings等),之后的学习中,一定要细心细心再细心,多动手敲代码,才能知道自己会犯什么错误并且及时改正。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 10000行 | 30篇 | 400小时 | |
第一周 | 254/254 | 2/2 | 21/21 | 开始编写简单的程序 |
-
计划学习时间:20小时
-
实际学习时间:21小时