一、实验目标
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
博客内容应该包括:
1、代码规范
- 程序结构清析,简单易懂,单个函数的程序行数不得超过100行。
- 打算干什么,要简单,直接了当,代码精简,避免垃圾程序。
- 尽量使用标准库函数和公共函数。
- 不要随意定义全局变量,尽量使用局部变量。
- 使用括号以避免二义性。
- 可读性第一,效率第二。
- 保持注释与代码完全一致。
- 每个源程序文件,都有文件头说明,说明规格见规范。
- 每个函数,都有函数头说明,说明规格见规范。
- 主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义
2、程序的总体设计(附图说明模块之间的关系)
函数功能流程图如下:
实验代码初稿:
#include
#include
#include
int main()
{
int a,b,d,t; //定义两个操作数a,b,结果d,输入结果t
char c; //运算符c可取“+、-、×、÷”
int i,sum=0; //题目数量i,答对数目sum
srand(time(0)); //初始化随机数发生器
/**< 产生数据 */
for(i=0;i<10;i++)
{
a=rand()%100+1;
b=rand()%100+1;
c=rand()%4; //0表加,1表减,2表乘,3表除
/**< 数据合格判断及算式显示 */
printf("第%d题:",i+1);
switch(c)
{
case 0:
while((d=a+b)>100) //保证和在100内
{
a=rand()%100+1;
b=rand()%100+1;
}
printf("%d + %d = ",a,b);
break;
case 1:
while(a>100||b>100) //被减数小于100
{
a=rand()%100+1;
b=rand()%100+1;
}
if(a {
d=a;
a=b;
b=d;
}
d=a-b;
printf("%d - %d = ",a,b);
break;
case 2:
while((d=a*b)>100) //保证积小于100
{
a=rand()%100+1;
b=rand()%100+1;
}
printf("%d × %d = ",a,b);
break;
case 3:
while(a>100||b>100||(a*b==0)) //保证被除数小于100且除数不为0
{
a=rand()%100+1;
b=rand()%100+1;
}
if(a {
d=a;
a=b;
b=d;
}
a=(a/b)*b; //保证整除
d=a/b;
printf("%d ÷ %d = ",a,b);
break;
}
/**< 输入你的计算结果 */
scanf("%d",&t);
if(d==t)
{
sum++;
printf("正确\n");
}
else
printf("错误\n");
}
/**< 输出答对题数和得分 */
printf("答对 %d 题,得分:%d\n",sum,sum*10);
return 0;
}
3、程序结对编程过程(附图)及功能实现情况(附代码和图)
课题主体思想讨论如下:
运行结果:
如图代码实现了随机生成四则运算,判断结果正确与错误,并统计结果输出结果得分。
4、项目github地址(附图)
源代码仓库地址:https://github.com/yangchen-6/test/blob/master/2.c
5、实验总结
- 第一次进行结对编程实验还是遇到了不少问题,由于疫情的原因和队友之间只能利用QQ进行交流。
- 此次实验初步使我了解了github,两个人之间相互交流也使得实验进行的比较顺利。
- 对于不同习惯的伙伴,要互相理解。不以自我中心。
- 不要为了坚持己见而坚持己见,要学会换位思考,最好先按照别人的思路走一遍别人的方法。
- 要求伙伴和自己一起攻克难题之前,先确定一下伙伴是否正在进行一个不能打断的思路。
- 通过这次的结对编程实验为今后会遇到的结对协作打下了基础,在今后的协作中能尽量减少问题。
上一阶段博客地址: 杨琛 (https://www.cnblogs.com/yc123/)
张建生(https://www.cnblogs.com/zjs123/)