您的位置:首页 > 理论基础 > 数据结构算法

20162330 2016-2017-2《程序设计与数据结构》第1周学习总结

2017-03-05 12:21 344 查看
2016-2017-2 学习总结目录: 1 2 3 4 5 6 7 8 9 10

20162330_刘伟康_ 第1周学习总结

教材学习内容总结


本周主要学习了课本第一章绪论,其简要内容如下:



学会编写1.1这个简单的java程序和几个简单的脚本;

了解类定义、注释及标识符概念;

学习并安装java的编译程序和解释程序,了解编译,解释java源代码的过程;

了解开发java程序时的三类错误;

了解空白的合理使用,让程序易读且易懂(这方面还需要琢磨和练习)。

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

1.Windows下安装git之后,无法将win10升级到最新版本,并且无法在windows功能中完成请求的更改,总是显示错误代码(如下图)从而无法安装Linux Bash环境。


解决方案:按照所给出的帮助一步一步做下去,最后还是没有更改,于是就决定重装系统,我使用了一个叫做“云骑士一键装机”的软件,选中的系统是win10专业版(我绝对看清楚了),安装后却变成了win8专业版,于是我又重装了一遍,win10企业版,这次版本没有问题,只是之前备份的文件全都显示没有备份,从而无法恢复,寒假我就搜索了一下关于一键ghost及还原系统的问题,如今还是没能解决,还要再琢磨一阵,不过终于可以进行windows更改了,然后又装了一遍虚拟机,周一到周三的时间全做这件事了,有点可惜,不过主要问题顺利解决了。

(关于“一键装机”一类的软件建议大家慎用,重装系统还是使用U盘制作比较可靠)

2.运行bash命令闪退问题。

解决方案:在设置里找到使用开发人员功能,启用开发人员模式,仅在windows应用商店中不能安装一些高级开发功能。

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

1.在vim编辑好代码之后,在标准模式下输入“:wq”没法退出。

解决方案:先使用:q! 强制退出,然后 sudo vi Hello.java 编辑后就可以使用“:wq”退出。

2.选择安装了java编译程序ecj软件包,却无法运行java程序。(如下图)



解决方案:使用“sudo apt-get install default-jdk”安装了另一个软件包,之后可以运行了,可能是ecj软件包的兼容性问题。

(前两个问题与朱娅霖同学的问题相似,可做如下连接的参考:在运行hello.java程序时的问题Intellj IDEA 简易教程

3.无法运行shell脚本程序。

解决方案:编写相同的java程序。出现这种问题主要是因为我没有弄懂脚本程序和java程序的代码的区别,所以导致我开始把书上1.1的程序错当成脚本编辑,从而运行错误,遇到这种问题的人可能就只有我了吧,脚本一般以“#!/bin/sh”开头,有sh标注,而java程序中的main方法的前面总有关键字public、static和void,编写代码时我还要多留心观察,不能盲目编写。

4.关于atom软件包无法定位的问题。(如下图)



解决方案:输入sudo add-apt-repository ppa:webupd8team/atom

按一下回车键,等待一会儿后

sudo apt-get update,之后

sudo apt-get install atom 等待安装即可。

(关于第一行代码的具体含义可使用baidu搜索)

(附链接:关于atom软件包无法定位的问题

代码托管

(由于我之前使用windows bash环境,之后又用虚拟机,所以都截图了,以后尽量用虚拟机)

代码提交过程截图:





代码量截图:





week1:





上周考试错题总结

1.填空:Linux Bash中,可以使用help,man和(info)命令查找命令的帮助信息。

错误原因:看到查找之后就写了一个find,而find命令是查找一个文件的位置。info是查找命令的帮助信息。

加深理解:三种命令的区别:help命令只能显示shell内部的命令帮助信息。而对于外部命令的帮助信息只能使用man或者info命令查看。man是在程序安装的时候安装的帮助文档,可以在系统的目录下找到,如果软件有配套的页面,就可以使用man来查找。info指令是man 指令的详细内容。

4.判断:Linux Bash中, 可以使用man printf查看C语言中printf函数的帮助文档。 (x)

错误原因:不理解printf是什么。

加深理解:
man printf
显示的分类为“printf(1)”,而在帮助文档中,1代表用户命令帮助,所以
man printf
相当于
man 1 printf
,而
man 3 printf
才是库函数调用帮助。参考此链接

man
手册区段如下:

区段说明
1一般命令
2系统调用
3库函数,涵盖了C标准函数库
4特殊文件(通常是/dev中的设备)和驱动程序
5文件格式和约定
6游戏和屏保
7杂项
8系统管理命令和守护进程
man printf
命令运行如图所示:



6.填空:在 Linux 里面可以使用使用(chmod)命令修改文件的权限。

错误原因:不熟悉该命令的使用,实验楼的实验不够认真。

加深理解:一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件。每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)就对应这一个 "rwx",也就是一个 '7' ,r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

8.填空:Linux中没有C盘,D盘,其文件系统的目录是由(FHS)标准规定好的。

错误原因:不理解FHS标准,没有在考虑的范围内。

加深理解:FHS是Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。

10.判断:Linux Bash中,pwd是passwd的缩写,可以修改用户密码。(X)

错误原因:思维定势,认为英语上password的简写就是pwd,Linux Bash中也一样。

加深理解: passwd是修改用户密码,而pwd命令用于显示用户当前所在的目录。

13.填空:Linux Bash中,使用(ls)命令列出文件和目录。

错误原因:在实验楼盲目练习,连最基本的ls还没理解。

加深理解:1. 命令格式:ls [选项] [目录名];2. 命令功能:列出目标目录中所有的子目录和文件。

14.填空:Linux Bash中,使用cat命令带行号查看test内容的命令是(cat –n test)。

错误原因:对cat命令掌握不熟练。

加深理解:cat命令用于读取指定文件的内容并打印到终端输出。

15.填空:Linux Bash中,使用echo查看环境变量PATH值的命令是(
echo $PATH
)。

错误原因:不确定,不熟悉,所以好像没写。

加深理解:读取变量的值,使用echo命令和\(符号(\)符号用于表示引用一个变量的值)。

17.判断:Linux Bash中,使用tar命令把home目录打包成home.tar的命令是( tar -cf home.tar ~)。

错误原因:只知道有tar命令,不知道其具体命令运行格式。

加深理解:例如创建一个 tar 包:
$ tar -cf shiyanlou.tar ~
,该命令中,-c表示创建一个 tar 包文件,-f用于指定创建的文件名,注意文件名必须紧跟在-f参数之后,比如不能写成
tar -fc shiyanlou.tar
,可以写成
tar -f shiyanlou.tar -c ~


18.填空:Linux Bash中,zip命令使用(-e)参数可以创建加密压缩包。

错误原因:实验楼忽略细节。

加深理解:创建加密zip包,使用-e参数可以创建加密压缩包,例如:
$ zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou


21.填空:Linux Bash中,使用grep查找当前目录下.c中main函数在那个文件中的命令是( grep main .c )。

错误原因:grep命令后的顺序错误。

加深理解:*.c 一般是后缀,grep命令运行后,输出的内容冒号之前表示用户,后面表示该用户所属的用户组。

22.填空:Linux Bash中,使用wc统计hello.c和main.c共有几行代码的的命令是( wc -l hello.c main.c )。

错误原因:不熟悉wc命令,没写。

加深理解:Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。格式:wc -l 。

24.填空:Linux Bash中,把ls命令显示当前目录的结果存入ls.txt的命令输出重定向命令是(ls > ls.txt)。

错误原因:不理解什么是输出重定向,好像也没写。

加深理解:
ls
:列出当前目录的内容。
.
:表示当前目录下。
sort
:进行排序。

错题原因总结:没有认真完成实验楼的任务,只是盲目地练习,缺少思考与记忆环节。

反思:虽然有相当多的一部分不太理解,但是可以通过实践来逐渐掌握和记忆,每周抽出固定的一部分时间巩固基础命令。

其他

感悟:本周是学习代码的第一周,我学习了java程序的安装环境,并且学会了编写几个简单的脚本程序和书上的java程序,需要注意几个问题:

不能盲目敲代码,要学会观察程序中的一些关键词,其次要注意学习安排,尽量不要把事情都挤到晚上熬夜完成作业(我晚上效率确实高),多增加白天有效学习的时间,逐渐学会思考,从而形成一种批判性思维(没那么容易的),觉得敲代码枯燥就去看看娄老师推荐的几本书,培养一定的专业素养,减少课余的无效时间,同时还要继续提升自己的英语水平。这周比较紧张完地成了学习任务,还要感谢舍友王彪、邻舍友张旭升等人的帮助,当然还有班级小组的王老师和娄老师,老师鼓励我通过搜索自己解决问题,我会逐渐改掉这种“懒于思考”的依赖的。

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周95/951/112/12学会了编写简单的脚本和课本上的java程序
(尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。)

参考:软件工程软件的估计为什么这么难软件工程 估计方法

计划学习时间:10小时

实际学习时间:12小时

有效学习时间:3小时

改进情况:提升学习效率,尽量在自己有兴趣的时候多做,按照重要又紧急、紧急但不重要、重要但不紧急、不紧急也不重要的顺序完成学习任务,并尽可能减少处理紧急但不重要学习任务的投入,增加重要但不紧急学习任务的投入,用课余时间积极主动敲代码,参考娄老师的教学进程主动预习。(没那么容易的)

(有空多看看现代软件工程 课件

软件工程师能力自我评价表)

参考资料

《Java程序设计与数据结构教程(第二版)》

《Java程序设计与数据结构教程(第二版)》学习指导

Intellj IDEA 简易教程

Ubuntu下git的安装与使用

使用开源中国托管代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: