结对编程-第一阶段
一、实验目标:
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、查阅相关资料加深对敏捷开发和结对编程的理解
1. 敏捷软件开发,又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种能应对快速变化需求的软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。
2.结对编程是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。他不仅意味着编程活动,也包括分析、设计、测试等全程活动。
在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。其基础是会话和讨论,由于疫情原因,我们采取了github托管项目,利用网络进行面对面的编程。
四.实验过程
1.组队情况
结对编程,关键在于结对,所以在老师的安排下,我们在线下两两自由组队,下表是我们队的信息:
| 队伍名称 | 队员 | 博客地址 | 仓库地址 | 选择课题 |
| L$Y | 吕亚楠 | https://www.cnblogs.com/duoroubenben/ | 四则运算 | |
| 欧阳楠楠 | https://www.cnblogs.com/ououou/ |
2.问题描述
开发一个自动生成小学四则运算题目的命令行“软件”。实现输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。
规则:
用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分。
3.实现结对编程
按照传统方式我们应该是两人共同用一台电脑,在编程时一起讨论;但是很明显现在实现不了,所以进我们商量决定利用qq屏幕分享的功能进行讨论。并且利用git hub建立远程仓库进行托管。关于所选的编程语言,我们经过考虑还是决定选择c语言,因为它是我们比较熟悉的语言。
我们已经建立好的仓库:

4.思路
首先拿到题目的时候,在还没组队的时候我们分别有对题目做出自己的见解和解题思路,所以当我们组队的时候我们有先做讨论,各自提出对题目各个要求的自己想法,我们对各个要求的解决方案都有大致想到,但实际上的编程却有一部分没能实现,这一点是受限于我们两人的编程能力不太强。题目是随机生成四则运算,首先我们就是设置一个随机数,这个随机数的取值范围由1到2(因为此次我们实现的顶多为两个运算符),然后再用switch语句根据生成的值转入到对应的运算符数量函数,加减乘除号的随机生成运用了rand函数来随机生成一个1到4的变量,分别对应加号,减号,乘号,除号,在这里当运算符为除号的时候我们采用了辗转相除法,写一个gcd函数来求出两个数的最大公约数,这样来实现输出分数的要求,生成答案和试题文件的话,我们则是通过先定义两个文件指针,指向相对应要写入的文件(Answer.txt和Exercise.txt),然后生成文件并打开文件,通过fprinft将生成的题目和答案写入到相应的文件。
经过讨论,我们在第一阶段目前确定的是课题,讨论方式,编程语言及平台,和初步的思路。

浙公网安备 33010602011771号