掌握了一个新技能——结对编程
1.小组成员:
2152307 21523052.结对编程的概念:
结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。
3.功能简介:
1.实现随机数的加减乘除。
2.将题目的数量定义为300道题。
3.答题的结果,将会显示答案正确或错误。
4.统计错误以及正确的答案。
4.程序
代码:
#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int main(){
int t=0,f=0;//正确、错误的数量
int a,b,ans,c;
int right;
int s1,s2,s3,s4;
srand((unsigned int)time(NULL));//srand()用来设置rand()产生随机数时的随机数种子。
for(int i=0;i<300;i++){
c=rand()%4;//随机四则运算
switch(c){
case 0:a=rand()%100;
b=rand()%100;
if(a+b<100&&a+b>0){
cout<<a<<"+"<<b<<"="; cin>>ans;
if(ans==a+b){
cout<<"答案正确"<<endl;
t++;
}
else{
cout<<"答案错误"<<endl;
f++;
}
}
else{
i--;
break;
}
break;
case 1:a=rand()%100;
b=rand()%100;
if(a-b<100&&a-b>0){
cout<<a<<"-"<<b<<"="; cin>>ans;
if(ans==a-b){
cout<<"答案正确"<<endl;
t++;
}
else{
cout<<"答案错误"<<endl;
f++;
}
}
else{
i--;
break;
}
break;
case 2:a=rand()%100;
b=rand()%100;
if(a*b<100&&a*b>0){
cout<<a<<"*"<<b<<"="; cin>>ans;
if(ans==a*b){
cout<<"答案正确"<<endl;
t++;
}
else{
cout<<"答案错误"<<endl;
f++;
}
}
else{
i--;
break;
}
break;
case 3:a=rand()%100;
b=rand()%100;
if(a/b<100&&a/b>0){
cout<<a<<"/"<<b<<"="; cin>>ans;
if(ans==a/b){
if(a%b<0.5*b){
cout<<"答案正确"<<endl;
t++;
}
else{
cout<<"答案错误"<<endl;
f++;
}
}
else{
cout<<"答案错误"<<endl;
f++;
}
}
else{
i--;
break;
}
break;
}
}
cout<<"正确个数为:" <<t<<endl;
cout<<"错误个数为:"<<f<<endl;
return 0;
}
代码实现过程:
1.明确要题目需求,构思一个整体架构以及需要实现的功能。
2.使用rand()函数获取随机数。
3.srand函数用来播种随机种子。
4.显示四则运算的运算结果。
5.t 记录正确的个数,f 记录错误的个数。
遇到的问题:
1.rand()函数每次的产生的随机数相同。
解决方式:srand()用来设置rand()产生随机数时的随机数种子,利用time(0)的返回值或NULL来当做seed。
2.计算机中整数的除法,结果只保留整数部分,不符合一般的逻辑,在数学中往往使用四舍五入较多。
解决方式:加一个 a%b<0.5*b条件,符合次条件代表小于除数的一般为“舍”,不符合此条件说明为“入”。
参考资料:
原文链接:https://blog.csdn.net/qq_59996036/article/details/121664378
一、首先rand函数可以用来产生一个数,它具备这种功能。
rand相关的头文件为#include<stdlib.h>。
rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的。rand()返回一随机数值的范围在0至RAND_MAX 间。用户未设定随机数种 子时,系统默认的随机数种子为1。rand()产生的是伪随机数字,每次执行时是相同的,若要不同,用函数srand()初始化它。
二、srand函数用来播种随机种子,能够产生一个随机数。
srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用time(0)的返回值或NULL来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次 就 会一样。"相同的种子对应相同的数值"。
三、time函数是用来计算时间的秒数的。
此函数会返回从公元 1970 年1 月1 日的UTC 时间从0 时0 分0 秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t 指针所指的内存。
5.运算结果
1、体现随机
2、统计错误个数和正确的个数
6.博客体会
结对编程的好处:
1、再代码编写的过程中,拥有互相鼓励,更加不容易沮丧:二人组的工作能增加成员的工作积极性。在面对问题的时候,正是因为有人一起分担,显得不那么孤单,更好尝试新的策略。
2、我们能互相监督,减少疲惫,一个人不想敲的时候,换另外一个人敲,不光能减少疲惫还可以互相交流,进行思维交流。
3、互相学习对方的编程习惯,在编程中,相互讨论,可以更快更有效地解决问题,互相请教对方,可以得到能力上的互补。
4、会减少 bug的数量,由于两人互相监督工作,出现错误,另一方可以指出,增强代码和产品质量,并有效的减少 bug。
结对编程的坏处:
1.两个人在编程习惯上有些许不同,所以常常会发生摩擦,适当的摩擦可以提升代码的质量,拓宽对方的知识面,但是过度摩擦导致进度止步不前,降低效率。
2.两个人可能会对一个问题各执己见,甚至可能会产生矛盾。
3.可能会在工作时交谈一些与工作无关的事,分散注意力,造成效率低下。
感悟:
在这一次的结对编程合作中,有很多的感悟与收获的。
我们两个人来了一次思想上的碰撞,我们彼此都尊重对方的想法,并且会采纳对方的意见及建议。当然,我们学到了很多,对待事情的态度很认真,并且在代码有很多错误的情况下,依然很淡定去查找资料。因此我们学习到了很多。
就我们本次实验结对编程而言,有了对方的存在,我们在完成代码后,产生的bug相对较少,甚至很多阶段性的代码都是一次通过,这大大提高了我们编程的效率,而且我们二人一起讨论出来的编程思路,也使得我们的代码功能更全面,效率更高。
我们认为,结对编程的优势主要就在于设计思路的共享,避免错误。总的来说,自己在编程时犯下一个小错误,有些尽管很简单,但自己却难以发现,而这些在另一个人眼中,却会十分明显。当然结对编程也有不适用的地方,比如其他课程的编程作业,需要我们每个人独立完成,就不能依赖同伴的帮助。
因为结对编程可以很大程度上提高编程效率,而且两人轮流编程,不会太过疲惫,因此十分适合敏捷开发。对于我们从事软件开发的工作,我们会十分乐于进行结对编程,因为这会极大的改善我们的编程体验,既能减少枯燥又能减少错误从而大大提高编程效率,可以说是一个相对快捷的一个编程方式。对于竞争原来越大的社会来说,团队协作,扬长避短,专业互补变得尤为重要。因此我们应该从学校中开始就要养成团队合作的习惯。