欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[软件构造] 01 lab1的心得体会

程序员文章站 2022-07-14 21:14:29
...

[软件构造] 01 lab1的心得体会

由于疫情影响,学校还没开学,因此第一次在家做实验。lab1还是非常简单的,仅仅是对Java基础编程的熟悉和训练,因而我做的也算比较快的,大概一周时间(其中除去上课时间等)就做完了,中间还拖了两三天找算法设计与分析课的大作业论文,不得不说搞科研和做工程实践二者之间的gap和难度都实在是太大了。

1、实验环境的配置

按照MIT 6.031的Getting Started的指导,一步步的配置环境。
我自己在配置环境中认为比较重要的有以下几点:

  1. JDK环境变量的修改,这个在安装JDK时十分重要,修改方法参考百度。
  2. Git学习:可以参考Git官网的学习手册,但本课程只用到了一些简单的命令,像分支等内容几乎没有涉及,因此只需熟悉Git本地库的三个区(工作区,暂存区,本地库)和有光Github远程库的相关操作即可。

2、Lab1实验内容

这学期的实验比以往少了两个,lab1内容也减为了3个组装实验(均来自MIT和CMU),接下来简要分析以下这3个实验。

2.1 Magic Squares

这个实验是有关幻方的,我对于幻方最初印象来源于小时候看过一本书,书的封皮就是一只龟,大致如下图所示:
[软件构造] 01 lab1的心得体会

要求1是有关幻方的判定,给定一个数据文件txt,判断是否符合幻方的定义,同时对输入文件的各种特殊情况进行相应的处理。

其中的一个小难点在于数字之间并非使用\t 分割这种特使情况的处理。
该问题的我会的处理方法有两种

  1. 采用正则表达式。这种方法能够极大程度的简化代码,使代码更加简洁。
  2. 逐个检查split划分之后的每一位数字。(其实split方法就是将字符串根据正则表达式进行划分)

要求2是对幻方生成方法进行测试。该生成方法名为奇数阶幻方构造法,具体说明可查阅*上的说明。具体原理好像和拓扑有关,可以将上下左右粘合在一起形成一个球,然后进行分析。

2.2 Turtle Graphics

python的标准库里也有和Turtle Graphics相似的方法。这个实验是上手很简单,按照MIT的实验指导,一步步地做即可,能够学到不少和Git和JUnit有关的知识。

最大的难点在于Convex Hulls凸包的计算,这是一道非常典型的计算几何的问题,这学期的算法设计与分析课程也涉及到了凸包的Graham扫描法和Jarvis步进法。这道题中最困难的地方在于对边界值的处理,即对于在凸包边上的顶点的处理过程,我的处理方法是另外增加了一个求两点之间距离的函数用来辅助计算。

最有趣的Problem是最后一个,自己画一个艺术图,只需要简单的几行代码,调用底层的函数,即可画出极富对称性的图画。
[软件构造] 01 lab1的心得体会

2.3 Social Network

这个实验简直就是数据结构的java版,hhh…
最关键的地方在于考察对java容器类的使用和图的搜索策略等图算法,建议使用邻接表的图。

3、在线build

在提交至 GitHub 仓库前,请将实验代码从 Eclipse 环境脱离开来,建议你自行使用 JDK、Ant (http://ant.apache.org)、Maven (http://maven.apache. org)、Gradle (https://gradle.org)等工具进行 build,或者在提交至 GitHub 仓库之后使用 Travis-CI (https://travis-ci.org)进行在线 build。如果因为缺少某些库文件导致你的程序无法运行,TA 不再为其评分。

根据实验要求,我采用的是maven加Travis-CI的在线build方法。强烈建议阅读学长的文章
我在线build出现如下错误:
[软件构造] 01 lab1的心得体会
解决办法建议查看文章
将yml文件修改为:

language: java
sudo: false
jdk:
  - openjdk8

之后再进行build即可成功:
[软件构造] 01 lab1的心得体会

4、总结

lab1实验总体来说并不难,只是给大家足够的时间对java及相关的各种工具有个熟悉和了解,为之后的实验打好基础。
三周的时间非常充足,在做实验的同时,也可以多抽出一些时间学习一下java的语法。

相关标签: 软件构造