HIT2020 軟件構造lab1心得體會

[軟件構造] 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

這個實驗是有關幻方的,我對於幻方最初印象來源於小時候看過一本書,書的封皮就是一隻龜,大致如下圖所示:

要求1是有關幻方的判定,給定一個數據文件txt,判斷是否符合幻方的定義,同時對輸入文件的各種特殊情況進行相應的處理。

其中的一個小難點在於數字之間並非使用\t 分割這種特使情況的處理。
該問題的我會的處理方法有兩種

  1. 採用正則表達式。這種方法能夠極大程度的簡化代碼,使代碼更加簡潔。
  2. 逐個檢查split劃分之後的每一位數字。(其實split方法就是將字符串根據正則表達式進行劃分)

要求2是對幻方生成方法進行測試。該生成方法名爲奇數階幻方構造法,具體說明可查閱維基百科上的說明。具體原理好像和拓撲有關,可以將上下左右粘合在一起形成一個球,然後進行分析。

2.2 Turtle Graphics

python的標準庫裏也有和Turtle Graphics相似的方法。這個實驗是上手很簡單,按照MIT的實驗指導,一步步地做即可,能夠學到不少和Git和JUnit有關的知識。

最大的難點在於Convex Hulls凸包的計算,這是一道非常典型的計算幾何的問題,這學期的算法設計與分析課程也涉及到了凸包的Graham掃描法和Jarvis步進法。這道題中最困難的地方在於對邊界值的處理,即對於在凸包邊上的頂點的處理過程,我的處理方法是另外增加了一個求兩點之間距離的函數用來輔助計算。

最有趣的Problem是最後一個,自己畫一個藝術圖,只需要簡單的幾行代碼,調用底層的函數,即可畫出極富對稱性的圖畫。

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出現如下錯誤:

解決辦法建議查看文章
將yml文件修改爲:

language: java
sudo: false
jdk:
  - openjdk8

之後再進行build即可成功:

4、總結

lab1實驗總體來說並不難,只是給大家足夠的時間對java及相關的各種工具有個熟悉和了解,爲之後的實驗打好基礎。
三週的時間非常充足,在做實驗的同時,也可以多抽出一些時間學習一下java的語法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章