结对编程
结对编程
小组成员:
黄宇星(软工一班 1759106 )
刘亚玲(软工一班 1759112)
程序耗时估计与统计表
任务 |
预估耗时(单位:min) |
实际耗时(单位:min) |
计划 |
10 |
7 |
需求分析 |
15 |
10 |
具体设计及复审 |
10 |
15 |
代码规范 |
3 |
2 |
具体编码 |
30 |
40 |
代码审核及测试 |
10 |
5 |
代码修改 |
15 |
9 |
报告 |
30 |
45 |
程序:
程序要求:1、两个运算符;
2、100以内的数字;
3、不需要写出答案。
代码:
【语言:java】
package 两个运算符;
import java.util.*;
public class Operation {
public static void main(String[] args){
Random rand = new Random(); //生成随机数
for(int i = 0; i < 300; i++){ //300道题
int num1 = (int)(rand.nextDouble() * 100);
int num2 = (int)(rand.nextDouble() * 100); //定义两个运算数
char ch = 0;
switch(rand.nextInt(2)){ //两个运算符“+”,“-”
case 0: ch = '+';
System.out.println(num1 + "" + ch + num2 + "=" ) ;
break;
case 1: ch = '-';
if(num1>num2) //防止答案是负数
System.out.println(num1 + "" + ch + num2 + "=");
break;
}
}
}
}
运行截图:
以两次运行结果为例,见下图,(由于篇幅的限制示意图中并未截取全部题目)
图一: 图二:
程序改进:
新增程序要求:1、写出答案;
2、答案在1~100;
3、扩展为四则运算。
修改后代码:
package 四则运算;
import java.util.*;
public class Operation {
public static void main(String[] args){
Random rand = new Random(); //随机数生成;
for(int i = 0; i < 300; i++){ //随机生成300道题目;
int num1 = (int)(rand.nextDouble() * 100);
int num2 = (int)(rand.nextDouble() * 100); //定义两个运算数;
double num3 = 0;
char ch = 0;
switch(rand.nextInt(4)){
case 0: ch = '+';
num3 = 1.0 * num1 + num2;
if(num3<=100) { //限制答案在1~100以内
System.out.println(num1 + "" + ch + num2 + "="+ (int)num3 ) ;break;
}
if(num3>100)break;
case 1: ch = '-';
num3 = 1.0 * num1 - num2;
if((num1>num2)&&(num3<=100)) //防止答案是负数
System.out.println(num1 + "" + ch + num2 + "="+ (int)num3);
break;
case 2: ch = '×';
num3 = 1.0 * num1 * num2;
if(num3<=100) { //限制答案在1~100以内
System.out.println(num1 + "" + ch + num2 + "="+ (int)num3 ) ;break;
}
if(num3>100)break;
case 3: ch = '÷';
num3 = 1.0 * num1 / num2;
while(num2 == 0){num2 = (int)(rand.nextDouble() * 100);}
if((num3<=100)){ //限制答案在1~100以内
if(((num3 - (int)num3) == 0)){
System.out.println(num1 + "" + ch + num2 + "=" + (int)num3);
}
else {
System.out.println(num1 + "" + ch + num2 + "=" + num3);
}
break;
}
if(num3>100)break;
}
//四个运算符;
num3 *= 100;
num3 = Math.round(num3);
num3 /= 100;
}
}
}
运行截图:
同样以两次运行结果为例,见下图,(由于篇幅的限制示意图中并未截取全部题目)
图一: 图二:
心得感悟:
通过这一次的结对编程作业,我们两人对于合作和编程有了一些新的感悟。
合作:
关于合作,我们一致认为在一次良好合作中,沟通、理解、团队意识甚至比能力更加重要。在这次的结对任务中,我们在编程之前首先进行了沟通,确定了我们所要使用的语言(java)、程序的功能,在第一次编程结束后,我们有根据编程过程中出现的问题及时展开商讨,对程序进行了优化。
合作编程对于我们两个人来说是一次非常好的学习机会,我们在对方身上都学习到了不少,在合作中我俩都充分发挥了各自的长处。除此之外,我们也学会了倾听他人的合理建议、学会了质疑、更加会清楚的表达出自己。当遇到他人的质疑时,能控制好自己的情绪同时把自己的观点传达给对方也是一门学问。而经过这次的合作,我俩一致认为对方是一个很好的合作伙伴。
编程:
通过结对编程这种新颖的方式,我们对编程也有了新的看法。事先对程序需求的合理分析会减少一些麻烦,虽然结对编程不如想象中的节省时间,但是确实比一个人编程的成果更为出色。另外,在任务分配上也马虎不得,合理的分配任务是维持团队和谐的基础,也是任务能否按时完成的关键,分配任务时要求小组两个同学都必须参与代码编写(核心工作)。如果有更多的机会进行合作,结对编程一定会比一个人编程的效率更高。