实验二 结对编程-- 第二阶段

一、实验目标
  1)体验敏捷开发中的两人合作。
  2)进一步提高个人编程技巧与实践。
二 、实验内容
  1)根据以下问题描述,练习结对编程(pair programming)实践;
  2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
  3)要求在结对编程工作期间,两人的角色至少切换 4 次;
  4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、实验过程
1)代码规范
①不同的功能模块放在不同的函数中,由主函数统一调用;
②注意统一子函数的出口和入口;
③变量命名要注意见名知义;
④代码风格尽量简洁。

2)程序总体设计
①文字描述
这个生命游戏的程序需要分成棋盘、生死变化、棋盘计时和形状显示四个功能模块。这四个功能模块分别对应四个函数来实现,其中棋盘用二维数组来实现、生死变化用另一个二维数组来记录、棋盘计时用sleep()函数实现、形状的显示通过在方格中的颜色变化来代表生死。在主函数中调用四个模块,以达到完成程序任务的目标。
②功能框图

 ③总体程序流程图

 3)结对编程过程
①结对编程概况

 ②各个模块代码及流程图
A.棋盘模块
Ⅰ代码

void CreateArray(int a[cols][rols]){ 
int i,j;
srand(time(0));
for(i=0;i<cols;i++)
for(j=0;j<rols;j++)
a[i][j]=rand()%2;
}

Ⅱ流程图

 B.生死变化模块
Ⅰ代码

void ChangeArray(int a[cols][rols]){
int b[cols][rols]={0};
int i,j,k,l,sum;
for(i=1;i<cols-1;i++){
for(j=1;j<rols-1;j++){
sum=0;
for(k=i-1;k<=i+1;k++)
for(l=j-1;l<j+1;l++)
sum+=a[k][l];
if(sum==3)
b[i][j]=1;
else if(sum==2)
b[i][j]=a[i][j];
}
}
for(i=0;i<cols;i++)
for(j=0;j<rols;j++)
a[i][j]=b[i][j];

}

Ⅱ流程图

 C.计时模块

void TimeArray(int a){
Sleep(a);
}

D.形状显示模块
Ⅰ代码

void Shape(int a[cols][rols]){
int i,j;
setbkcolor(WHITE);
cleardevice();
setcolor(BLACK);
setfillcolor(BLACK);
    for(i=0;i<cols;i++)
line(0,i*size,cols*size,i*size);
for(i=0;i<rols;i++)
line(i*size,0,i*size,rols*size);
for(i=0;i<cols;i++)
for(j=0;j<rols;j++){
if(a[i][j]==1)
solidrectangle(i*size,j*size,i*size+size,j*size+size);
}
TimeArray(1000);
}

Ⅱ流程图

 ③程序运行截图

4)项目github地址
https://github.com/yang828/Life-games

 三、实验总结
答:结对编程是需要两个人合作的敏捷编程方式。通过结对编程,可以解决一个人编程时注意力不集中、思维局限等问题。但是,结对编程也有弊端,需要编程的两个人互相磨合、互相交流。这样,才能极大地发挥结对编程的优势。在进行结对编程时,需要和对方明确分工,分配好各自需要完成的任务。每一次,进行合作时需要确定本次合作需要完成的工作,以确保能按时按量的完成任务。

猜你喜欢

转载自www.cnblogs.com/Genghisguodong/p/12639402.html