2017《面向对象程序设计》寒假作业三
相同部分
两位合作者的学号和对应博客主页链接
-
031602334 温伊倩 http://www.cnblogs.com/qvq-qvq/
-
031602139 徐明盛 http://www.cnblogs.com/kofyou/
描述实现设计思路 -
使用rand函数随机生成四个数字和三个运算符号,并分别储存在两个数组中。
-
括号在算式中的位置情况有六种,随机选择其中的一种情况,引用计算结果函数。
-
在计算结果函数中用if条件语句分辨判断三个符号,若三个符号中没有除号,结合括号情况直接计算得结果;若有除号,写出分子和分母的表达式,再引用一个函数完成分数化简。
-
用户输入答案与程序计算结果相比较,完成输出。
你们订立的编码规范 -
参数名字、函数名字通俗易懂。
-
缩进合理。
-
一行不写多个语句。
-
语句之间讲究逻辑,合理排序。
-
在代码需要注意的地方写注释。
-
程序模块化,一个函数完成一个功能。
程序实现和结果测试的截图
github的提交链接和提交日志截图
两位同学的分工和协作证据截图
差异部分
合作过程
- 我在任务下达几日后才联系温伊倩同学。在我把我的可以生成随机数和随机运算符的一段程序发给她后,她直接把她已将可以运行的程序发给了我。她的程序已经有了一个合理的结构,包括用户界面的输出、题目的生成、结果的计算和最终反馈给用户的界面,她用了不同的函数分别完成不同的功能。这个程序为了计算结果采用的是详尽的分类讨论,虽然繁琐但是一目了然。此外她还探索了使用递归计算结果的方式。我感叹她的行动力,但还好我也还有可以做的事情:这个程序的计算还没有带入括号的讨论以及分数的计算。之后我们把她的程序作为初版,开始逐步完善它所欠缺的功能。我修改了一些地方为今后程序的逐步完善做铺垫并在我们加入了括号的讨论后,以她的分类讨论为模板,完成了分数的计算方式,在这个程序中又添加了分数化简、计算公因数的函数。因为括号位置的不同,我们总共需要六个计算结果的函数。这项工作比较乏味,需要在模板函数上添加括号、写出分子分母的表达式,机械而重复。我写了其中四个,她写了两个并且还为程序加上了英文版输出。在完善这个程序的过程中,我修复了一个bug,而我的伙伴修复了三个bug。
合作体会
- 从前都是独立编码,按着自己的思路一直走下去,未曾有什么思想的碰撞。如今第一次合作编码,写了有史以来最长的程序,有许多感想体会。
- 一是合作需要一个有能力的领导。这位领导需要给程序分块,将不同块的交给不同的人完成,一人只要专心做一事,提高了效率。
- 二是代码要有可读性。代码给队友读起来要通俗易懂,难处添加注释。这次合作中我的队友就做得很好,给重要语句添加了注释,给不同函数的功能也添加了注释。而我此前没有这样的习惯,非常惭愧。
- 三是意识到思想的多样性。当队友之间互相描述思路时,或者在你看队友的代码时,你会发现人与人可以如此不同。他的思路于你是一条从未走过的路。我从前独立编码时并不喜欢看别人的程序,心想我有我的思想,并不喜欢跟着你走。现在看见别人的思路
如此不同时会感到很新奇,会自己问自己为什么当初没有想过这样的方法,并且比一比,谁走的路更短。要是他的路更短,我会由衷地感到好厉害。 - 四是编码需要专心与细致。此次编码我和我的队友使用了最繁琐的分类讨论,很容易产生倦怠感并出现错误。这是对我们的一次很大考验。此外我也对自己抱有十足信心,我们考虑到了绝大多数可能出现的问题。
- 五是学无止境。我们运用了最容想到却也相当繁琐的方法,我也看到有其他同学采用了“更聪明”的做法。我暂时无法做到,以后可以。
- 六是要把握时间啊。。。。。。