软件构造lab1心得体会

一.实验心得

        第一,编程课一定要动手!编程课不去敲代码是绝对不行的,习题课的内容、实验课的内容也要亲自动手去敲。因为很多东西你只学理论是永远学不明白的,这个实验中,动手亲自去打对面对对象编程等各种概念才有了自己初步的认识。

        第二,提前了解java编程很重要。学了Java才后知后觉,用Java实现数据结构里的链表、树、图有多么轻松!面向对象编程的实现和测试优先等编写策略,都是自己之前没体验过的,需要努力适应。

        我觉得以上两点是你学好这门课的基础,C语言教我们从无到有,而软件构造则教我们从有到好,进一步了解编程的世界。

二.下面是对lab1具体任务的描述:

1.Magic Squares (MIT)

      任务一:能够从五个已经提供的txt文档中读入数据,来判断输入的数据能否构成一个MagicSquare,若是则返回true,若不是则返回false且说明原因。MagicSquare是一个正方形图形,他的每一行、每一列和对角线的数字之和都相等。

        任务二:对给出的generateMagicSquare函数进行扩充,使之能够产生一个MagicSquare并且将其输入到文本6.txt中,然后对其判断是否为MagicSquare。并且满足若输入的为奇数能产生MagicSquare,而输入偶数或者负数会返回false。

        这个问题思路并不难,按部就班一条一条来就可以,困难主要在于第一次接触Java,适应较慢以及之后使用Git提交。

        这其中比较难理解的是任务二中的方法实现:        

        该函数要实现生成一个奇数阶的幻方,这个方法是为罗伯法。

        1)每一个数放在前一个数的右上一格;

        2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;

        3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;

        4)如果这个数(例如6)所要放的格已经超出了顶行且超出了最右列那么就把它放在它的下一行同一列的格内;

        5)如果这个数所要放的格已经有数填入,处理方法同4)。

2.Turtle Graphics (MIT)

       这次任务是为了实现一个绘图工具Trurtle Graphics,需要我们完成的任务为:画出一个正方形,计算正多边形内角,由正多边形内角得到边数,计算从一个点到另外一个点所需要转过的角度,给定一系列点计算每次转过的角度并返回在集合中,计算一系列点中的凸包,调用函数绘制图形,使用junit进行单元测试。

       问题的关键在于计算从一个点到另外一个点所需要转过的角度,利用atan2()函数得到弧度,再用toDegree转换为度数,根据如下数学关系得出偏转角。需要注意的是,若角度为负值则加360.

       另一个计算给定集合中的凸包需要利用Graham扫描法算法,先找到最左下角的点加入集合,然后比较剩余点到此点的偏转角,找到偏转角最小的加入集合,当偏转角相同时,需要找到最长的一条边的点加入集合,最后即可得到凸包的点集。

3.Social Network (CMU)

       本次任务要求实现Person和FriendshipGraph两个类,用FriendshipGraph来构建Person之间的关系来模拟社交网络,能够计算出每两个Person之间的最短路径。

        这个任务的实现整体并不难,构造好测试用例,源程序的编写中只需要注意广搜算法(BFS)即可。

三.关于git

        这个实验的另一个目的是教会大家使用git。关于git的使用,我确实遇到了很多问题,注入unable to success等等,但是最后我找到了一种方法成功完成了上传,就是ssh协议的方法。首先,在本机生成github密钥,并在github的setting中进行密钥设置,之后更改.git文件目录下的config配置文件,增加user的描述,之后通过git remote add origin+ssh信息即可完成链接,之后push即可。但是如果我们想熟练运用git这一工具(甚至只是在考试里面得到关于git代码那道题的分),这一点还远远不够。因此,绝不能满足于这一实验之内用到的git知识,而应该更多地了解这一有力的工具。

四.其他感想

        无论对于哪个实验,最需要注意的一点就是时间,软件构造实验和之前的其他实验不同,所需要的周期更长,所以大家最好从一开始就开始弄,不要拖到最后,否则会导致验收的时候十分紧张,要是撞上考试周那更是难上加难。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值