3.1.2 generateMagicSquare(). 1
3.2.1 Problem 1: Clone and import 2
3.2.2 Problem 3: Turtle graphics and drawSquare. 2
3.2.3 Problem 5: Drawing polygons. 2
3.2.4 Problem 6: Calculating Bearings. 2
3.2.5 Problem 7: Convex Hulls. 2
3.2.6 Problem 8: Personal art 2
- 实验环境配置
在这里给出你的GitHub Lab1仓库的URL地址:
https://github.com/ComputerScienceHIT/HIT-Lab1-120L021525
请仔细对照实验手册,针对四个问题中的每一项任务,在下面各节中记录你的实验过程、阐述你的设计思路和问题求解思路,可辅之以示意图或关键源代码加以说明(但无需把你的源代码全部粘贴过来!)。
为了条理清晰,可根据需要在各节增加三级标题。
读取五个 txt 文件,判断其中的数据是否可以构成幻方(每一行、列、对角线上的数字和为一相同常数),如果是就返回true,否则返回false。
-
-
- isLegalMagicSquare()
-
按步骤给出你的设计和实现思路/过程/结果。
遍历文件(储存数据的矩阵)。途中判断矩阵行列数是否相等,不等返回false,并对是否有非法数据和非法分隔符进行判断,当出现时返回false。
建立一个数组,分别存储每一行、每一列、以及对角线上的数据和。每遍历到一个数字,就把数据加载到数组对应的位置,在遍历结束后,通过判断该数组各个数字是否相等,就可以判断是否是幻方。
-
-
- generateMagicSquare()
-
当输入的n为负数或偶数时,函数输出false结束。当输入合法时,按照所给算法构造幻方,并将其写入6.txt。
实现一个绘图工具Turtle graphics,画出一个正方形,通过多边形内角和公式得到正多边形内角或边数,计算从一个点到另外一个点所需要转过的角度,给定一系列点计算每次转过的角度并返回在集合中,凸包suanfa1,绘制图形,junit进行单元测试。。
如何从GitHub获取该任务的代码、在本地创建git仓库、使用git管理本地开发。
根据实验手册地址下载,使用git。
-
-
- Problem 3: Turtle graphics and drawSquare
-
每次旋转90°,画四次即可画出正方形。
与正方形类似,计算每次需旋转的角度和边数,可画出正多边形。
根据数学公式即可推出。
凸包算法,先找到最左下角点,然后计算每次最小偏移角对应的另外一个点,然后以该点为起点,重复操作,就可以得到一个点集,该点集就是最终结果。
不断改变图形的大小和颜色即可做到。
先存储到本地git仓库,然后使用push命令。
在人群中建立一个人际关系网,可增加新的人,在某两个人之间添加关系,并可求任两人之间的关系长。
-
-
- 设计/实现FriendshipGraph类
-
使用二维数组来存储图,数组中某个元素的值代表对应的 是否有社交关系。使用图的搜索算法即可求得任意两个顶点间的距离。
-
-
- 设计/实现Person类
-
给出你的设计和实现思路/过程/结果。
建立一个person类,用于储存人名。
-
-
- 设计/实现客户端代码main()
-
给出你的设计和实现思路/过程/结果。
实验手册已经给出大部分思路。
-
-
- 设计/实现测试用例
-
请使用表格方式记录你的进度情况,以超过半小时的连续编程时间为一行。
每次结束编程时,请向该表格中增加一行。不要事后胡乱填写。
不要嫌烦,该表格可帮助你汇总你在每个任务上付出的时间和精力,发现自己不擅长的任务,后续有意识的弥补。
日期 | 时间段 | 任务 | 实际完成情况 |
2022-05-02 | 20:00-21:30 | 编写问题1 | 按计划完成 |
2022-05-03 | 13:00-20:00 | 编写问题2 | 第二天完成 |
2022-05-06 | 14:00-19:30 | 编写问题3 | 按计划完成 |
遇到的困难 | 解决途径 |
此前未接触过Java | 通过网课和博客自学 |
从零开始学习了Java和git的基础应用。
- Java编程语言是否对你的口味?与你熟悉的其他编程语言相比,Java有何优势和不足?
相比于C语言,Java更加方便,有很多功能已经实现过了。
- 关于Eclipse或IntelliJ IDEA,它们作为IDE的优势和不足;
Eclipse的UI界面对用户不友好。看上去很难受。
- 关于Git和GitHub,是否感受到了它在版本控制方面的价值;
除了连接速度实在捉急之外,没感觉到什么缺点。
- 关于CMU和MIT的作业,你有何感受;
考察的比较多,任务量较大。
- 关于本实验的工作量、难度、deadline;
新人第一次接触Java,在从头开始学的情况下任务量还是挺大的。
- 关于初接触“软件构造”课程;
软件构造这门课程很有意义,通过自己设计代码去实现一些功能,比如画图,算magicsquare 都很有趣。