实验二 结对编程第二阶段
实验目标
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
1、代码规范
(1)空行与空格:空行起着分隔程序段落的作用,空行得体将使程序的布局更加清晰。每当定义变量和函数后都要空行;空格可以避免代码混乱,所以关键字后面要留空格,赋值运算符、关系运算符等双目运算符之后也要留空格。
(2)缩进与对齐:缩进是通过键盘上的 Tab 键实现的,缩进可以使程序更有层次感。原则是:如果地位相等,则不需要缩进;如果属于某一个代码的内部代码就需要缩进。缩进是编写代码时重要的方法,他可以使程序更有层次感;对齐主要是指大括号“{”和“}”要对齐,互相占一行,不要先写左大括号,再写代码,然后再写右大括号,不过现在很多编程软件都是可以自动对齐的,很大的方便了开发人员的工作。
(3)代码行:if,else等语句后面不要更上执行语句,容易混乱且不美观,每一行代码不要有太多内容堆积,比如定义变量和赋值最好分两行代码,清晰明了。
(4)命名与注释
①变量与函数名字要具有意义,比如学生变量最好使用Student;注释部分放在那一行代码的后面,防止搞错,也方便之后的检查与修改。
②注释是对代码的“提示”,而不是文档。程序中的注释不可喧宾夺主,注释太多会让人眼花缭乱;
③因为如果代码本来就是清楚的,则不必加注释;
④边写代码边注释,修改代码的同时要修改相应的注释,以保证注释与代码的一致性,不再有用的注释要删除;
⑤当代码比较长,特别是有多重嵌套的时候,应当在段落的结束处加注释,这样便于阅读;
⑥每一条宏定义的右边必须要有注释,说明其作用。
2、程序的总体设计
3、结对编程过程:我和队友起初准备使用java进行编程,但是由于放假回老家农村,没有带电脑,无法运行代码,恰巧队友电脑的jdk不小心给删除了,所以临时改用C语言运行。我们使用Visual C++6.0来开发本次项目。之后我们开始预想程序的总体框架该是怎么样的,我们确定了主菜单 以及使用四个函数来分别实现四则运算,至于随机生成题目过程,我们使用的是random()函数。至于老师要求的在一百以内的运算以及除法必须是整除,我们则是在产生随机数之前添加了while循环语句,增加限制条件,成功实现了老师的要求。
我们是使用qq通话和发送讯息的方式来进行讨论和分享各自的方法的。这次实验,我们互相交换角色,刚开始是我初步的编写四则运算代码,之后他进行主菜单的编写,这是初步的代码,还存在很多缺陷。比如主菜单没有输入错误时的反馈,在他和我互相讨论之后他进行了修改之后,主菜单的问题得到了解决,但这是四则运算的函数得到的题目不是100以内的,经过我们两个的合作,我们在给出随机数时再加while循环语句以限制题目在100以内运算。这次结对编程实验,我们互相讨论,互相交流想法,起到了出其不意的效果,使得工作得到了很好的完成。
4、代码与运行情况
下面是代码和运行截图:
int right=0;
int wrong=0;
void add()
{
int a=51,b=51,c;
while(a+b>100||a+b<0)
{
a=rand()%100;
b=rand()%100;
}
printf("请回答:\n\t\t %d + %d = ",a,b);
scanf("%d",&c);
if(a+b==c)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
void minu()
{
int a=1,b=2,c;
while(a-b>100||a-b<0)
{
a=rand()%100;
b=rand()%100;
}
printf("请回答:\n\t\t %d - %d = ",a,b);
scanf("%d",&c);
if(a-b==c)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
void mul()
{
int a=20,b=10,c;
while(a*b>100||a*b<0)
{
a=rand()%100;
b=rand()%100;
}
printf("请回答:\n\t\t %d * %d = ",a,b);
scanf("%d",&c);
if(a*b==c)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
void di()
{
int a=5,b=3,c;
while(a/b>100||a/b<0||a%b!=0)
{
a=rand()%100;
b=rand()%100;
}
printf("请回答:\n\t\t %d / %d = ",a,b);
scanf("%d",&c);
if(a/b==c)
{
printf("回答正确!\n");
right++;
}
else
{
printf("回答错误!\n");
wrong++;
}
}
5、项目github地址:https://github.com/zhihao-he/my-travel-plans
实验小结:结对编程是编写程序中一中比较好的编程方式和习惯,这一次实验让我体会到了团队的重要性,能避免很多不必要的错误,但由于只能在网上交流,还是有一定的困难,主要是时间和设备方面的困难,不能更好的交流。虽然本次实验比较复杂,但也让我们充分体会到了编程的乐趣和提前规划好未来工作中所要担任角色。